From ff4cd67a9816916317f19e52cff21e320b283046 Mon Sep 17 00:00:00 2001 From: Charles Zhao Date: Tue, 3 Sep 2024 10:00:37 +0800 Subject: [PATCH] feat(tunnel): support cli deploy custom ui assets to cloud (#6530) --- .changeset/modern-ghosts-sin.md | 33 ++ packages/tunnel/package.json | 4 + packages/tunnel/src/commands/deploy/index.ts | 108 +++++++ packages/tunnel/src/commands/deploy/types.ts | 7 + packages/tunnel/src/commands/deploy/utils.ts | 161 ++++++++++ .../tunnel/src/commands/{ => tunnel}/index.ts | 56 ++-- .../tunnel/src/commands/{ => tunnel}/types.ts | 0 .../src/commands/{ => tunnel}/utils.test.ts | 0 .../tunnel/src/commands/{ => tunnel}/utils.ts | 10 +- packages/tunnel/src/include.d/dom.d.ts | 3 + packages/tunnel/src/index.ts | 23 +- packages/tunnel/src/utils.ts | 10 - pnpm-lock.yaml | 284 +++++++++--------- 13 files changed, 514 insertions(+), 185 deletions(-) create mode 100644 .changeset/modern-ghosts-sin.md create mode 100644 packages/tunnel/src/commands/deploy/index.ts create mode 100644 packages/tunnel/src/commands/deploy/types.ts create mode 100644 packages/tunnel/src/commands/deploy/utils.ts rename packages/tunnel/src/commands/{ => tunnel}/index.ts (64%) rename packages/tunnel/src/commands/{ => tunnel}/types.ts (100%) rename packages/tunnel/src/commands/{ => tunnel}/utils.test.ts (100%) rename packages/tunnel/src/commands/{ => tunnel}/utils.ts (93%) create mode 100644 packages/tunnel/src/include.d/dom.d.ts diff --git a/.changeset/modern-ghosts-sin.md b/.changeset/modern-ghosts-sin.md new file mode 100644 index 000000000..3d749a72e --- /dev/null +++ b/.changeset/modern-ghosts-sin.md @@ -0,0 +1,33 @@ +--- +"@logto/tunnel": minor +--- + +add deploy command and env support + +#### Add new `deploy` command to deploy your local custom UI assets to your Logto Cloud tenant + +1. Create a machine-to-machine app with Management API permissions in your Logto tenant +2. Run the following command + +```bash +npx @logto/tunnel deploy --auth : --endpoint https://.logto.app --management-api-resource https://.logto.app/api --experience-path /path/to/your/custom/ui +``` + +Note: The `--management-api-resource` (or `--resource`) can be omitted when using the default Logto domain, since the CLI can infer the value automatically. If you are using custom domain for your Logto endpoint, this option must be provided. + +#### Add environment variable support + +1. Create a `.env` file in the CLI root directory, or any parent directory where the CLI is located. +2. Alternatively, specify environment variables directly when running CLI commands: + +```bash +ENDPOINT=https://.logto.app npx @logto/tunnel ... +``` + +Supported environment variables: + +- LOGTO_AUTH +- LOGTO_ENDPOINT +- LOGTO_EXPERIENCE_PATH +- LOGTO_EXPERIENCE_URI +- LOGTO_MANAGEMENT_API_RESOURCE diff --git a/packages/tunnel/package.json b/packages/tunnel/package.json index ce594c187..ee4ce44eb 100644 --- a/packages/tunnel/package.json +++ b/packages/tunnel/package.json @@ -44,16 +44,20 @@ "@logto/core-kit": "workspace:^", "@logto/shared": "workspace:^", "@silverhand/essentials": "^2.9.1", + "adm-zip": "^0.5.14", "chalk": "^5.3.0", "dotenv": "^16.4.5", + "find-up": "^7.0.0", "http-proxy-middleware": "^3.0.0", "mime": "^4.0.4", + "ora": "^8.0.1", "yargs": "^17.6.0", "zod": "^3.23.8" }, "devDependencies": { "@silverhand/eslint-config": "6.0.1", "@silverhand/ts-config": "6.0.0", + "@types/adm-zip": "^0.5.5", "@types/node": "^20.9.5", "@types/yargs": "^17.0.13", "@vitest/coverage-v8": "^2.0.0", diff --git a/packages/tunnel/src/commands/deploy/index.ts b/packages/tunnel/src/commands/deploy/index.ts new file mode 100644 index 000000000..f371b7f20 --- /dev/null +++ b/packages/tunnel/src/commands/deploy/index.ts @@ -0,0 +1,108 @@ +import { existsSync } from 'node:fs'; +import path from 'node:path'; + +import { isValidUrl } from '@logto/core-kit'; +import chalk from 'chalk'; +import ora from 'ora'; +import type { CommandModule } from 'yargs'; + +import { consoleLog } from '../../utils.js'; + +import { type DeployCommandArgs } from './types.js'; +import { deployToLogtoCloud } from './utils.js'; + +const tunnel: CommandModule = { + command: ['deploy'], + describe: 'Deploy your custom UI assets to Logto Cloud', + builder: (yargs) => + yargs + .options({ + auth: { + describe: + 'Auth credentials of your Logto M2M application. E.g.: : (Docs: https://docs.logto.io/docs/recipes/interact-with-management-api/#create-an-m2m-app)', + type: 'string', + }, + endpoint: { + describe: + 'Logto endpoint URI that points to your Logto Cloud instance. E.g.: https://.logto.app/', + type: 'string', + }, + path: { + alias: ['experience-path'], + describe: 'The local folder path of your custom sign-in experience assets.', + type: 'string', + }, + resource: { + alias: ['management-api-resource'], + describe: 'Logto Management API resource indicator. Required if using custom domain.', + type: 'string', + }, + verbose: { + describe: 'Show verbose output.', + type: 'boolean', + default: false, + }, + }) + .epilog( + `Refer to our documentation for more details:\n${chalk.blue( + 'https://docs.logto.io/docs/references/tunnel-cli/deploy' + )}` + ), + handler: async (options) => { + const { + auth, + endpoint, + path: experiencePath, + resource: managementApiResource, + verbose, + } = options; + if (!auth) { + consoleLog.fatal( + 'Must provide valid Machine-to-Machine (M2M) authentication credentials. E.g. `--auth :` or add `LOGTO_AUTH` to your environment variables.' + ); + } + if (!endpoint || !isValidUrl(endpoint)) { + consoleLog.fatal( + 'A valid Logto endpoint URI must be provided. E.g. `--endpoint https://.logto.app/` or add `LOGTO_ENDPOINT` to your environment variables.' + ); + } + if (!experiencePath) { + consoleLog.fatal( + 'A valid experience path must be provided. E.g. `--experience-path /path/to/experience` or add `LOGTO_EXPERIENCE_PATH` to your environment variables.' + ); + } + if (!existsSync(path.join(experiencePath, 'index.html'))) { + consoleLog.fatal(`The provided experience path must contain an "index.html" file.`); + } + + const spinner = ora(); + + if (verbose) { + consoleLog.plain( + `${chalk.bold('Starting deployment...')} ${chalk.gray('(with verbose output)')}` + ); + } else { + spinner.start('Deploying your custom UI assets to Logto Cloud...'); + } + + await deployToLogtoCloud({ auth, endpoint, experiencePath, managementApiResource, verbose }); + + if (!verbose) { + spinner.succeed('Deploying your custom UI assets to Logto Cloud... Done.'); + } + + const endpointUrl = new URL(endpoint); + spinner.succeed(`🎉 ${chalk.bold(chalk.green('Deployment successful!'))}`); + consoleLog.plain(`${chalk.green('➜')} You can try your own sign-in UI on Logto Cloud now.`); + consoleLog.plain(`${chalk.green('➜')} Make sure the Logto endpoint URI in your app is set to:`); + consoleLog.plain(` ${chalk.blue(chalk.bold(endpointUrl.href))}`); + consoleLog.plain( + `${chalk.green( + '➜' + )} If you are using social sign-in, make sure the social redirect URI is set to:` + ); + consoleLog.plain(` ${chalk.blue(chalk.bold(`${endpointUrl.href}callback/`))}`); + }, +}; + +export default tunnel; diff --git a/packages/tunnel/src/commands/deploy/types.ts b/packages/tunnel/src/commands/deploy/types.ts new file mode 100644 index 000000000..6d90961a7 --- /dev/null +++ b/packages/tunnel/src/commands/deploy/types.ts @@ -0,0 +1,7 @@ +export type DeployCommandArgs = { + auth?: string; + endpoint?: string; + path?: string; + resource?: string; + verbose: boolean; +}; diff --git a/packages/tunnel/src/commands/deploy/utils.ts b/packages/tunnel/src/commands/deploy/utils.ts new file mode 100644 index 000000000..ce83a2557 --- /dev/null +++ b/packages/tunnel/src/commands/deploy/utils.ts @@ -0,0 +1,161 @@ +import { appendPath } from '@silverhand/essentials'; +import AdmZip from 'adm-zip'; +import chalk from 'chalk'; +import ora from 'ora'; + +import { consoleLog } from '../../utils.js'; + +type TokenResponse = { + access_token: string; + token_type: string; + expires_in: number; + scope: string; +}; + +type DeployArgs = { + auth: string; + endpoint: string; + experiencePath: string; + managementApiResource?: string; + verbose: boolean; +}; + +export const deployToLogtoCloud = async ({ + auth, + endpoint, + experiencePath, + managementApiResource, + verbose, +}: DeployArgs) => { + const spinner = ora(); + if (verbose) { + spinner.start('[1/4] Zipping files...'); + } + const zipBuffer = await zipFiles(experiencePath); + if (verbose) { + spinner.succeed('[1/4] Zipping files... Done.'); + } + + try { + if (verbose) { + spinner.start('[2/4] Exchanging access token...'); + } + const endpointUrl = new URL(endpoint); + const tokenResponse = await getAccessToken(auth, endpointUrl, managementApiResource); + if (verbose) { + spinner.succeed('[2/4] Exchanging access token... Done.'); + spinner.succeed( + `Token exchange response:\n${chalk.gray(JSON.stringify(tokenResponse, undefined, 2))}` + ); + spinner.start('[3/4] Uploading zip...'); + } + const accessToken = tokenResponse.access_token; + const uploadResult = await uploadCustomUiAssets(accessToken, endpointUrl, zipBuffer); + + if (verbose) { + spinner.succeed('[3/4] Uploading zip... Done.'); + spinner.succeed( + `Received response:\n${chalk.gray(JSON.stringify(uploadResult, undefined, 2))}` + ); + spinner.start('[4/4] Saving changes to your tenant...'); + } + + await saveChangesToSie(accessToken, endpointUrl, uploadResult.customUiAssetId); + + if (verbose) { + spinner.succeed('[4/4] Saving changes to your tenant... Done.'); + } + } catch (error: unknown) { + spinner.fail(); + const errorMessage = error instanceof Error ? error.message : String(error); + consoleLog.fatal(chalk.red(errorMessage)); + } +}; + +const zipFiles = async (path: string): Promise => { + const zip = new AdmZip(); + await zip.addLocalFolderPromise(path, {}); + return zip.toBuffer(); +}; + +const getAccessToken = async (auth: string, endpoint: URL, managementApiResource?: string) => { + const tokenEndpoint = appendPath(endpoint, '/oidc/token').href; + const resource = managementApiResource ?? getManagementApiResourceFromEndpointUri(endpoint); + + const response = await fetch(tokenEndpoint, { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + Authorization: `Basic ${Buffer.from(auth).toString('base64')}`, + }, + body: new URLSearchParams({ + grant_type: 'client_credentials', + resource, + scope: 'all', + }).toString(), + }); + + if (!response.ok) { + throw new Error(`Failed to fetch access token: ${response.statusText}`); + } + + return response.json(); +}; + +const uploadCustomUiAssets = async (accessToken: string, endpoint: URL, zipBuffer: Uint8Array) => { + const form = new FormData(); + const blob = new Blob([zipBuffer], { type: 'application/zip' }); + const timestamp = Math.floor(Date.now() / 1000); + form.append('file', blob, `custom-ui-${timestamp}.zip`); + + const uploadResponse = await fetch( + appendPath(endpoint, '/api/sign-in-exp/default/custom-ui-assets'), + { + method: 'POST', + body: form, + headers: { + Authorization: `Bearer ${accessToken}`, + Accept: 'application/json', + }, + } + ); + + if (!uploadResponse.ok) { + throw new Error(`Request error: [${uploadResponse.status}] ${uploadResponse.status}`); + } + + return uploadResponse.json<{ customUiAssetId: string }>(); +}; + +const saveChangesToSie = async (accessToken: string, endpointUrl: URL, customUiAssetId: string) => { + const timestamp = Math.floor(Date.now() / 1000); + const patchResponse = await fetch(appendPath(endpointUrl, '/api/sign-in-exp'), { + method: 'PATCH', + headers: { + Authorization: `Bearer ${accessToken}`, + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + customUiAssets: { id: customUiAssetId, createdAt: timestamp }, + }), + }); + + if (!patchResponse.ok) { + throw new Error(`Request error: [${patchResponse.status}] ${patchResponse.statusText}`); + } + + return patchResponse.json(); +}; + +const getTenantIdFromEndpointUri = (endpoint: URL) => { + const splitted = endpoint.hostname.split('.'); + return splitted.length > 2 ? splitted[0] : 'default'; +}; + +const getManagementApiResourceFromEndpointUri = (endpoint: URL) => { + const tenantId = getTenantIdFromEndpointUri(endpoint); + + // This resource domain is fixed to `logto.app` for all environments (prod, staging, and dev) + return `https://${tenantId}.logto.app/api`; +}; diff --git a/packages/tunnel/src/commands/index.ts b/packages/tunnel/src/commands/tunnel/index.ts similarity index 64% rename from packages/tunnel/src/commands/index.ts rename to packages/tunnel/src/commands/tunnel/index.ts index d8e0e8eb2..d2b3ad4e7 100644 --- a/packages/tunnel/src/commands/index.ts +++ b/packages/tunnel/src/commands/tunnel/index.ts @@ -5,7 +5,7 @@ import { conditional } from '@silverhand/essentials'; import chalk from 'chalk'; import type { CommandModule } from 'yargs'; -import { consoleLog } from '../utils.js'; +import { consoleLog } from '../../utils.js'; import { type TunnelCommandArgs } from './types.js'; import { @@ -32,8 +32,7 @@ const tunnel: CommandModule = { type: 'string', }, endpoint: { - describe: - 'Logto endpoint URI that points to your Logto Cloud instance. E.g.: https://.logto.app/', + describe: `Logto endpoint URI that points to your Logto Cloud instance. E.g.: https://.logto.app/`, type: 'string', }, port: { @@ -48,11 +47,13 @@ const tunnel: CommandModule = { default: false, }, }), - handler: async ({ 'experience-uri': url, 'experience-path': path, endpoint, port, verbose }) => { - checkExperienceInput(url, path); + handler: async ({ 'experience-uri': uri, 'experience-path': path, endpoint, port, verbose }) => { + checkExperienceInput(uri, path); if (!endpoint || !isValidUrl(endpoint)) { - consoleLog.fatal('A valid Logto endpoint URI must be provided.'); + consoleLog.fatal( + 'A valid Logto endpoint URI must be provided. E.g. `--endpoint https://.logto.app/` or add `LOGTO_ENDPOINT` to your environment variables.' + ); } const logtoEndpointUrl = new URL(endpoint); @@ -71,7 +72,7 @@ const tunnel: CommandModule = { verbose, }) ); - const proxyExperienceServerRequest = conditional(url && createProxy(url)); + const proxyExperienceServerRequest = conditional(uri && createProxy(uri)); const proxyExperienceStaticFileRequest = conditional(path && createStaticFileProxy(path)); const server = http.createServer((request, response) => { @@ -95,24 +96,29 @@ const tunnel: CommandModule = { server.listen(port, () => { const serviceUrl = new URL(`http://localhost:${port}`); - consoleLog.info( - `🎉 Logto tunnel service is running! - ${chalk.green('➜')} Your custom sign-in UI is hosted on: ${chalk.blue(serviceUrl.href)} - - ${chalk.green('➜')} Don't forget to update Logto endpoint URI in your app: - - ${chalk.gray('From:')} ${chalk.bold(endpoint)} - ${chalk.gray('To:')} ${chalk.bold(serviceUrl.href)} - - ${chalk.green( - '➜' - )} If you are using social sign-in, make sure the social redirect URI is also set to: - - ${chalk.bold(`${serviceUrl.href}callback/`)} - - ${chalk.green('➜')} ${chalk.gray(`Press ${chalk.white('Ctrl+C')} to stop the tunnel service.`)} - ${chalk.green('➜')} ${chalk.gray(`Use ${chalk.white('--verbose')} to print verbose output.`)} - ` + consoleLog.plain(`${chalk.green('✔')} 🎉 Logto tunnel service is running!`); + consoleLog.plain(`${chalk.green('➜')} Your custom sign-in UI is hosted on:`); + consoleLog.plain(` ${chalk.blue(chalk.bold(serviceUrl.href))}`); + consoleLog.plain(`${chalk.green('➜')} Remember to update Logto endpoint URI in your app:`); + consoleLog.plain(` ${chalk.gray('From:')} ${chalk.blue(chalk.bold(endpoint))}`); + consoleLog.plain(` ${chalk.gray('To:')} ${chalk.blue(chalk.bold(serviceUrl.href))}`); + consoleLog.plain( + `${chalk.green( + '➜' + )} If you are using social sign-in, make sure the social redirect URI is also set to:` + ); + consoleLog.plain( + ` ${chalk.blue(chalk.bold(`${serviceUrl.href}callback/`))}\n` + ); + consoleLog.plain( + `${chalk.green('➜')} ${chalk.gray( + `Press ${chalk.white('Ctrl+C')} to stop the tunnel service.` + )}` + ); + consoleLog.plain( + `${chalk.green('➜')} ${chalk.gray( + `Use ${chalk.white('--verbose')} to print verbose output.` + )}` ); }); diff --git a/packages/tunnel/src/commands/types.ts b/packages/tunnel/src/commands/tunnel/types.ts similarity index 100% rename from packages/tunnel/src/commands/types.ts rename to packages/tunnel/src/commands/tunnel/types.ts diff --git a/packages/tunnel/src/commands/utils.test.ts b/packages/tunnel/src/commands/tunnel/utils.test.ts similarity index 100% rename from packages/tunnel/src/commands/utils.test.ts rename to packages/tunnel/src/commands/tunnel/utils.test.ts diff --git a/packages/tunnel/src/commands/utils.ts b/packages/tunnel/src/commands/tunnel/utils.ts similarity index 93% rename from packages/tunnel/src/commands/utils.ts rename to packages/tunnel/src/commands/tunnel/utils.ts index 14df1c442..035e201cc 100644 --- a/packages/tunnel/src/commands/utils.ts +++ b/packages/tunnel/src/commands/tunnel/utils.ts @@ -10,7 +10,7 @@ import { createProxyMiddleware, responseInterceptor } from 'http-proxy-middlewar import { type OnProxyEvent } from 'http-proxy-middleware/dist/types.js'; import mime from 'mime'; -import { consoleLog } from '../utils.js'; +import { consoleLog } from '../../utils.js'; import { type LogtoResponseHandler } from './types.js'; @@ -128,15 +128,17 @@ export const checkExperienceInput = (url?: string, staticPath?: string) => { consoleLog.fatal('Only one of the experience URI or path can be provided.'); } if (!staticPath && !url) { - consoleLog.fatal('Either a sign-in experience URI or local path must be provided.'); + consoleLog.fatal(`Either a sign-in experience URI or local path must be provided. + +Specify --help for available options`); } if (url && !isValidUrl(url)) { consoleLog.fatal( - 'A valid sign-in experience URI must be provided. E.g.: http://localhost:4000' + 'A valid sign-in experience URI must be provided. E.g. `--experience-uri http://localhost:4000` or add `LOGTO_EXPERIENCE_URI` to your environment variables.' ); } if (staticPath && !existsSync(path.join(staticPath, index))) { - consoleLog.fatal('The provided path does not contain a valid index.html file.'); + consoleLog.fatal('The provided path must contain a valid index.html file.'); } }; diff --git a/packages/tunnel/src/include.d/dom.d.ts b/packages/tunnel/src/include.d/dom.d.ts new file mode 100644 index 000000000..36ac3e0b4 --- /dev/null +++ b/packages/tunnel/src/include.d/dom.d.ts @@ -0,0 +1,3 @@ +interface Body { + json(): Promise; +} diff --git a/packages/tunnel/src/index.ts b/packages/tunnel/src/index.ts index 4a039fd2c..8a9151e53 100644 --- a/packages/tunnel/src/index.ts +++ b/packages/tunnel/src/index.ts @@ -1,27 +1,24 @@ import chalk from 'chalk'; import dotenv from 'dotenv'; +import { findUp } from 'find-up'; import yargs from 'yargs'; import { hideBin } from 'yargs/helpers'; -import tunnel from './commands/index.js'; +import deploy from './commands/deploy/index.js'; +import tunnel from './commands/tunnel/index.js'; import { packageJson } from './package-json.js'; import { consoleLog } from './utils.js'; +dotenv.config({ path: await findUp('.env', {}) }); + void yargs(hideBin(process.argv)) .version(false) - .option('env', { - alias: ['e', 'env-file'], - describe: 'The path to your `.env` file', - type: 'string', - }) + .env('LOGTO') .option('version', { alias: 'v', describe: 'Print CLI version', type: 'boolean', }) - .middleware(({ env }) => { - dotenv.config({ path: env }); - }) .middleware(({ version }) => { if (version) { consoleLog.plain(packageJson.name + ' v' + packageJson.version); @@ -30,9 +27,15 @@ void yargs(hideBin(process.argv)) } }, true) .command(tunnel) + .command(deploy) .showHelpOnFail(false, `Specify ${chalk.green('--help')} for available options`) - .strict() + .strictCommands() .parserConfiguration({ 'dot-notation': false, }) + .epilog( + `Refer to our documentation for more details:\n${chalk.blue( + 'https://docs.logto.io/docs/references/tunnel-cli' + )}` + ) .parse(); diff --git a/packages/tunnel/src/utils.ts b/packages/tunnel/src/utils.ts index 924cf0c7e..3970eb772 100644 --- a/packages/tunnel/src/utils.ts +++ b/packages/tunnel/src/utils.ts @@ -1,13 +1,3 @@ import { ConsoleLog } from '@logto/shared'; -// The explicit type annotation is required to make `.fatal()` -// works correctly without `return`: -// -// ```ts -// const foo: number | undefined; -// consoleLog.fatal(); -// typeof foo // Still `number | undefined` without explicit type annotation -// ``` -// -// For now I have no idea why. export const consoleLog: ConsoleLog = new ConsoleLog(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3f954bc57..200c1afef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -41,7 +41,7 @@ importers: version: 8.8.0 tsup: specifier: ^8.1.0 - 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) + 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) 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(@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) + 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) 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(@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) + 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) 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(@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) + 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) 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(@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) + 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) 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(@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) + 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) 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(@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) + 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) 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(@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) + 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) 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(@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) + 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) 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(@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) + 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) 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(@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) + 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) 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(@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) + 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) 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(@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) + 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) 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(@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) + 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) 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(@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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -1126,7 +1126,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -1184,7 +1184,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -1242,7 +1242,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -1303,7 +1303,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -1361,7 +1361,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -1419,7 +1419,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -1477,7 +1477,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -1535,7 +1535,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -1593,7 +1593,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -1651,7 +1651,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -1709,7 +1709,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -1767,7 +1767,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -1834,7 +1834,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -1904,7 +1904,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -1962,7 +1962,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) 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(@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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -2081,7 +2081,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -2139,7 +2139,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -2197,7 +2197,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -2261,7 +2261,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -2319,7 +2319,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -2377,7 +2377,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -2435,7 +2435,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -2493,7 +2493,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -2551,7 +2551,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -3134,7 +3134,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(@swc/helpers@0.5.1))(@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)(@types/node@20.10.4)(typescript@5.5.3)) jest-matcher-specific-error: specifier: ^1.0.0 version: 1.0.0 @@ -3164,7 +3164,7 @@ importers: version: 7.0.0 tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -3309,7 +3309,7 @@ importers: version: 3.0.0 tsup: specifier: ^8.1.0 - 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) + 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) packages/experience: devDependencies: @@ -3577,7 +3577,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(@swc/helpers@0.5.1))(@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)(@types/node@20.10.4)(typescript@5.5.3)) jest-matcher-specific-error: specifier: ^1.0.0 version: 1.0.0 @@ -3604,7 +3604,7 @@ importers: version: 22.6.5(typescript@5.5.3) tsup: specifier: ^8.1.0 - 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) + 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) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -4044,18 +4044,27 @@ importers: '@silverhand/essentials': specifier: ^2.9.1 version: 2.9.1 + adm-zip: + specifier: ^0.5.14 + version: 0.5.14 chalk: specifier: ^5.3.0 version: 5.3.0 dotenv: specifier: ^16.4.5 version: 16.4.5 + find-up: + specifier: ^7.0.0 + version: 7.0.0 http-proxy-middleware: specifier: ^3.0.0 version: 3.0.0 mime: specifier: ^4.0.4 version: 4.0.4 + ora: + specifier: ^8.0.1 + version: 8.0.1 yargs: specifier: ^17.6.0 version: 17.7.2 @@ -4069,6 +4078,9 @@ importers: '@silverhand/ts-config': specifier: 6.0.0 version: 6.0.0(typescript@5.5.3) + '@types/adm-zip': + specifier: ^0.5.5 + version: 0.5.5 '@types/node': specifier: ^20.9.5 version: 20.12.7 @@ -14649,7 +14661,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.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 @@ -14663,7 +14675,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.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 @@ -14684,7 +14696,7 @@ snapshots: - supports-color - ts-node - '@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)(@types/node@20.10.4)(typescript@5.5.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -14698,7 +14710,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)(@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 @@ -15438,7 +15450,7 @@ snapshots: eslint-config-prettier: 9.1.0(eslint@8.57.0) eslint-config-xo: 0.44.0(eslint@8.57.0) eslint-config-xo-typescript: 4.0.0(@typescript-eslint/eslint-plugin@7.7.0(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3))(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3) - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-consistent-default-export-name: 0.0.15 eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) @@ -17586,13 +17598,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(@swc/helpers@0.5.1))(@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)(@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(@swc/helpers@0.5.1))(@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)(@types/node@20.10.4)(typescript@5.5.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -18386,12 +18398,12 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 4.3.5 enhanced-resolve: 5.16.0 eslint: 8.57.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.3 @@ -18403,14 +18415,14 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 3.2.7(supports-color@5.5.0) optionalDependencies: '@typescript-eslint/parser': 7.7.0(eslint@8.57.0)(typescript@5.5.3) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0) transitivePeerDependencies: - supports-color @@ -18442,7 +18454,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -19921,16 +19933,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(@swc/helpers@0.5.1))(@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)(@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(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3)) + '@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/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(@swc/helpers@0.5.1))(@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)(@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(@swc/helpers@0.5.1))(@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)(@types/node@20.10.4)(typescript@5.5.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -19959,7 +19971,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(@swc/helpers@0.5.1))(@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)(@types/node@20.10.4)(typescript@5.5.3)): dependencies: '@babel/core': 7.24.4 '@jest/test-sequencer': 29.7.0 @@ -19985,38 +19997,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@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: - - 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) + 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 @@ -20052,6 +20033,37 @@ 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 @@ -20360,12 +20372,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(@swc/helpers@0.5.1))(@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)(@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(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3)) + '@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/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(@swc/helpers@0.5.1))(@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)(@types/node@20.10.4)(typescript@5.5.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -22299,31 +22311,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(@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.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(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3) + 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.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.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(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3) + 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.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.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(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.0.2) + 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.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.5.3)): dependencies: lilconfig: 3.1.2 yaml: 2.4.5 @@ -23890,7 +23902,28 @@ 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.10.4)(typescript@5.5.3): + 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.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.12.7 + acorn: 8.11.3 + acorn-walk: 8.3.2 + 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: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -23911,7 +23944,7 @@ 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.11.20)(typescript@5.5.3): + ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -23932,7 +23965,7 @@ 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.0.2): + ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.0.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -23953,27 +23986,6 @@ 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.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.12.7 - acorn: 8.11.3 - acorn-walk: 8.3.2 - 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 @@ -23991,7 +24003,7 @@ snapshots: tsscmp@1.0.6: {} - 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): + 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): dependencies: bundle-require: 4.2.1(esbuild@0.21.5) cac: 6.7.14 @@ -24001,7 +24013,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(@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.10.4)(typescript@5.5.3)) resolve-from: 5.0.0 rollup: 4.14.3 source-map: 0.8.0-beta.0 @@ -24015,7 +24027,7 @@ snapshots: - supports-color - ts-node - 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): + 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): dependencies: bundle-require: 4.2.1(esbuild@0.21.5) cac: 6.7.14 @@ -24025,7 +24037,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(@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.11.20)(typescript@5.5.3)) resolve-from: 5.0.0 rollup: 4.14.3 source-map: 0.8.0-beta.0 @@ -24039,7 +24051,7 @@ snapshots: - supports-color - ts-node - 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): + 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): dependencies: bundle-require: 4.2.1(esbuild@0.21.5) cac: 6.7.14 @@ -24049,7 +24061,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(@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.0.2)) resolve-from: 5.0.0 rollup: 4.14.3 source-map: 0.8.0-beta.0 @@ -24063,7 +24075,7 @@ snapshots: - supports-color - ts-node - 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): + 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): dependencies: bundle-require: 4.2.1(esbuild@0.21.5) cac: 6.7.14 @@ -24073,7 +24085,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(@swc/helpers@0.5.1))(@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)(@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