mirror of
https://github.com/logto-io/logto.git
synced 2024-12-30 20:33:54 -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:
parent
8e632678bc
commit
436a1840a8
10 changed files with 410 additions and 179 deletions
|
@ -40,6 +40,7 @@
|
||||||
"@logto/demo-app": "workspace:*",
|
"@logto/demo-app": "workspace:*",
|
||||||
"@logto/experience": "workspace:*",
|
"@logto/experience": "workspace:*",
|
||||||
"@logto/experience-legacy": "workspace:*",
|
"@logto/experience-legacy": "workspace:*",
|
||||||
|
"@logto/js": "^4.1.4",
|
||||||
"@logto/language-kit": "workspace:^1.1.0",
|
"@logto/language-kit": "workspace:^1.1.0",
|
||||||
"@logto/phrases": "workspace:^1.14.0",
|
"@logto/phrases": "workspace:^1.14.0",
|
||||||
"@logto/phrases-experience": "workspace:^1.8.0",
|
"@logto/phrases-experience": "workspace:^1.8.0",
|
||||||
|
|
|
@ -15,11 +15,13 @@ import {
|
||||||
import { WellKnownCache } from '#src/caches/well-known.js';
|
import { WellKnownCache } from '#src/caches/well-known.js';
|
||||||
import RequestError from '#src/errors/RequestError/index.js';
|
import RequestError from '#src/errors/RequestError/index.js';
|
||||||
import { ssoConnectorFactories } from '#src/sso/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 { createCloudConnectionLibrary } from '../cloud-connection.js';
|
||||||
import { createConnectorLibrary } from '../connector.js';
|
import { createConnectorLibrary } from '../connector.js';
|
||||||
import { type SsoConnectorLibrary } from '../sso-connector.js';
|
|
||||||
|
|
||||||
const { jest } = import.meta;
|
const { jest } = import.meta;
|
||||||
|
|
||||||
|
@ -41,15 +43,6 @@ const signInExperiences = {
|
||||||
};
|
};
|
||||||
const { findDefaultSignInExperience, updateDefaultSignInExperience } = 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 { MockQueries } = await import('#src/test-utils/tenant.js');
|
||||||
|
|
||||||
const queries = new MockQueries({
|
const queries = new MockQueries({
|
||||||
|
@ -75,7 +68,7 @@ const { validateLanguageInfo, removeUnavailableSocialConnectorTargets, getFullSi
|
||||||
createSignInExperienceLibrary(
|
createSignInExperienceLibrary(
|
||||||
queries,
|
queries,
|
||||||
connectorLibrary,
|
connectorLibrary,
|
||||||
ssoConnectorLibrary,
|
mockSsoConnectorLibrary,
|
||||||
cloudConnection,
|
cloudConnection,
|
||||||
new WellKnownCache('foo', new TtlCache())
|
new WellKnownCache('foo', new TtlCache())
|
||||||
);
|
);
|
||||||
|
@ -157,7 +150,7 @@ describe('getFullSignInExperience()', () => {
|
||||||
it('should return full sign-in experience', async () => {
|
it('should return full sign-in experience', async () => {
|
||||||
findDefaultSignInExperience.mockResolvedValueOnce(mockSignInExperience);
|
findDefaultSignInExperience.mockResolvedValueOnce(mockSignInExperience);
|
||||||
getLogtoConnectors.mockResolvedValueOnce(mockSocialConnectors);
|
getLogtoConnectors.mockResolvedValueOnce(mockSocialConnectors);
|
||||||
ssoConnectorLibrary.getAvailableSsoConnectors.mockResolvedValueOnce([
|
mockSsoConnectorLibrary.getAvailableSsoConnectors.mockResolvedValueOnce([
|
||||||
wellConfiguredSsoConnector,
|
wellConfiguredSsoConnector,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@ -191,7 +184,7 @@ describe('getFullSignInExperience()', () => {
|
||||||
socialSignInConnectorTargets: ['github', 'facebook', 'google'],
|
socialSignInConnectorTargets: ['github', 'facebook', 'google'],
|
||||||
});
|
});
|
||||||
getLogtoConnectors.mockResolvedValueOnce([mockGoogleConnector, mockGithubConnector]);
|
getLogtoConnectors.mockResolvedValueOnce([mockGoogleConnector, mockGithubConnector]);
|
||||||
ssoConnectorLibrary.getAvailableSsoConnectors.mockResolvedValueOnce([
|
mockSsoConnectorLibrary.getAvailableSsoConnectors.mockResolvedValueOnce([
|
||||||
wellConfiguredSsoConnector,
|
wellConfiguredSsoConnector,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@ -238,7 +231,7 @@ describe('get sso connectors', () => {
|
||||||
|
|
||||||
const { ssoConnectors } = await getFullSignInExperience({ locale: 'en' });
|
const { ssoConnectors } = await getFullSignInExperience({ locale: 'en' });
|
||||||
|
|
||||||
expect(ssoConnectorLibrary.getAvailableSsoConnectors).not.toBeCalled();
|
expect(mockSsoConnectorLibrary.getAvailableSsoConnectors).not.toBeCalled();
|
||||||
|
|
||||||
expect(ssoConnectors).toEqual([]);
|
expect(ssoConnectors).toEqual([]);
|
||||||
});
|
});
|
||||||
|
@ -247,7 +240,7 @@ describe('get sso connectors', () => {
|
||||||
getLogtoConnectors.mockResolvedValueOnce(mockSocialConnectors);
|
getLogtoConnectors.mockResolvedValueOnce(mockSocialConnectors);
|
||||||
findDefaultSignInExperience.mockResolvedValueOnce(mockSignInExperience);
|
findDefaultSignInExperience.mockResolvedValueOnce(mockSignInExperience);
|
||||||
|
|
||||||
ssoConnectorLibrary.getAvailableSsoConnectors.mockResolvedValueOnce([
|
mockSsoConnectorLibrary.getAvailableSsoConnectors.mockResolvedValueOnce([
|
||||||
wellConfiguredSsoConnector,
|
wellConfiguredSsoConnector,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@ -271,7 +264,7 @@ describe('get sso connectors', () => {
|
||||||
|
|
||||||
const displayName = 'Logto Connector';
|
const displayName = 'Logto Connector';
|
||||||
|
|
||||||
ssoConnectorLibrary.getAvailableSsoConnectors.mockResolvedValueOnce([
|
mockSsoConnectorLibrary.getAvailableSsoConnectors.mockResolvedValueOnce([
|
||||||
{
|
{
|
||||||
...wellConfiguredSsoConnector,
|
...wellConfiguredSsoConnector,
|
||||||
branding: {
|
branding: {
|
||||||
|
|
|
@ -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 { mockSsoConnector, wellConfiguredSsoConnector } from '#src/__mocks__/sso.js';
|
||||||
import RequestError from '#src/errors/RequestError/index.js';
|
import RequestError from '#src/errors/RequestError/index.js';
|
||||||
import { MockQueries } from '#src/test-utils/tenant.js';
|
import { MockQueries } from '#src/test-utils/tenant.js';
|
||||||
|
@ -7,15 +10,27 @@ import { createSsoConnectorLibrary } from './sso-connector.js';
|
||||||
const { jest } = import.meta;
|
const { jest } = import.meta;
|
||||||
|
|
||||||
const findAllSsoConnectors = jest.fn();
|
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({
|
const queries = new MockQueries({
|
||||||
ssoConnectors: { findAll: findAllSsoConnectors, findById: geConnectorById },
|
ssoConnectors: {
|
||||||
|
findAll: findAllSsoConnectors,
|
||||||
|
findById: getConnectorById,
|
||||||
|
insertIdpInitiatedAuthConfig,
|
||||||
|
},
|
||||||
|
applications: { findApplicationById },
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('SsoConnectorLibrary', () => {
|
describe('SsoConnectorLibrary', () => {
|
||||||
const ssoConnectorLibrary = createSsoConnectorLibrary(queries);
|
const ssoConnectorLibrary = createSsoConnectorLibrary(queries);
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
jest.clearAllMocks();
|
||||||
|
});
|
||||||
|
|
||||||
it('getSsoConnectors() should filter unsupported sso connectors', async () => {
|
it('getSsoConnectors() should filter unsupported sso connectors', async () => {
|
||||||
const { getSsoConnectors } = ssoConnectorLibrary;
|
const { getSsoConnectors } = ssoConnectorLibrary;
|
||||||
|
|
||||||
|
@ -76,7 +91,7 @@ describe('SsoConnectorLibrary', () => {
|
||||||
it('getSsoConnectorById() should throw 404 if the connector is not supported', async () => {
|
it('getSsoConnectorById() should throw 404 if the connector is not supported', async () => {
|
||||||
const { getSsoConnectorById } = ssoConnectorLibrary;
|
const { getSsoConnectorById } = ssoConnectorLibrary;
|
||||||
|
|
||||||
geConnectorById.mockResolvedValueOnce({
|
getConnectorById.mockResolvedValueOnce({
|
||||||
...mockSsoConnector,
|
...mockSsoConnector,
|
||||||
providerName: 'unsupported',
|
providerName: 'unsupported',
|
||||||
});
|
});
|
||||||
|
@ -92,10 +107,161 @@ describe('SsoConnectorLibrary', () => {
|
||||||
it('getSsoConnectorById() should return the connector if it is supported', async () => {
|
it('getSsoConnectorById() should return the connector if it is supported', async () => {
|
||||||
const { getSsoConnectorById } = ssoConnectorLibrary;
|
const { getSsoConnectorById } = ssoConnectorLibrary;
|
||||||
|
|
||||||
geConnectorById.mockResolvedValueOnce(mockSsoConnector);
|
getConnectorById.mockResolvedValueOnce(mockSsoConnector);
|
||||||
|
|
||||||
const connector = await getSsoConnectorById('id');
|
const connector = await getSsoConnectorById('id');
|
||||||
|
|
||||||
expect(connector).toEqual(mockSsoConnector);
|
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]);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
|
import { type DirectSignInOptions, Prompt, QueryKey, withReservedScopes } from '@logto/js';
|
||||||
import {
|
import {
|
||||||
ApplicationType,
|
ApplicationType,
|
||||||
type SsoSamlAssertionContent,
|
type SsoSamlAssertionContent,
|
||||||
type CreateSsoConnectorIdpInitiatedAuthConfig,
|
type CreateSsoConnectorIdpInitiatedAuthConfig,
|
||||||
type SupportedSsoConnector,
|
type SupportedSsoConnector,
|
||||||
|
type SsoConnectorIdpInitiatedAuthConfig,
|
||||||
} from '@logto/schemas';
|
} from '@logto/schemas';
|
||||||
import { generateStandardId } from '@logto/shared';
|
import { generateStandardId } from '@logto/shared';
|
||||||
import { assert } from '@silverhand/essentials';
|
import { assert, trySafe } from '@silverhand/essentials';
|
||||||
|
|
||||||
import { defaultIdPInitiatedSamlSsoSessionTtl } from '#src/constants/index.js';
|
import { defaultIdPInitiatedSamlSsoSessionTtl } from '#src/constants/index.js';
|
||||||
import RequestError from '#src/errors/RequestError/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 {
|
return {
|
||||||
getSsoConnectors,
|
getSsoConnectors,
|
||||||
getAvailableSsoConnectors,
|
getAvailableSsoConnectors,
|
||||||
|
@ -141,5 +195,6 @@ export const createSsoConnectorLibrary = (queries: Queries) => {
|
||||||
createSsoConnectorIdpInitiatedAuthConfig,
|
createSsoConnectorIdpInitiatedAuthConfig,
|
||||||
updateSsoConnectorIdpInitiatedAuthConfig,
|
updateSsoConnectorIdpInitiatedAuthConfig,
|
||||||
createIdpInitiatedSamlSsoSession,
|
createIdpInitiatedSamlSsoSession,
|
||||||
|
getIdpInitiatedSamlSsoSignInUrl,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -236,8 +236,14 @@ export default function authnRoutes<T extends AnonymousRouter>(
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: redirect to SSO direct sign-in flow
|
// 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
|
// TODO: remove this assertion after the IdP initiated SSO flow is implemented
|
||||||
|
|
|
@ -2,6 +2,7 @@ import { mockSignInExperience } from '#src/__mocks__/sign-in-experience.js';
|
||||||
import { wellConfiguredSsoConnector } from '#src/__mocks__/sso.js';
|
import { wellConfiguredSsoConnector } from '#src/__mocks__/sso.js';
|
||||||
import RequestError from '#src/errors/RequestError/index.js';
|
import RequestError from '#src/errors/RequestError/index.js';
|
||||||
import { type SsoConnectorLibrary } from '#src/libraries/sso-connector.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';
|
import { verifySsoOnlyEmailIdentifier } from './single-sign-on-guard.js';
|
||||||
|
|
||||||
|
@ -9,13 +10,9 @@ const { jest } = import.meta;
|
||||||
|
|
||||||
const getAvailableSsoConnectorsMock = jest.fn();
|
const getAvailableSsoConnectorsMock = jest.fn();
|
||||||
|
|
||||||
const mockSsoConnectorLibrary: jest.Mocked<SsoConnectorLibrary> = {
|
const ssoConnectorLibrary: jest.Mocked<SsoConnectorLibrary> = {
|
||||||
|
...mockSsoConnectorLibrary,
|
||||||
getAvailableSsoConnectors: getAvailableSsoConnectorsMock,
|
getAvailableSsoConnectors: getAvailableSsoConnectorsMock,
|
||||||
getSsoConnectors: jest.fn(),
|
|
||||||
getSsoConnectorById: jest.fn(),
|
|
||||||
createSsoConnectorIdpInitiatedAuthConfig: jest.fn(),
|
|
||||||
updateSsoConnectorIdpInitiatedAuthConfig: jest.fn(),
|
|
||||||
createIdpInitiatedSamlSsoSession: jest.fn(),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
describe('verifyEmailIdentifier tests', () => {
|
describe('verifyEmailIdentifier tests', () => {
|
||||||
|
@ -26,7 +23,7 @@ describe('verifyEmailIdentifier tests', () => {
|
||||||
it('should return if the identifier is not an email', async () => {
|
it('should return if the identifier is not an email', async () => {
|
||||||
await expect(
|
await expect(
|
||||||
verifySsoOnlyEmailIdentifier(
|
verifySsoOnlyEmailIdentifier(
|
||||||
mockSsoConnectorLibrary,
|
ssoConnectorLibrary,
|
||||||
{
|
{
|
||||||
username: 'foo',
|
username: 'foo',
|
||||||
password: 'bar',
|
password: 'bar',
|
||||||
|
@ -39,7 +36,7 @@ describe('verifyEmailIdentifier tests', () => {
|
||||||
it('should return if the ssoConnector is not enabled', async () => {
|
it('should return if the ssoConnector is not enabled', async () => {
|
||||||
await expect(
|
await expect(
|
||||||
verifySsoOnlyEmailIdentifier(
|
verifySsoOnlyEmailIdentifier(
|
||||||
mockSsoConnectorLibrary,
|
ssoConnectorLibrary,
|
||||||
{
|
{
|
||||||
email: 'foo@bar.com',
|
email: 'foo@bar.com',
|
||||||
password: 'bar',
|
password: 'bar',
|
||||||
|
@ -64,7 +61,7 @@ describe('verifyEmailIdentifier tests', () => {
|
||||||
|
|
||||||
await expect(
|
await expect(
|
||||||
verifySsoOnlyEmailIdentifier(
|
verifySsoOnlyEmailIdentifier(
|
||||||
mockSsoConnectorLibrary,
|
ssoConnectorLibrary,
|
||||||
{
|
{
|
||||||
email: 'foo@bar.com',
|
email: 'foo@bar.com',
|
||||||
password: 'bar',
|
password: 'bar',
|
||||||
|
@ -84,7 +81,7 @@ describe('verifyEmailIdentifier tests', () => {
|
||||||
|
|
||||||
await expect(
|
await expect(
|
||||||
verifySsoOnlyEmailIdentifier(
|
verifySsoOnlyEmailIdentifier(
|
||||||
mockSsoConnectorLibrary,
|
ssoConnectorLibrary,
|
||||||
{
|
{
|
||||||
email: 'foo@example.com',
|
email: 'foo@example.com',
|
||||||
verificationCode: 'bar',
|
verificationCode: 'bar',
|
||||||
|
|
|
@ -3,6 +3,8 @@ import Client from '@withtyped/client';
|
||||||
|
|
||||||
import { type LogtoConfigLibrary } from '#src/libraries/logto-config.js';
|
import { type LogtoConfigLibrary } from '#src/libraries/logto-config.js';
|
||||||
|
|
||||||
|
import { type SsoConnectorLibrary } from '../libraries/sso-connector.js';
|
||||||
|
|
||||||
const { jest } = import.meta;
|
const { jest } = import.meta;
|
||||||
|
|
||||||
export const mockLogtoConfigsLibrary: jest.Mocked<LogtoConfigLibrary> = {
|
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 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(),
|
||||||
|
};
|
||||||
|
|
|
@ -108,8 +108,7 @@ devFeatureTest.describe('SAML IdP initiated authentication config', () => {
|
||||||
const defaultApplicationId = applications.get('traditional')!.id;
|
const defaultApplicationId = applications.get('traditional')!.id;
|
||||||
const redirectUri = 'https://example.com';
|
const redirectUri = 'https://example.com';
|
||||||
const authParameters = {
|
const authParameters = {
|
||||||
resources: ['resource1', 'resource2'],
|
scope: 'profile email',
|
||||||
scopes: ['profile', 'email'],
|
|
||||||
};
|
};
|
||||||
const connectorId = ssoConnectors.get('saml')!.id;
|
const connectorId = ssoConnectors.get('saml')!.id;
|
||||||
|
|
||||||
|
@ -202,8 +201,8 @@ devFeatureTest.describe('SAML IdP initiated authentication config', () => {
|
||||||
{
|
{
|
||||||
redirectUri: 'https://updated.com',
|
redirectUri: 'https://updated.com',
|
||||||
authParameters: {
|
authParameters: {
|
||||||
resources: ['resource1', 'resource2'],
|
resource: 'test_api.com',
|
||||||
scopes: ['profile', 'email'],
|
scopes: 'profile email',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -213,8 +212,8 @@ devFeatureTest.describe('SAML IdP initiated authentication config', () => {
|
||||||
defaultApplicationId,
|
defaultApplicationId,
|
||||||
redirectUri: 'https://updated.com',
|
redirectUri: 'https://updated.com',
|
||||||
authParameters: {
|
authParameters: {
|
||||||
resources: ['resource1', 'resource2'],
|
resource: 'test_api.com',
|
||||||
scopes: ['profile', 'email'],
|
scopes: 'profile email',
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -14,10 +14,9 @@ export type SsoBranding = z.infer<typeof ssoBrandingGuard>;
|
||||||
|
|
||||||
export const idpInitiatedAuthParamsGuard = z
|
export const idpInitiatedAuthParamsGuard = z
|
||||||
.object({
|
.object({
|
||||||
resources: z.array(z.string()).optional(),
|
scope: z.string().optional(),
|
||||||
scopes: z.array(z.string()).optional(),
|
|
||||||
})
|
})
|
||||||
.catchall(z.unknown());
|
.catchall(z.string());
|
||||||
|
|
||||||
export type IdpInitiatedAuthParams = z.infer<typeof idpInitiatedAuthParamsGuard>;
|
export type IdpInitiatedAuthParams = z.infer<typeof idpInitiatedAuthParamsGuard>;
|
||||||
|
|
||||||
|
|
277
pnpm-lock.yaml
277
pnpm-lock.yaml
|
@ -41,7 +41,7 @@ importers:
|
||||||
version: 8.8.0
|
version: 8.8.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.0.0
|
specifier: ^5.0.0
|
||||||
version: 5.0.2
|
version: 5.0.2
|
||||||
|
@ -263,7 +263,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -330,7 +330,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -388,7 +388,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -446,7 +446,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -510,7 +510,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -574,7 +574,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -635,7 +635,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -702,7 +702,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -760,7 +760,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -818,7 +818,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -876,7 +876,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -937,7 +937,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -1007,7 +1007,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -1068,7 +1068,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -1123,7 +1123,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -1181,7 +1181,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -1239,7 +1239,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -1297,7 +1297,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -1358,7 +1358,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -1416,7 +1416,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -1474,7 +1474,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -1532,7 +1532,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -1590,7 +1590,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -1648,7 +1648,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -1706,7 +1706,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -1764,7 +1764,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -1822,7 +1822,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -1889,7 +1889,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -1959,7 +1959,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -2017,7 +2017,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -2072,7 +2072,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -2136,7 +2136,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -2194,7 +2194,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -2252,7 +2252,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -2316,7 +2316,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -2374,7 +2374,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -2432,7 +2432,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -2490,7 +2490,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -2548,7 +2548,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -2606,7 +2606,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -2952,6 +2952,9 @@ importers:
|
||||||
'@logto/experience-legacy':
|
'@logto/experience-legacy':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../experience-legacy
|
version: link:../experience-legacy
|
||||||
|
'@logto/js':
|
||||||
|
specifier: ^4.1.4
|
||||||
|
version: 4.1.4
|
||||||
'@logto/language-kit':
|
'@logto/language-kit':
|
||||||
specifier: workspace:^1.1.0
|
specifier: workspace:^1.1.0
|
||||||
version: link:../toolkit/language-kit
|
version: link:../toolkit/language-kit
|
||||||
|
@ -3192,7 +3195,7 @@ importers:
|
||||||
version: 8.57.0
|
version: 8.57.0
|
||||||
jest:
|
jest:
|
||||||
specifier: ^29.7.0
|
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:
|
jest-matcher-specific-error:
|
||||||
specifier: ^1.0.0
|
specifier: ^1.0.0
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
|
@ -3222,7 +3225,7 @@ importers:
|
||||||
version: 7.0.0
|
version: 7.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -3373,7 +3376,7 @@ importers:
|
||||||
version: 3.0.0
|
version: 3.0.0
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
packages/experience:
|
||||||
devDependencies:
|
devDependencies:
|
||||||
|
@ -3848,7 +3851,7 @@ importers:
|
||||||
version: 10.0.0
|
version: 10.0.0
|
||||||
jest:
|
jest:
|
||||||
specifier: ^29.7.0
|
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:
|
jest-matcher-specific-error:
|
||||||
specifier: ^1.0.0
|
specifier: ^1.0.0
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
|
@ -3875,7 +3878,7 @@ importers:
|
||||||
version: 22.6.5(typescript@5.5.3)
|
version: 22.6.5(typescript@5.5.3)
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.1.0
|
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:
|
typescript:
|
||||||
specifier: ^5.5.3
|
specifier: ^5.5.3
|
||||||
version: 5.5.3
|
version: 5.5.3
|
||||||
|
@ -7635,7 +7638,7 @@ packages:
|
||||||
engines: {node: '>= 0.6'}
|
engines: {node: '>= 0.6'}
|
||||||
|
|
||||||
concat-map@0.0.1:
|
concat-map@0.0.1:
|
||||||
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
|
resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
|
||||||
|
|
||||||
confusing-browser-globals@1.0.11:
|
confusing-browser-globals@1.0.11:
|
||||||
resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==}
|
resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==}
|
||||||
|
@ -8234,7 +8237,7 @@ packages:
|
||||||
resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==}
|
resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==}
|
||||||
|
|
||||||
ee-first@1.1.1:
|
ee-first@1.1.1:
|
||||||
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
|
resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=}
|
||||||
|
|
||||||
electron-to-chromium@1.5.0:
|
electron-to-chromium@1.5.0:
|
||||||
resolution: {integrity: sha512-Vb3xHHYnLseK8vlMJQKJYXJ++t4u1/qJ3vykuVrVjvdiOEhYyT1AuP4x03G8EnPmYvYOhe9T+dADTmthjRQMkA==}
|
resolution: {integrity: sha512-Vb3xHHYnLseK8vlMJQKJYXJ++t4u1/qJ3vykuVrVjvdiOEhYyT1AuP4x03G8EnPmYvYOhe9T+dADTmthjRQMkA==}
|
||||||
|
@ -9255,7 +9258,7 @@ packages:
|
||||||
engines: {node: '>=16.17.0'}
|
engines: {node: '>=16.17.0'}
|
||||||
|
|
||||||
humanize-number@0.0.2:
|
humanize-number@0.0.2:
|
||||||
resolution: {integrity: sha512-un3ZAcNQGI7RzaWGZzQDH47HETM4Wrj6z6E4TId8Yeq9w5ZKUVB1nrT2jwFheTUjEmqcgTjXDc959jum+ai1kQ==}
|
resolution: {integrity: sha1-EcCvakcWQ2M1iFiASPF5lUFInBg=}
|
||||||
|
|
||||||
husky@9.0.7:
|
husky@9.0.7:
|
||||||
resolution: {integrity: sha512-vWdusw+y12DUEeoZqW1kplOFqk3tedGV8qlga8/SF6a3lOiWLqGZZQvfWvY0fQYdfiRi/u1DFNpudTSV9l1aCg==}
|
resolution: {integrity: sha512-vWdusw+y12DUEeoZqW1kplOFqk3tedGV8qlga8/SF6a3lOiWLqGZZQvfWvY0fQYdfiRi/u1DFNpudTSV9l1aCg==}
|
||||||
|
@ -10475,7 +10478,7 @@ packages:
|
||||||
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
|
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
|
||||||
|
|
||||||
media-typer@0.3.0:
|
media-typer@0.3.0:
|
||||||
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
|
resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=}
|
||||||
engines: {node: '>= 0.6'}
|
engines: {node: '>= 0.6'}
|
||||||
|
|
||||||
meow@10.1.5:
|
meow@10.1.5:
|
||||||
|
@ -12471,7 +12474,7 @@ packages:
|
||||||
resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
|
resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
|
||||||
|
|
||||||
stubs@3.0.0:
|
stubs@3.0.0:
|
||||||
resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==}
|
resolution: {integrity: sha1-6NK6H6nJBXAwPAMLaQD31fiavls=}
|
||||||
|
|
||||||
style-search@0.1.0:
|
style-search@0.1.0:
|
||||||
resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==}
|
resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==}
|
||||||
|
@ -13074,7 +13077,7 @@ packages:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
void-elements@3.1.0:
|
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'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
w3c-xmlserializer@3.0.0:
|
w3c-xmlserializer@3.0.0:
|
||||||
|
@ -14963,7 +14966,7 @@ snapshots:
|
||||||
jest-util: 29.7.0
|
jest-util: 29.7.0
|
||||||
slash: 3.0.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:
|
dependencies:
|
||||||
'@jest/console': 29.7.0
|
'@jest/console': 29.7.0
|
||||||
'@jest/reporters': 29.7.0
|
'@jest/reporters': 29.7.0
|
||||||
|
@ -14977,7 +14980,7 @@ snapshots:
|
||||||
exit: 0.1.2
|
exit: 0.1.2
|
||||||
graceful-fs: 4.2.11
|
graceful-fs: 4.2.11
|
||||||
jest-changed-files: 29.7.0
|
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-haste-map: 29.7.0
|
||||||
jest-message-util: 29.7.0
|
jest-message-util: 29.7.0
|
||||||
jest-regex-util: 29.6.3
|
jest-regex-util: 29.6.3
|
||||||
|
@ -14998,7 +15001,7 @@ snapshots:
|
||||||
- supports-color
|
- supports-color
|
||||||
- ts-node
|
- 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:
|
dependencies:
|
||||||
'@jest/console': 29.7.0
|
'@jest/console': 29.7.0
|
||||||
'@jest/reporters': 29.7.0
|
'@jest/reporters': 29.7.0
|
||||||
|
@ -15012,7 +15015,7 @@ snapshots:
|
||||||
exit: 0.1.2
|
exit: 0.1.2
|
||||||
graceful-fs: 4.2.11
|
graceful-fs: 4.2.11
|
||||||
jest-changed-files: 29.7.0
|
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-haste-map: 29.7.0
|
||||||
jest-message-util: 29.7.0
|
jest-message-util: 29.7.0
|
||||||
jest-regex-util: 29.6.3
|
jest-regex-util: 29.6.3
|
||||||
|
@ -17918,13 +17921,13 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
lodash.get: 4.4.2
|
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:
|
dependencies:
|
||||||
'@jest/types': 29.6.3
|
'@jest/types': 29.6.3
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
exit: 0.1.2
|
exit: 0.1.2
|
||||||
graceful-fs: 4.2.11
|
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
|
jest-util: 29.7.0
|
||||||
prompts: 2.4.2
|
prompts: 2.4.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
|
@ -20258,16 +20261,16 @@ snapshots:
|
||||||
- babel-plugin-macros
|
- babel-plugin-macros
|
||||||
- supports-color
|
- 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:
|
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/test-result': 29.7.0
|
||||||
'@jest/types': 29.6.3
|
'@jest/types': 29.6.3
|
||||||
chalk: 4.1.2
|
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
|
exit: 0.1.2
|
||||||
import-local: 3.1.0
|
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-util: 29.7.0
|
||||||
jest-validate: 29.7.0
|
jest-validate: 29.7.0
|
||||||
yargs: 17.7.2
|
yargs: 17.7.2
|
||||||
|
@ -20296,7 +20299,7 @@ snapshots:
|
||||||
- supports-color
|
- supports-color
|
||||||
- ts-node
|
- 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:
|
dependencies:
|
||||||
'@babel/core': 7.24.4
|
'@babel/core': 7.24.4
|
||||||
'@jest/test-sequencer': 29.7.0
|
'@jest/test-sequencer': 29.7.0
|
||||||
|
@ -20322,7 +20325,38 @@ snapshots:
|
||||||
strip-json-comments: 3.1.1
|
strip-json-comments: 3.1.1
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/node': 20.10.4
|
'@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:
|
transitivePeerDependencies:
|
||||||
- babel-plugin-macros
|
- babel-plugin-macros
|
||||||
- supports-color
|
- supports-color
|
||||||
|
@ -20358,37 +20392,6 @@ snapshots:
|
||||||
- babel-plugin-macros
|
- babel-plugin-macros
|
||||||
- supports-color
|
- 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:
|
jest-dev-server@10.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
|
@ -20697,12 +20700,12 @@ snapshots:
|
||||||
merge-stream: 2.0.0
|
merge-stream: 2.0.0
|
||||||
supports-color: 8.1.1
|
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:
|
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
|
'@jest/types': 29.6.3
|
||||||
import-local: 3.1.0
|
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:
|
transitivePeerDependencies:
|
||||||
- '@types/node'
|
- '@types/node'
|
||||||
- babel-plugin-macros
|
- babel-plugin-macros
|
||||||
|
@ -22636,31 +22639,31 @@ snapshots:
|
||||||
|
|
||||||
possible-typed-array-names@1.0.0: {}
|
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:
|
dependencies:
|
||||||
lilconfig: 3.1.2
|
lilconfig: 3.1.2
|
||||||
yaml: 2.4.5
|
yaml: 2.4.5
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
postcss: 8.4.39
|
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:
|
dependencies:
|
||||||
lilconfig: 3.1.2
|
lilconfig: 3.1.2
|
||||||
yaml: 2.4.5
|
yaml: 2.4.5
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
postcss: 8.4.39
|
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:
|
dependencies:
|
||||||
lilconfig: 3.1.2
|
lilconfig: 3.1.2
|
||||||
yaml: 2.4.5
|
yaml: 2.4.5
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
postcss: 8.4.39
|
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:
|
dependencies:
|
||||||
lilconfig: 3.1.2
|
lilconfig: 3.1.2
|
||||||
yaml: 2.4.5
|
yaml: 2.4.5
|
||||||
|
@ -24227,28 +24230,7 @@ snapshots:
|
||||||
|
|
||||||
ts-interface-checker@0.1.13: {}
|
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):
|
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
|
|
||||||
'@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):
|
|
||||||
dependencies:
|
dependencies:
|
||||||
'@cspotcode/source-map-support': 0.8.1
|
'@cspotcode/source-map-support': 0.8.1
|
||||||
'@tsconfig/node10': 1.0.11
|
'@tsconfig/node10': 1.0.11
|
||||||
|
@ -24269,7 +24251,7 @@ snapshots:
|
||||||
'@swc/core': 1.3.52(@swc/helpers@0.5.1)
|
'@swc/core': 1.3.52(@swc/helpers@0.5.1)
|
||||||
optional: true
|
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:
|
dependencies:
|
||||||
'@cspotcode/source-map-support': 0.8.1
|
'@cspotcode/source-map-support': 0.8.1
|
||||||
'@tsconfig/node10': 1.0.11
|
'@tsconfig/node10': 1.0.11
|
||||||
|
@ -24290,7 +24272,7 @@ snapshots:
|
||||||
'@swc/core': 1.3.52(@swc/helpers@0.5.1)
|
'@swc/core': 1.3.52(@swc/helpers@0.5.1)
|
||||||
optional: true
|
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:
|
dependencies:
|
||||||
'@cspotcode/source-map-support': 0.8.1
|
'@cspotcode/source-map-support': 0.8.1
|
||||||
'@tsconfig/node10': 1.0.11
|
'@tsconfig/node10': 1.0.11
|
||||||
|
@ -24311,6 +24293,27 @@ snapshots:
|
||||||
'@swc/core': 1.3.52(@swc/helpers@0.5.1)
|
'@swc/core': 1.3.52(@swc/helpers@0.5.1)
|
||||||
optional: true
|
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:
|
tsconfig-paths@3.15.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/json5': 0.0.29
|
'@types/json5': 0.0.29
|
||||||
|
@ -24331,7 +24334,7 @@ snapshots:
|
||||||
|
|
||||||
tsscmp@1.0.6: {}
|
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:
|
dependencies:
|
||||||
bundle-require: 4.2.1(esbuild@0.21.5)
|
bundle-require: 4.2.1(esbuild@0.21.5)
|
||||||
cac: 6.7.14
|
cac: 6.7.14
|
||||||
|
@ -24341,7 +24344,7 @@ snapshots:
|
||||||
execa: 5.1.1
|
execa: 5.1.1
|
||||||
globby: 11.1.0
|
globby: 11.1.0
|
||||||
joycon: 3.1.1
|
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
|
resolve-from: 5.0.0
|
||||||
rollup: 4.14.3
|
rollup: 4.14.3
|
||||||
source-map: 0.8.0-beta.0
|
source-map: 0.8.0-beta.0
|
||||||
|
@ -24355,7 +24358,7 @@ snapshots:
|
||||||
- supports-color
|
- supports-color
|
||||||
- ts-node
|
- 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:
|
dependencies:
|
||||||
bundle-require: 4.2.1(esbuild@0.21.5)
|
bundle-require: 4.2.1(esbuild@0.21.5)
|
||||||
cac: 6.7.14
|
cac: 6.7.14
|
||||||
|
@ -24365,7 +24368,7 @@ snapshots:
|
||||||
execa: 5.1.1
|
execa: 5.1.1
|
||||||
globby: 11.1.0
|
globby: 11.1.0
|
||||||
joycon: 3.1.1
|
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
|
resolve-from: 5.0.0
|
||||||
rollup: 4.14.3
|
rollup: 4.14.3
|
||||||
source-map: 0.8.0-beta.0
|
source-map: 0.8.0-beta.0
|
||||||
|
@ -24379,7 +24382,7 @@ snapshots:
|
||||||
- supports-color
|
- supports-color
|
||||||
- ts-node
|
- 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:
|
dependencies:
|
||||||
bundle-require: 4.2.1(esbuild@0.21.5)
|
bundle-require: 4.2.1(esbuild@0.21.5)
|
||||||
cac: 6.7.14
|
cac: 6.7.14
|
||||||
|
@ -24389,7 +24392,7 @@ snapshots:
|
||||||
execa: 5.1.1
|
execa: 5.1.1
|
||||||
globby: 11.1.0
|
globby: 11.1.0
|
||||||
joycon: 3.1.1
|
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
|
resolve-from: 5.0.0
|
||||||
rollup: 4.14.3
|
rollup: 4.14.3
|
||||||
source-map: 0.8.0-beta.0
|
source-map: 0.8.0-beta.0
|
||||||
|
@ -24403,7 +24406,7 @@ snapshots:
|
||||||
- supports-color
|
- supports-color
|
||||||
- ts-node
|
- 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:
|
dependencies:
|
||||||
bundle-require: 4.2.1(esbuild@0.21.5)
|
bundle-require: 4.2.1(esbuild@0.21.5)
|
||||||
cac: 6.7.14
|
cac: 6.7.14
|
||||||
|
@ -24413,7 +24416,7 @@ snapshots:
|
||||||
execa: 5.1.1
|
execa: 5.1.1
|
||||||
globby: 11.1.0
|
globby: 11.1.0
|
||||||
joycon: 3.1.1
|
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
|
resolve-from: 5.0.0
|
||||||
rollup: 4.14.3
|
rollup: 4.14.3
|
||||||
source-map: 0.8.0-beta.0
|
source-map: 0.8.0-beta.0
|
||||||
|
|
Loading…
Reference in a new issue