0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2024-12-16 20:26:19 -05:00

feat(core,schemas): init auth flow for IdP initiated SAML SSO (#6668)

* feat(core,schemas): init auth flow for IdP initiated SAML SSO

init auth flow for IdP initiated SAML SSO

* fix(test): fix phrases key

fix phrases key
This commit is contained in:
simeng-li 2024-10-14 15:39:05 +08:00 committed by GitHub
parent 8e632678bc
commit 436a1840a8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 410 additions and 179 deletions

View file

@ -40,6 +40,7 @@
"@logto/demo-app": "workspace:*",
"@logto/experience": "workspace:*",
"@logto/experience-legacy": "workspace:*",
"@logto/js": "^4.1.4",
"@logto/language-kit": "workspace:^1.1.0",
"@logto/phrases": "workspace:^1.14.0",
"@logto/phrases-experience": "workspace:^1.8.0",

View file

@ -15,11 +15,13 @@ import {
import { WellKnownCache } from '#src/caches/well-known.js';
import RequestError from '#src/errors/RequestError/index.js';
import { ssoConnectorFactories } from '#src/sso/index.js';
import { mockLogtoConfigsLibrary } from '#src/test-utils/mock-libraries.js';
import {
mockLogtoConfigsLibrary,
mockSsoConnectorLibrary,
} from '#src/test-utils/mock-libraries.js';
import { createCloudConnectionLibrary } from '../cloud-connection.js';
import { createConnectorLibrary } from '../connector.js';
import { type SsoConnectorLibrary } from '../sso-connector.js';
const { jest } = import.meta;
@ -41,15 +43,6 @@ const signInExperiences = {
};
const { findDefaultSignInExperience, updateDefaultSignInExperience } = signInExperiences;
const ssoConnectorLibrary: jest.Mocked<SsoConnectorLibrary> = {
getSsoConnectors: jest.fn(),
getSsoConnectorById: jest.fn(),
getAvailableSsoConnectors: jest.fn(),
createSsoConnectorIdpInitiatedAuthConfig: jest.fn(),
updateSsoConnectorIdpInitiatedAuthConfig: jest.fn(),
createIdpInitiatedSamlSsoSession: jest.fn(),
};
const { MockQueries } = await import('#src/test-utils/tenant.js');
const queries = new MockQueries({
@ -75,7 +68,7 @@ const { validateLanguageInfo, removeUnavailableSocialConnectorTargets, getFullSi
createSignInExperienceLibrary(
queries,
connectorLibrary,
ssoConnectorLibrary,
mockSsoConnectorLibrary,
cloudConnection,
new WellKnownCache('foo', new TtlCache())
);
@ -157,7 +150,7 @@ describe('getFullSignInExperience()', () => {
it('should return full sign-in experience', async () => {
findDefaultSignInExperience.mockResolvedValueOnce(mockSignInExperience);
getLogtoConnectors.mockResolvedValueOnce(mockSocialConnectors);
ssoConnectorLibrary.getAvailableSsoConnectors.mockResolvedValueOnce([
mockSsoConnectorLibrary.getAvailableSsoConnectors.mockResolvedValueOnce([
wellConfiguredSsoConnector,
]);
@ -191,7 +184,7 @@ describe('getFullSignInExperience()', () => {
socialSignInConnectorTargets: ['github', 'facebook', 'google'],
});
getLogtoConnectors.mockResolvedValueOnce([mockGoogleConnector, mockGithubConnector]);
ssoConnectorLibrary.getAvailableSsoConnectors.mockResolvedValueOnce([
mockSsoConnectorLibrary.getAvailableSsoConnectors.mockResolvedValueOnce([
wellConfiguredSsoConnector,
]);
@ -238,7 +231,7 @@ describe('get sso connectors', () => {
const { ssoConnectors } = await getFullSignInExperience({ locale: 'en' });
expect(ssoConnectorLibrary.getAvailableSsoConnectors).not.toBeCalled();
expect(mockSsoConnectorLibrary.getAvailableSsoConnectors).not.toBeCalled();
expect(ssoConnectors).toEqual([]);
});
@ -247,7 +240,7 @@ describe('get sso connectors', () => {
getLogtoConnectors.mockResolvedValueOnce(mockSocialConnectors);
findDefaultSignInExperience.mockResolvedValueOnce(mockSignInExperience);
ssoConnectorLibrary.getAvailableSsoConnectors.mockResolvedValueOnce([
mockSsoConnectorLibrary.getAvailableSsoConnectors.mockResolvedValueOnce([
wellConfiguredSsoConnector,
]);
@ -271,7 +264,7 @@ describe('get sso connectors', () => {
const displayName = 'Logto Connector';
ssoConnectorLibrary.getAvailableSsoConnectors.mockResolvedValueOnce([
mockSsoConnectorLibrary.getAvailableSsoConnectors.mockResolvedValueOnce([
{
...wellConfiguredSsoConnector,
branding: {

View file

@ -1,3 +1,6 @@
import { Prompt, QueryKey, withReservedScopes } from '@logto/js';
import { ApplicationType, type SsoConnectorIdpInitiatedAuthConfig } from '@logto/schemas';
import { mockSsoConnector, wellConfiguredSsoConnector } from '#src/__mocks__/sso.js';
import RequestError from '#src/errors/RequestError/index.js';
import { MockQueries } from '#src/test-utils/tenant.js';
@ -7,15 +10,27 @@ import { createSsoConnectorLibrary } from './sso-connector.js';
const { jest } = import.meta;
const findAllSsoConnectors = jest.fn();
const geConnectorById = jest.fn();
const getConnectorById = jest.fn();
const findApplicationById = jest.fn();
const insertIdpInitiatedAuthConfig = jest.fn();
const updateIdpInitiatedAuthConfig = jest.fn();
const queries = new MockQueries({
ssoConnectors: { findAll: findAllSsoConnectors, findById: geConnectorById },
ssoConnectors: {
findAll: findAllSsoConnectors,
findById: getConnectorById,
insertIdpInitiatedAuthConfig,
},
applications: { findApplicationById },
});
describe('SsoConnectorLibrary', () => {
const ssoConnectorLibrary = createSsoConnectorLibrary(queries);
afterEach(() => {
jest.clearAllMocks();
});
it('getSsoConnectors() should filter unsupported sso connectors', async () => {
const { getSsoConnectors } = ssoConnectorLibrary;
@ -76,7 +91,7 @@ describe('SsoConnectorLibrary', () => {
it('getSsoConnectorById() should throw 404 if the connector is not supported', async () => {
const { getSsoConnectorById } = ssoConnectorLibrary;
geConnectorById.mockResolvedValueOnce({
getConnectorById.mockResolvedValueOnce({
...mockSsoConnector,
providerName: 'unsupported',
});
@ -92,10 +107,161 @@ describe('SsoConnectorLibrary', () => {
it('getSsoConnectorById() should return the connector if it is supported', async () => {
const { getSsoConnectorById } = ssoConnectorLibrary;
geConnectorById.mockResolvedValueOnce(mockSsoConnector);
getConnectorById.mockResolvedValueOnce(mockSsoConnector);
const connector = await getSsoConnectorById('id');
expect(connector).toEqual(mockSsoConnector);
});
it.each([
ApplicationType.MachineToMachine,
ApplicationType.Native,
ApplicationType.Protected,
ApplicationType.SPA,
])(
'createSsoConnectorIdpInitiatedAuthConfig() should throw 400 if the application type is $s',
async (type) => {
findApplicationById.mockResolvedValueOnce({ type, isThirdParty: false });
await expect(
ssoConnectorLibrary.createSsoConnectorIdpInitiatedAuthConfig({
connectorId: 'connectorId',
defaultApplicationId: 'appId',
})
).rejects.toMatchError(
new RequestError('connector.saml_idp_initiated_auth_invalid_application_type')
);
expect(insertIdpInitiatedAuthConfig).not.toHaveBeenCalled();
}
);
it('createSsoConnectorIdpInitiatedAuthConfig() should throw 400 if the application is third-party app', async () => {
findApplicationById.mockResolvedValueOnce({
type: ApplicationType.Traditional,
isThirdParty: true,
});
await expect(
ssoConnectorLibrary.createSsoConnectorIdpInitiatedAuthConfig({
connectorId: 'connectorId',
defaultApplicationId: 'appId',
})
).rejects.toMatchError(
new RequestError('connector.saml_idp_initiated_auth_invalid_application_type')
);
expect(insertIdpInitiatedAuthConfig).not.toHaveBeenCalled();
});
it('should guard the application type if the defaultApplicationId is provided', async () => {
findApplicationById.mockResolvedValueOnce({
type: ApplicationType.MachineToMachine,
isThirdParty: false,
});
await expect(
ssoConnectorLibrary.updateSsoConnectorIdpInitiatedAuthConfig('connectorId', {
defaultApplicationId: 'appId',
})
).rejects.toMatchError(
new RequestError('connector.saml_idp_initiated_auth_invalid_application_type')
);
expect(updateIdpInitiatedAuthConfig).not.toHaveBeenCalled();
});
describe('getIdpInitiatedSamlSsoSignInUrl()', () => {
const { getIdpInitiatedSamlSsoSignInUrl } = ssoConnectorLibrary;
const issuer = 'https://example.com/oidc';
const authConfig: SsoConnectorIdpInitiatedAuthConfig = {
tenantId: 'tenantId',
defaultApplicationId: 'appId',
connectorId: 'connectorId',
redirectUri: 'https://app.com',
authParameters: {},
createdAt: Date.now(),
};
const defaultQueryParameters = {
[QueryKey.ClientId]: authConfig.defaultApplicationId,
[QueryKey.ResponseType]: 'code',
[QueryKey.Prompt]: Prompt.Login,
[QueryKey.DirectSignIn]: `sso:${authConfig.connectorId}`,
};
it('the returned sign-in url should be a auth endpoint', async () => {
const url = await getIdpInitiatedSamlSsoSignInUrl(issuer, authConfig);
expect(url.toString().indexOf(issuer)).toBe(0);
});
it('the returned sign-in url should contain the default query parameters', async () => {
const url = await getIdpInitiatedSamlSsoSignInUrl(issuer, authConfig);
const parameters = new URLSearchParams(url.search);
for (const [key, value] of Object.entries(defaultQueryParameters)) {
expect(parameters.get(key)).toBe(value);
}
expect(parameters.get(QueryKey.Scope)).toBe(withReservedScopes());
});
it('should use the provided redirectUri', async () => {
const url = await getIdpInitiatedSamlSsoSignInUrl(issuer, authConfig);
expect(findApplicationById).not.toHaveBeenCalled();
const parameters = new URLSearchParams(url.search);
expect(parameters.get(QueryKey.RedirectUri)).toBe(authConfig.redirectUri);
});
it('should use the first registered redirectUri of the default application if not provided', async () => {
findApplicationById.mockResolvedValueOnce({
oidcClientMetadata: {
redirectUris: ['https://fallback.com'],
},
});
const url = await getIdpInitiatedSamlSsoSignInUrl(issuer, {
...authConfig,
redirectUri: null,
});
expect(findApplicationById).toHaveBeenCalledWith(authConfig.defaultApplicationId);
const parameters = new URLSearchParams(url.search);
expect(parameters.get(QueryKey.RedirectUri)).toBe('https://fallback.com');
});
it('should append extra scopes to the query parameters', async () => {
const scopes = ['scope1', 'scope2'];
const url = await getIdpInitiatedSamlSsoSignInUrl(issuer, {
...authConfig,
authParameters: {
scope: scopes.join(' '),
},
});
const parameters = new URLSearchParams(url.search);
expect(parameters.get(QueryKey.Scope)).toBe(withReservedScopes(scopes));
});
it('should be able to append extra query parameters', async () => {
const extraParams = {
[QueryKey.State]: 'custom_state',
[QueryKey.Resource]: 'http://example.com/api',
[QueryKey.ResponseType]: 'token',
};
const url = await getIdpInitiatedSamlSsoSignInUrl(issuer, {
...authConfig,
authParameters: extraParams,
});
const parameters = new URLSearchParams(url.search);
expect(parameters.get(QueryKey.State)).toBe(extraParams[QueryKey.State]);
expect(parameters.get(QueryKey.Resource)).toBe(extraParams[QueryKey.Resource]);
expect(parameters.get(QueryKey.ResponseType)).toBe(extraParams[QueryKey.ResponseType]);
});
});
});

View file

@ -1,11 +1,13 @@
import { type DirectSignInOptions, Prompt, QueryKey, withReservedScopes } from '@logto/js';
import {
ApplicationType,
type SsoSamlAssertionContent,
type CreateSsoConnectorIdpInitiatedAuthConfig,
type SupportedSsoConnector,
type SsoConnectorIdpInitiatedAuthConfig,
} from '@logto/schemas';
import { generateStandardId } from '@logto/shared';
import { assert } from '@silverhand/essentials';
import { assert, trySafe } from '@silverhand/essentials';
import { defaultIdPInitiatedSamlSsoSessionTtl } from '#src/constants/index.js';
import RequestError from '#src/errors/RequestError/index.js';
@ -134,6 +136,58 @@ export const createSsoConnectorLibrary = (queries: Queries) => {
});
};
/**
* Build the IdP initiated SAML SSO authentication sign-in URL.
*
* @remarks
* For IdP-initiated SAML SSO flow use only. Generate the sign-in URL for the user to sign in.
*
* @param issuer The oidc issuer endpoint of the current tenant.
* @param authConfig The IdP-initiated SAML SSO authentication configuration.
*
* @throw {RequestError} Throws a 400 error if the redirect URI is not provided and the default application does not have a registered redirect URI.
*/
const getIdpInitiatedSamlSsoSignInUrl = async (
issuer: string,
authConfig: SsoConnectorIdpInitiatedAuthConfig
) => {
const {
connectorId,
defaultApplicationId,
authParameters: { scope, ...extraParams },
} = authConfig;
// Get the first registered redirect URI of the default application if not provided
const redirectUri =
authConfig.redirectUri ??
(await trySafe(async () => {
const { oidcClientMetadata } = await applications.findApplicationById(defaultApplicationId);
return oidcClientMetadata.redirectUris[0];
}));
if (!redirectUri) {
throw new RequestError('oidc.invalid_redirect_uri');
}
const directSignInOptions: DirectSignInOptions = {
method: 'sso',
target: connectorId,
};
const queryParameters = new URLSearchParams({
[QueryKey.ClientId]: defaultApplicationId,
[QueryKey.RedirectUri]: redirectUri,
[QueryKey.ResponseType]: 'code',
[QueryKey.Prompt]: Prompt.Login,
[QueryKey.DirectSignIn]: `${directSignInOptions.method}:${directSignInOptions.target}`,
...extraParams,
});
queryParameters.append(QueryKey.Scope, withReservedScopes(scope?.split(' ') ?? []));
return new URL(`${issuer}/auth?${queryParameters.toString()}`);
};
return {
getSsoConnectors,
getAvailableSsoConnectors,
@ -141,5 +195,6 @@ export const createSsoConnectorLibrary = (queries: Queries) => {
createSsoConnectorIdpInitiatedAuthConfig,
updateSsoConnectorIdpInitiatedAuthConfig,
createIdpInitiatedSamlSsoSession,
getIdpInitiatedSamlSsoSignInUrl,
};
};

View file

@ -236,8 +236,14 @@ export default function authnRoutes<T extends AnonymousRouter>(
});
// TODO: redirect to SSO direct sign-in flow
const signInUrl = await ssoConnectorsLibrary.getIdpInitiatedSamlSsoSignInUrl(
envSet.oidc.issuer,
idpInitiatedAuthConfig
);
return next();
ctx.redirect(signInUrl.toString());
return;
}
// TODO: remove this assertion after the IdP initiated SSO flow is implemented

View file

@ -2,6 +2,7 @@ import { mockSignInExperience } from '#src/__mocks__/sign-in-experience.js';
import { wellConfiguredSsoConnector } from '#src/__mocks__/sso.js';
import RequestError from '#src/errors/RequestError/index.js';
import { type SsoConnectorLibrary } from '#src/libraries/sso-connector.js';
import { mockSsoConnectorLibrary } from '#src/test-utils/mock-libraries.js';
import { verifySsoOnlyEmailIdentifier } from './single-sign-on-guard.js';
@ -9,13 +10,9 @@ const { jest } = import.meta;
const getAvailableSsoConnectorsMock = jest.fn();
const mockSsoConnectorLibrary: jest.Mocked<SsoConnectorLibrary> = {
const ssoConnectorLibrary: jest.Mocked<SsoConnectorLibrary> = {
...mockSsoConnectorLibrary,
getAvailableSsoConnectors: getAvailableSsoConnectorsMock,
getSsoConnectors: jest.fn(),
getSsoConnectorById: jest.fn(),
createSsoConnectorIdpInitiatedAuthConfig: jest.fn(),
updateSsoConnectorIdpInitiatedAuthConfig: jest.fn(),
createIdpInitiatedSamlSsoSession: jest.fn(),
};
describe('verifyEmailIdentifier tests', () => {
@ -26,7 +23,7 @@ describe('verifyEmailIdentifier tests', () => {
it('should return if the identifier is not an email', async () => {
await expect(
verifySsoOnlyEmailIdentifier(
mockSsoConnectorLibrary,
ssoConnectorLibrary,
{
username: 'foo',
password: 'bar',
@ -39,7 +36,7 @@ describe('verifyEmailIdentifier tests', () => {
it('should return if the ssoConnector is not enabled', async () => {
await expect(
verifySsoOnlyEmailIdentifier(
mockSsoConnectorLibrary,
ssoConnectorLibrary,
{
email: 'foo@bar.com',
password: 'bar',
@ -64,7 +61,7 @@ describe('verifyEmailIdentifier tests', () => {
await expect(
verifySsoOnlyEmailIdentifier(
mockSsoConnectorLibrary,
ssoConnectorLibrary,
{
email: 'foo@bar.com',
password: 'bar',
@ -84,7 +81,7 @@ describe('verifyEmailIdentifier tests', () => {
await expect(
verifySsoOnlyEmailIdentifier(
mockSsoConnectorLibrary,
ssoConnectorLibrary,
{
email: 'foo@example.com',
verificationCode: 'bar',

View file

@ -3,6 +3,8 @@ import Client from '@withtyped/client';
import { type LogtoConfigLibrary } from '#src/libraries/logto-config.js';
import { type SsoConnectorLibrary } from '../libraries/sso-connector.js';
const { jest } = import.meta;
export const mockLogtoConfigsLibrary: jest.Mocked<LogtoConfigLibrary> = {
@ -15,3 +17,13 @@ export const mockLogtoConfigsLibrary: jest.Mocked<LogtoConfigLibrary> = {
};
export const mockCloudClient = new Client<typeof router>({ baseUrl: 'http://localhost:3001' });
export const mockSsoConnectorLibrary: jest.Mocked<SsoConnectorLibrary> = {
getAvailableSsoConnectors: jest.fn(),
getSsoConnectors: jest.fn(),
getSsoConnectorById: jest.fn(),
createSsoConnectorIdpInitiatedAuthConfig: jest.fn(),
updateSsoConnectorIdpInitiatedAuthConfig: jest.fn(),
createIdpInitiatedSamlSsoSession: jest.fn(),
getIdpInitiatedSamlSsoSignInUrl: jest.fn(),
};

View file

@ -108,8 +108,7 @@ devFeatureTest.describe('SAML IdP initiated authentication config', () => {
const defaultApplicationId = applications.get('traditional')!.id;
const redirectUri = 'https://example.com';
const authParameters = {
resources: ['resource1', 'resource2'],
scopes: ['profile', 'email'],
scope: 'profile email',
};
const connectorId = ssoConnectors.get('saml')!.id;
@ -202,8 +201,8 @@ devFeatureTest.describe('SAML IdP initiated authentication config', () => {
{
redirectUri: 'https://updated.com',
authParameters: {
resources: ['resource1', 'resource2'],
scopes: ['profile', 'email'],
resource: 'test_api.com',
scopes: 'profile email',
},
}
);
@ -213,8 +212,8 @@ devFeatureTest.describe('SAML IdP initiated authentication config', () => {
defaultApplicationId,
redirectUri: 'https://updated.com',
authParameters: {
resources: ['resource1', 'resource2'],
scopes: ['profile', 'email'],
resource: 'test_api.com',
scopes: 'profile email',
},
});
});

View file

@ -14,10 +14,9 @@ export type SsoBranding = z.infer<typeof ssoBrandingGuard>;
export const idpInitiatedAuthParamsGuard = z
.object({
resources: z.array(z.string()).optional(),
scopes: z.array(z.string()).optional(),
scope: z.string().optional(),
})
.catchall(z.unknown());
.catchall(z.string());
export type IdpInitiatedAuthParams = z.infer<typeof idpInitiatedAuthParamsGuard>;

View file

@ -41,7 +41,7 @@ importers:
version: 8.8.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.0.2))(typescript@5.0.2)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.0.2))(typescript@5.0.2)
typescript:
specifier: ^5.0.0
version: 5.0.2
@ -263,7 +263,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -330,7 +330,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -388,7 +388,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -446,7 +446,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -510,7 +510,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -574,7 +574,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -635,7 +635,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -702,7 +702,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -760,7 +760,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -818,7 +818,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -876,7 +876,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -937,7 +937,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1007,7 +1007,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1068,7 +1068,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1123,7 +1123,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1181,7 +1181,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1239,7 +1239,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1297,7 +1297,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1358,7 +1358,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1416,7 +1416,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1474,7 +1474,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1532,7 +1532,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1590,7 +1590,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1648,7 +1648,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1706,7 +1706,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1764,7 +1764,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1822,7 +1822,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1889,7 +1889,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1959,7 +1959,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2017,7 +2017,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2072,7 +2072,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2136,7 +2136,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2194,7 +2194,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2252,7 +2252,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2316,7 +2316,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2374,7 +2374,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2432,7 +2432,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2490,7 +2490,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2548,7 +2548,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2606,7 +2606,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2952,6 +2952,9 @@ importers:
'@logto/experience-legacy':
specifier: workspace:*
version: link:../experience-legacy
'@logto/js':
specifier: ^4.1.4
version: 4.1.4
'@logto/language-kit':
specifier: workspace:^1.1.0
version: link:../toolkit/language-kit
@ -3192,7 +3195,7 @@ importers:
version: 8.57.0
jest:
specifier: ^29.7.0
version: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))
version: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))
jest-matcher-specific-error:
specifier: ^1.0.0
version: 1.0.0
@ -3222,7 +3225,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -3373,7 +3376,7 @@ importers:
version: 3.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
packages/experience:
devDependencies:
@ -3848,7 +3851,7 @@ importers:
version: 10.0.0
jest:
specifier: ^29.7.0
version: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))
version: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))
jest-matcher-specific-error:
specifier: ^1.0.0
version: 1.0.0
@ -3875,7 +3878,7 @@ importers:
version: 22.6.5(typescript@5.5.3)
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -7635,7 +7638,7 @@ packages:
engines: {node: '>= 0.6'}
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
confusing-browser-globals@1.0.11:
resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==}
@ -8234,7 +8237,7 @@ packages:
resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==}
ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=}
electron-to-chromium@1.5.0:
resolution: {integrity: sha512-Vb3xHHYnLseK8vlMJQKJYXJ++t4u1/qJ3vykuVrVjvdiOEhYyT1AuP4x03G8EnPmYvYOhe9T+dADTmthjRQMkA==}
@ -9255,7 +9258,7 @@ packages:
engines: {node: '>=16.17.0'}
humanize-number@0.0.2:
resolution: {integrity: sha512-un3ZAcNQGI7RzaWGZzQDH47HETM4Wrj6z6E4TId8Yeq9w5ZKUVB1nrT2jwFheTUjEmqcgTjXDc959jum+ai1kQ==}
resolution: {integrity: sha1-EcCvakcWQ2M1iFiASPF5lUFInBg=}
husky@9.0.7:
resolution: {integrity: sha512-vWdusw+y12DUEeoZqW1kplOFqk3tedGV8qlga8/SF6a3lOiWLqGZZQvfWvY0fQYdfiRi/u1DFNpudTSV9l1aCg==}
@ -10475,7 +10478,7 @@ packages:
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
media-typer@0.3.0:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=}
engines: {node: '>= 0.6'}
meow@10.1.5:
@ -12471,7 +12474,7 @@ packages:
resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
stubs@3.0.0:
resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==}
resolution: {integrity: sha1-6NK6H6nJBXAwPAMLaQD31fiavls=}
style-search@0.1.0:
resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==}
@ -13074,7 +13077,7 @@ packages:
optional: true
void-elements@3.1.0:
resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==}
resolution: {integrity: sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=}
engines: {node: '>=0.10.0'}
w3c-xmlserializer@3.0.0:
@ -14963,7 +14966,7 @@ snapshots:
jest-util: 29.7.0
slash: 3.0.0
'@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))':
'@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))':
dependencies:
'@jest/console': 29.7.0
'@jest/reporters': 29.7.0
@ -14977,7 +14980,7 @@ snapshots:
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
jest-config: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))
jest-config: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@ -14998,7 +15001,7 @@ snapshots:
- supports-color
- ts-node
'@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))':
'@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))':
dependencies:
'@jest/console': 29.7.0
'@jest/reporters': 29.7.0
@ -15012,7 +15015,7 @@ snapshots:
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
jest-config: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))
jest-config: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@ -17918,13 +17921,13 @@ snapshots:
dependencies:
lodash.get: 4.4.2
create-jest@29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3)):
create-jest@29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3)):
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
jest-config: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))
jest-config: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@ -20258,16 +20261,16 @@ snapshots:
- babel-plugin-macros
- supports-color
jest-cli@29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3)):
jest-cli@29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3)):
dependencies:
'@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))
'@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
create-jest: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))
create-jest: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))
exit: 0.1.2
import-local: 3.1.0
jest-config: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))
jest-config: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@ -20296,7 +20299,7 @@ snapshots:
- supports-color
- ts-node
jest-config@29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3)):
jest-config@29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3)):
dependencies:
'@babel/core': 7.24.4
'@jest/test-sequencer': 29.7.0
@ -20322,7 +20325,38 @@ snapshots:
strip-json-comments: 3.1.1
optionalDependencies:
'@types/node': 20.10.4
ts-node: 10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3)
ts-node: 10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
jest-config@29.7.0(@types/node@20.12.7)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3)):
dependencies:
'@babel/core': 7.24.4
'@jest/test-sequencer': 29.7.0
'@jest/types': 29.6.3
babel-jest: 29.7.0(@babel/core@7.24.4)
chalk: 4.1.2
ci-info: 3.8.0
deepmerge: 4.3.1
glob: 7.2.3
graceful-fs: 4.2.11
jest-circus: 29.7.0
jest-environment-node: 29.7.0
jest-get-type: 29.6.3
jest-regex-util: 29.6.3
jest-resolve: 29.7.0
jest-runner: 29.7.0
jest-util: 29.7.0
jest-validate: 29.7.0
micromatch: 4.0.5
parse-json: 5.2.0
pretty-format: 29.7.0
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
'@types/node': 20.12.7
ts-node: 10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@ -20358,37 +20392,6 @@ snapshots:
- babel-plugin-macros
- supports-color
jest-config@29.7.0(@types/node@20.12.7)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3)):
dependencies:
'@babel/core': 7.24.4
'@jest/test-sequencer': 29.7.0
'@jest/types': 29.6.3
babel-jest: 29.7.0(@babel/core@7.24.4)
chalk: 4.1.2
ci-info: 3.8.0
deepmerge: 4.3.1
glob: 7.2.3
graceful-fs: 4.2.11
jest-circus: 29.7.0
jest-environment-node: 29.7.0
jest-get-type: 29.6.3
jest-regex-util: 29.6.3
jest-resolve: 29.7.0
jest-runner: 29.7.0
jest-util: 29.7.0
jest-validate: 29.7.0
micromatch: 4.0.5
parse-json: 5.2.0
pretty-format: 29.7.0
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
'@types/node': 20.12.7
ts-node: 10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
jest-dev-server@10.0.0:
dependencies:
chalk: 4.1.2
@ -20697,12 +20700,12 @@ snapshots:
merge-stream: 2.0.0
supports-color: 8.1.1
jest@29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3)):
jest@29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3)):
dependencies:
'@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))
'@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))
'@jest/types': 29.6.3
import-local: 3.1.0
jest-cli: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))
jest-cli: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@ -22636,31 +22639,31 @@ snapshots:
possible-typed-array-names@1.0.0: {}
postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3)):
postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3)):
dependencies:
lilconfig: 3.1.2
yaml: 2.4.5
optionalDependencies:
postcss: 8.4.39
ts-node: 10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3)
ts-node: 10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3)
postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3)):
postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3)):
dependencies:
lilconfig: 3.1.2
yaml: 2.4.5
optionalDependencies:
postcss: 8.4.39
ts-node: 10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3)
ts-node: 10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3)
postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.0.2)):
postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.0.2)):
dependencies:
lilconfig: 3.1.2
yaml: 2.4.5
optionalDependencies:
postcss: 8.4.39
ts-node: 10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.0.2)
ts-node: 10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.0.2)
postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3)):
postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3)):
dependencies:
lilconfig: 3.1.2
yaml: 2.4.5
@ -24227,28 +24230,7 @@ snapshots:
ts-interface-checker@0.1.13: {}
ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
'@types/node': 20.12.7
acorn: 8.12.1
acorn-walk: 8.3.3
arg: 4.1.3
create-require: 1.1.1
diff: 4.0.2
make-error: 1.3.6
typescript: 5.5.3
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
optionalDependencies:
'@swc/core': 1.3.52(@swc/helpers@0.5.1)
optional: true
ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3):
ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
@ -24269,7 +24251,7 @@ snapshots:
'@swc/core': 1.3.52(@swc/helpers@0.5.1)
optional: true
ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3):
ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
@ -24290,7 +24272,7 @@ snapshots:
'@swc/core': 1.3.52(@swc/helpers@0.5.1)
optional: true
ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.0.2):
ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.0.2):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
@ -24311,6 +24293,27 @@ snapshots:
'@swc/core': 1.3.52(@swc/helpers@0.5.1)
optional: true
ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
'@types/node': 20.12.7
acorn: 8.12.1
acorn-walk: 8.3.3
arg: 4.1.3
create-require: 1.1.1
diff: 4.0.2
make-error: 1.3.6
typescript: 5.5.3
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
optionalDependencies:
'@swc/core': 1.3.52(@swc/helpers@0.5.1)
optional: true
tsconfig-paths@3.15.0:
dependencies:
'@types/json5': 0.0.29
@ -24331,7 +24334,7 @@ snapshots:
tsscmp@1.0.6: {}
tsup@8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))(typescript@5.5.3):
tsup@8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))(typescript@5.5.3):
dependencies:
bundle-require: 4.2.1(esbuild@0.21.5)
cac: 6.7.14
@ -24341,7 +24344,7 @@ snapshots:
execa: 5.1.1
globby: 11.1.0
joycon: 3.1.1
postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))
postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))
resolve-from: 5.0.0
rollup: 4.14.3
source-map: 0.8.0-beta.0
@ -24355,7 +24358,7 @@ snapshots:
- supports-color
- ts-node
tsup@8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3):
tsup@8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3):
dependencies:
bundle-require: 4.2.1(esbuild@0.21.5)
cac: 6.7.14
@ -24365,7 +24368,7 @@ snapshots:
execa: 5.1.1
globby: 11.1.0
joycon: 3.1.1
postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))
postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))
resolve-from: 5.0.0
rollup: 4.14.3
source-map: 0.8.0-beta.0
@ -24379,7 +24382,7 @@ snapshots:
- supports-color
- ts-node
tsup@8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.0.2))(typescript@5.0.2):
tsup@8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.0.2))(typescript@5.0.2):
dependencies:
bundle-require: 4.2.1(esbuild@0.21.5)
cac: 6.7.14
@ -24389,7 +24392,7 @@ snapshots:
execa: 5.1.1
globby: 11.1.0
joycon: 3.1.1
postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.0.2))
postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.0.2))
resolve-from: 5.0.0
rollup: 4.14.3
source-map: 0.8.0-beta.0
@ -24403,7 +24406,7 @@ snapshots:
- supports-color
- ts-node
tsup@8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3):
tsup@8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3):
dependencies:
bundle-require: 4.2.1(esbuild@0.21.5)
cac: 6.7.14
@ -24413,7 +24416,7 @@ snapshots:
execa: 5.1.1
globby: 11.1.0
joycon: 3.1.1
postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3))
postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))
resolve-from: 5.0.0
rollup: 4.14.3
source-map: 0.8.0-beta.0