mirror of
https://github.com/logto-io/logto.git
synced 2024-12-30 20:33:54 -05:00
refactor(tunnel): split tunnel cli and make it a standalone package (#6512)
This commit is contained in:
parent
83a72dc3a5
commit
1e35d1afb4
16 changed files with 276 additions and 79 deletions
|
@ -1,27 +1,35 @@
|
||||||
---
|
---
|
||||||
"@logto/cli": minor
|
"@logto/tunnel": minor
|
||||||
---
|
---
|
||||||
|
|
||||||
add new cli command to setup Logto tunnel service for developing and debugging custom ui on your local machine
|
add new cli command to setup Logto tunnel service for developing and debugging custom ui on your local machine
|
||||||
|
|
||||||
This command will establish a tunnel service between the following 3 entities: Logto cloud auth services, your application, and your custom sign-in UI.
|
This command will establish a tunnel service between the following 3 entities: Logto cloud auth services, your application, and your custom sign-in UI.
|
||||||
|
|
||||||
|
#### Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm i @logto/tunnel -g
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Usage
|
||||||
|
|
||||||
Assuming you have a custom sign-in page running on `http://localhost:4000`, then you can execute the command this way:
|
Assuming you have a custom sign-in page running on `http://localhost:4000`, then you can execute the command this way:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
logto tunnel --endpoint https://<tenant-id>.logto.app --port 9000 --experience-uri http://localhost:4000
|
logto-tunnel --endpoint https://<tenant-id>.logto.app --port 9000 --experience-uri http://localhost:4000
|
||||||
```
|
```
|
||||||
|
|
||||||
Or if you don't have your custom UI pages hosted on a dev server, you can use the `--experience-path` option to specify the path to your static files:
|
Or if you don't have your custom UI pages hosted on a dev server, you can use the `--experience-path` option to specify the path to your static files:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
logto tunnel --endpoint https://<tenant-id>.logto.app --port 9000 --experience-path /path/to/your/custom/ui
|
logto-tunnel --endpoint https://<tenant-id>.logto.app --port 9000 --experience-path /path/to/your/custom/ui
|
||||||
```
|
```
|
||||||
|
|
||||||
This command also works if you have enabled custom domain in your Logto tenant. E.g.:
|
This command also works if you have enabled custom domain in your Logto tenant. E.g.:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
logto tunnel --endpoint https://your-custom-domain.com --port 9000 --experience-path /path/to/your/custom/ui
|
logto-tunnel --endpoint https://your-custom-domain.com --port 9000 --experience-path /path/to/your/custom/ui
|
||||||
```
|
```
|
||||||
|
|
||||||
This should set up the tunnel and it will be running on your local machine at `http://localhost:9000/`.
|
This should set up the tunnel and it will be running on your local machine at `http://localhost:9000/`.
|
||||||
|
@ -30,4 +38,4 @@ Finally, run your application and set its endpoint in Logto config to the tunnel
|
||||||
|
|
||||||
If all set up correctly, when you click the "sign-in" button in your application, you should be navigated to your custom sign-in page instead of Logto's built-in UI, along with valid session (cookies) that allows you to further interact with Logto experience API.
|
If all set up correctly, when you click the "sign-in" button in your application, you should be navigated to your custom sign-in page instead of Logto's built-in UI, along with valid session (cookies) that allows you to further interact with Logto experience API.
|
||||||
|
|
||||||
Refer to the [documentation](https://docs.logto.dev/docs/references/using-cli/tunnel/) for more details.
|
Refer to [Logto tunnel documentation](https://docs.logto.dev/docs/references/tunnel-cli/) for more details.
|
||||||
|
|
|
@ -7,7 +7,7 @@ const config: UserConfig = {
|
||||||
extends: ['@commitlint/config-conventional'],
|
extends: ['@commitlint/config-conventional'],
|
||||||
rules: {
|
rules: {
|
||||||
'type-enum': [2, 'always', [...conventional.rules['type-enum'][2], 'api', 'release']],
|
'type-enum': [2, 'always', [...conventional.rules['type-enum'][2], 'api', 'release']],
|
||||||
'scope-enum': [2, 'always', ['connector', 'console', 'core', 'demo-app', 'test', 'phrases', 'schemas', 'shared', 'experience', 'deps', 'deps-dev', 'cli', 'toolkit', 'cloud', 'app-insights', 'elements', 'translate']],
|
'scope-enum': [2, 'always', ['connector', 'console', 'core', 'demo-app', 'test', 'phrases', 'schemas', 'shared', 'experience', 'deps', 'deps-dev', 'cli', 'toolkit', 'cloud', 'app-insights', 'elements', 'translate', 'tunnel']],
|
||||||
// Slightly increase the tolerance to allow the appending PR number
|
// Slightly increase the tolerance to allow the appending PR number
|
||||||
...(isCi && { 'header-max-length': [2, 'always', 110] }),
|
...(isCi && { 'header-max-length': [2, 'always', 110] }),
|
||||||
'body-max-line-length': [2, 'always', 110],
|
'body-max-line-length': [2, 'always', 110],
|
||||||
|
|
|
@ -53,9 +53,7 @@
|
||||||
"dotenv": "^16.4.5",
|
"dotenv": "^16.4.5",
|
||||||
"got": "^14.0.0",
|
"got": "^14.0.0",
|
||||||
"hpagent": "^1.2.0",
|
"hpagent": "^1.2.0",
|
||||||
"http-proxy-middleware": "^3.0.0",
|
|
||||||
"inquirer": "^9.0.0",
|
"inquirer": "^9.0.0",
|
||||||
"mime": "^4.0.4",
|
|
||||||
"nanoid": "^5.0.1",
|
"nanoid": "^5.0.1",
|
||||||
"ora": "^8.0.1",
|
"ora": "^8.0.1",
|
||||||
"p-limit": "^6.0.0",
|
"p-limit": "^6.0.0",
|
||||||
|
|
|
@ -6,7 +6,6 @@ import { hideBin } from 'yargs/helpers';
|
||||||
import connector from './commands/connector/index.js';
|
import connector from './commands/connector/index.js';
|
||||||
import database from './commands/database/index.js';
|
import database from './commands/database/index.js';
|
||||||
import install from './commands/install/index.js';
|
import install from './commands/install/index.js';
|
||||||
import tunnel from './commands/tunnel/index.js';
|
|
||||||
import { packageJson } from './package-json.js';
|
import { packageJson } from './package-json.js';
|
||||||
import { cliConfig, ConfigKey, consoleLog } from './utils.js';
|
import { cliConfig, ConfigKey, consoleLog } from './utils.js';
|
||||||
|
|
||||||
|
@ -47,7 +46,6 @@ void yargs(hideBin(process.argv))
|
||||||
.command(install)
|
.command(install)
|
||||||
.command(database)
|
.command(database)
|
||||||
.command(connector)
|
.command(connector)
|
||||||
.command(tunnel)
|
|
||||||
.demandCommand(1)
|
.demandCommand(1)
|
||||||
.showHelpOnFail(false, `Specify ${chalk.green('--help')} for available options`)
|
.showHelpOnFail(false, `Specify ${chalk.green('--help')} for available options`)
|
||||||
.strict()
|
.strict()
|
||||||
|
|
1
packages/tunnel/.gitignore
vendored
Normal file
1
packages/tunnel/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
src/package-json.ts
|
3
packages/tunnel/bin/index.js
Executable file
3
packages/tunnel/bin/index.js
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
// eslint-disable-next-line import/no-unassigned-import
|
||||||
|
import '../lib/index.js';
|
76
packages/tunnel/package.json
Normal file
76
packages/tunnel/package.json
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
{
|
||||||
|
"name": "@logto/tunnel",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"description": "A CLI tool that creates tunnel service to Logto Cloud for local development.",
|
||||||
|
"author": "Silverhand Inc. <contact@silverhand.io>",
|
||||||
|
"homepage": "https://github.com/logto-io/logto#readme",
|
||||||
|
"license": "MPL-2.0",
|
||||||
|
"type": "module",
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
},
|
||||||
|
"main": "lib/index.js",
|
||||||
|
"bin": {
|
||||||
|
"logto-tunnel": "bin/index.js"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"bin",
|
||||||
|
"lib"
|
||||||
|
],
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/logto-io/logto.git"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"precommit": "lint-staged",
|
||||||
|
"prepare:package-json": "node -p \"'export const packageJson = ' + JSON.stringify(require('./package.json'), undefined, 2) + ';'\" > src/package-json.ts",
|
||||||
|
"build": "rm -rf lib && pnpm prepare:package-json && tsc -p tsconfig.build.json",
|
||||||
|
"dev": "tsc -p tsconfig.build.json --watch --preserveWatchOutput --incremental",
|
||||||
|
"start": "node .",
|
||||||
|
"start:dev": "pnpm build && node .",
|
||||||
|
"lint": "eslint --ext .ts src",
|
||||||
|
"lint:report": "pnpm lint --format json --output-file report.json",
|
||||||
|
"test": "vitest src",
|
||||||
|
"test:ci": "pnpm run test --silent --coverage",
|
||||||
|
"prepack": "pnpm build"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^20.9.0"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/logto-io/logto/issues"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@logto/core-kit": "workspace:^",
|
||||||
|
"@logto/shared": "workspace:^",
|
||||||
|
"@silverhand/essentials": "^2.9.1",
|
||||||
|
"chalk": "^5.3.0",
|
||||||
|
"dotenv": "^16.4.5",
|
||||||
|
"http-proxy-middleware": "^3.0.0",
|
||||||
|
"mime": "^4.0.4",
|
||||||
|
"yargs": "^17.6.0",
|
||||||
|
"zod": "^3.23.8"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@silverhand/eslint-config": "6.0.1",
|
||||||
|
"@silverhand/ts-config": "6.0.0",
|
||||||
|
"@types/node": "^20.9.5",
|
||||||
|
"@types/yargs": "^17.0.13",
|
||||||
|
"@vitest/coverage-v8": "^2.0.0",
|
||||||
|
"eslint": "^8.56.0",
|
||||||
|
"lint-staged": "^15.0.0",
|
||||||
|
"prettier": "^3.0.0",
|
||||||
|
"typescript": "^5.5.3",
|
||||||
|
"vitest": "^2.0.0"
|
||||||
|
},
|
||||||
|
"eslintConfig": {
|
||||||
|
"extends": "@silverhand",
|
||||||
|
"rules": {
|
||||||
|
"no-console": "error"
|
||||||
|
},
|
||||||
|
"ignorePatterns": [
|
||||||
|
"src/package-json.ts"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"prettier": "@silverhand/eslint-config/.prettierrc"
|
||||||
|
}
|
|
@ -5,7 +5,7 @@ import { conditional } from '@silverhand/essentials';
|
||||||
import chalk from 'chalk';
|
import chalk from 'chalk';
|
||||||
import type { CommandModule } from 'yargs';
|
import type { CommandModule } from 'yargs';
|
||||||
|
|
||||||
import { consoleLog } from '../../utils.js';
|
import { consoleLog } from '../utils.js';
|
||||||
|
|
||||||
import { type TunnelCommandArgs } from './types.js';
|
import { type TunnelCommandArgs } from './types.js';
|
||||||
import {
|
import {
|
||||||
|
@ -17,42 +17,37 @@ import {
|
||||||
} from './utils.js';
|
} from './utils.js';
|
||||||
|
|
||||||
const tunnel: CommandModule<unknown, TunnelCommandArgs> = {
|
const tunnel: CommandModule<unknown, TunnelCommandArgs> = {
|
||||||
command: ['tunnel'],
|
command: ['$0'],
|
||||||
describe: 'Command for Logto tunnel',
|
describe: 'Command for Logto tunnel',
|
||||||
builder: (yargs) =>
|
builder: (yargs) =>
|
||||||
yargs
|
yargs.options({
|
||||||
.options({
|
'experience-uri': {
|
||||||
'experience-uri': {
|
alias: ['uri'],
|
||||||
alias: ['uri'],
|
describe: 'The URI of your custom sign-in experience page.',
|
||||||
describe: 'The URI of your custom sign-in experience page.',
|
type: 'string',
|
||||||
type: 'string',
|
},
|
||||||
},
|
'experience-path': {
|
||||||
'experience-path': {
|
alias: ['path'],
|
||||||
alias: ['path'],
|
describe: 'The local folder path of your custom sign-in experience assets.',
|
||||||
describe: 'The local folder path of your custom sign-in experience assets.',
|
type: 'string',
|
||||||
type: 'string',
|
},
|
||||||
},
|
endpoint: {
|
||||||
endpoint: {
|
describe:
|
||||||
describe:
|
'Logto endpoint URI that points to your Logto Cloud instance. E.g.: https://<tenant-id>.logto.app/',
|
||||||
'Logto endpoint URI that points to your Logto Cloud instance. E.g.: https://<tenant-id>.logto.app/',
|
type: 'string',
|
||||||
type: 'string',
|
},
|
||||||
},
|
port: {
|
||||||
port: {
|
alias: 'p',
|
||||||
alias: 'p',
|
describe: 'The port number where the tunnel service will be running on. Defaults to 9000.',
|
||||||
describe:
|
type: 'number',
|
||||||
'The port number where the tunnel service will be running on. Defaults to 9000.',
|
default: 9000,
|
||||||
type: 'number',
|
},
|
||||||
default: 9000,
|
verbose: {
|
||||||
},
|
describe: 'Show verbose output.',
|
||||||
verbose: {
|
type: 'boolean',
|
||||||
alias: 'v',
|
default: false,
|
||||||
describe: 'Show verbose output.',
|
},
|
||||||
type: 'boolean',
|
}),
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
.global('e')
|
|
||||||
.hide('db'),
|
|
||||||
handler: async ({ 'experience-uri': url, 'experience-path': path, endpoint, port, verbose }) => {
|
handler: async ({ 'experience-uri': url, 'experience-path': path, endpoint, port, verbose }) => {
|
||||||
checkExperienceInput(url, path);
|
checkExperienceInput(url, path);
|
||||||
|
|
||||||
|
@ -116,9 +111,7 @@ const tunnel: CommandModule<unknown, TunnelCommandArgs> = {
|
||||||
${chalk.bold(`${serviceUrl.href}callback/<connector-id>`)}
|
${chalk.bold(`${serviceUrl.href}callback/<connector-id>`)}
|
||||||
|
|
||||||
${chalk.green('➜')} ${chalk.gray(`Press ${chalk.white('Ctrl+C')} to stop the tunnel service.`)}
|
${chalk.green('➜')} ${chalk.gray(`Press ${chalk.white('Ctrl+C')} to stop the tunnel service.`)}
|
||||||
${chalk.green('➜')} ${chalk.gray(
|
${chalk.green('➜')} ${chalk.gray(`Use ${chalk.white('--verbose')} to print verbose output.`)}
|
||||||
`Use ${chalk.white('-v')} or ${chalk.white('--verbose')} to print verbose output.`
|
|
||||||
)}
|
|
||||||
`
|
`
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -129,7 +122,7 @@ const tunnel: CommandModule<unknown, TunnelCommandArgs> = {
|
||||||
startServer(port + 1);
|
startServer(port + 1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
consoleLog.fatal(`Tunnel server failed to start. ${error.message}`);
|
consoleLog.fatal(`Tunnel service failed to start. ${error.message}`);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,7 +10,7 @@ import { createProxyMiddleware, responseInterceptor } from 'http-proxy-middlewar
|
||||||
import { type OnProxyEvent } from 'http-proxy-middleware/dist/types.js';
|
import { type OnProxyEvent } from 'http-proxy-middleware/dist/types.js';
|
||||||
import mime from 'mime';
|
import mime from 'mime';
|
||||||
|
|
||||||
import { consoleLog } from '../../utils.js';
|
import { consoleLog } from '../utils.js';
|
||||||
|
|
||||||
import { type LogtoResponseHandler } from './types.js';
|
import { type LogtoResponseHandler } from './types.js';
|
||||||
|
|
38
packages/tunnel/src/index.ts
Normal file
38
packages/tunnel/src/index.ts
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
import chalk from 'chalk';
|
||||||
|
import dotenv from 'dotenv';
|
||||||
|
import yargs from 'yargs';
|
||||||
|
import { hideBin } from 'yargs/helpers';
|
||||||
|
|
||||||
|
import tunnel from './commands/index.js';
|
||||||
|
import { packageJson } from './package-json.js';
|
||||||
|
import { consoleLog } from './utils.js';
|
||||||
|
|
||||||
|
void yargs(hideBin(process.argv))
|
||||||
|
.version(false)
|
||||||
|
.option('env', {
|
||||||
|
alias: ['e', 'env-file'],
|
||||||
|
describe: 'The path to your `.env` file',
|
||||||
|
type: 'string',
|
||||||
|
})
|
||||||
|
.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);
|
||||||
|
// eslint-disable-next-line unicorn/no-process-exit
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
}, true)
|
||||||
|
.command(tunnel)
|
||||||
|
.showHelpOnFail(false, `Specify ${chalk.green('--help')} for available options`)
|
||||||
|
.strict()
|
||||||
|
.parserConfiguration({
|
||||||
|
'dot-notation': false,
|
||||||
|
})
|
||||||
|
.parse();
|
13
packages/tunnel/src/utils.ts
Normal file
13
packages/tunnel/src/utils.ts
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
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();
|
4
packages/tunnel/tsconfig.build.json
Normal file
4
packages/tunnel/tsconfig.build.json
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"extends": "./tsconfig",
|
||||||
|
"include": ["src"],
|
||||||
|
}
|
10
packages/tunnel/tsconfig.json
Normal file
10
packages/tunnel/tsconfig.json
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"extends": "@silverhand/ts-config/tsconfig.base",
|
||||||
|
"compilerOptions": {
|
||||||
|
"outDir": "lib",
|
||||||
|
"types": ["node"]
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"src"
|
||||||
|
]
|
||||||
|
}
|
113
pnpm-lock.yaml
113
pnpm-lock.yaml
|
@ -124,15 +124,9 @@ importers:
|
||||||
hpagent:
|
hpagent:
|
||||||
specifier: ^1.2.0
|
specifier: ^1.2.0
|
||||||
version: 1.2.0
|
version: 1.2.0
|
||||||
http-proxy-middleware:
|
|
||||||
specifier: ^3.0.0
|
|
||||||
version: 3.0.0
|
|
||||||
inquirer:
|
inquirer:
|
||||||
specifier: ^9.0.0
|
specifier: ^9.0.0
|
||||||
version: 9.1.4
|
version: 9.1.4
|
||||||
mime:
|
|
||||||
specifier: ^4.0.4
|
|
||||||
version: 4.0.4
|
|
||||||
nanoid:
|
nanoid:
|
||||||
specifier: ^5.0.1
|
specifier: ^5.0.1
|
||||||
version: 5.0.1
|
version: 5.0.1
|
||||||
|
@ -3905,6 +3899,67 @@ importers:
|
||||||
specifier: ^3.0.0
|
specifier: ^3.0.0
|
||||||
version: 3.0.0
|
version: 3.0.0
|
||||||
|
|
||||||
|
packages/tunnel:
|
||||||
|
dependencies:
|
||||||
|
'@logto/core-kit':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../toolkit/core-kit
|
||||||
|
'@logto/shared':
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../shared
|
||||||
|
'@silverhand/essentials':
|
||||||
|
specifier: ^2.9.1
|
||||||
|
version: 2.9.1
|
||||||
|
chalk:
|
||||||
|
specifier: ^5.3.0
|
||||||
|
version: 5.3.0
|
||||||
|
dotenv:
|
||||||
|
specifier: ^16.4.5
|
||||||
|
version: 16.4.5
|
||||||
|
http-proxy-middleware:
|
||||||
|
specifier: ^3.0.0
|
||||||
|
version: 3.0.0
|
||||||
|
mime:
|
||||||
|
specifier: ^4.0.4
|
||||||
|
version: 4.0.4
|
||||||
|
yargs:
|
||||||
|
specifier: ^17.6.0
|
||||||
|
version: 17.7.2
|
||||||
|
zod:
|
||||||
|
specifier: ^3.23.8
|
||||||
|
version: 3.23.8
|
||||||
|
devDependencies:
|
||||||
|
'@silverhand/eslint-config':
|
||||||
|
specifier: 6.0.1
|
||||||
|
version: 6.0.1(eslint@8.57.0)(prettier@3.0.0)(typescript@5.5.3)
|
||||||
|
'@silverhand/ts-config':
|
||||||
|
specifier: 6.0.0
|
||||||
|
version: 6.0.0(typescript@5.5.3)
|
||||||
|
'@types/node':
|
||||||
|
specifier: ^20.9.5
|
||||||
|
version: 20.12.7
|
||||||
|
'@types/yargs':
|
||||||
|
specifier: ^17.0.13
|
||||||
|
version: 17.0.13
|
||||||
|
'@vitest/coverage-v8':
|
||||||
|
specifier: ^2.0.0
|
||||||
|
version: 2.0.0(vitest@2.0.0(@types/node@20.12.7)(happy-dom@14.12.3)(jsdom@20.0.2)(lightningcss@1.25.1)(sass@1.77.8))
|
||||||
|
eslint:
|
||||||
|
specifier: ^8.56.0
|
||||||
|
version: 8.57.0
|
||||||
|
lint-staged:
|
||||||
|
specifier: ^15.0.0
|
||||||
|
version: 15.0.2
|
||||||
|
prettier:
|
||||||
|
specifier: ^3.0.0
|
||||||
|
version: 3.0.0
|
||||||
|
typescript:
|
||||||
|
specifier: ^5.5.3
|
||||||
|
version: 5.5.3
|
||||||
|
vitest:
|
||||||
|
specifier: ^2.0.0
|
||||||
|
version: 2.0.0(@types/node@20.12.7)(happy-dom@14.12.3)(jsdom@20.0.2)(lightningcss@1.25.1)(sass@1.77.8)
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
|
||||||
'@75lb/deep-merge@1.1.1':
|
'@75lb/deep-merge@1.1.1':
|
||||||
|
@ -13567,10 +13622,10 @@ snapshots:
|
||||||
'@babel/helper-compilation-targets': 7.23.6
|
'@babel/helper-compilation-targets': 7.23.6
|
||||||
'@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4)
|
'@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4)
|
||||||
'@babel/helpers': 7.24.4
|
'@babel/helpers': 7.24.4
|
||||||
'@babel/parser': 7.24.4
|
'@babel/parser': 7.24.8
|
||||||
'@babel/template': 7.24.0
|
'@babel/template': 7.24.0
|
||||||
'@babel/traverse': 7.24.1
|
'@babel/traverse': 7.24.1
|
||||||
'@babel/types': 7.24.0
|
'@babel/types': 7.24.9
|
||||||
convert-source-map: 2.0.0
|
convert-source-map: 2.0.0
|
||||||
debug: 4.3.5
|
debug: 4.3.5
|
||||||
gensync: 1.0.0-beta.2
|
gensync: 1.0.0-beta.2
|
||||||
|
@ -13601,7 +13656,7 @@ snapshots:
|
||||||
|
|
||||||
'@babel/generator@7.20.4':
|
'@babel/generator@7.20.4':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/types': 7.24.0
|
'@babel/types': 7.24.9
|
||||||
'@jridgewell/gen-mapping': 0.3.5
|
'@jridgewell/gen-mapping': 0.3.5
|
||||||
jsesc: 2.5.2
|
jsesc: 2.5.2
|
||||||
|
|
||||||
|
@ -13614,7 +13669,7 @@ snapshots:
|
||||||
|
|
||||||
'@babel/generator@7.24.4':
|
'@babel/generator@7.24.4':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/types': 7.24.0
|
'@babel/types': 7.24.9
|
||||||
'@jridgewell/gen-mapping': 0.3.5
|
'@jridgewell/gen-mapping': 0.3.5
|
||||||
'@jridgewell/trace-mapping': 0.3.25
|
'@jridgewell/trace-mapping': 0.3.25
|
||||||
jsesc: 2.5.2
|
jsesc: 2.5.2
|
||||||
|
@ -13644,7 +13699,7 @@ snapshots:
|
||||||
'@babel/helper-function-name@7.23.0':
|
'@babel/helper-function-name@7.23.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/template': 7.24.0
|
'@babel/template': 7.24.0
|
||||||
'@babel/types': 7.24.0
|
'@babel/types': 7.24.9
|
||||||
|
|
||||||
'@babel/helper-function-name@7.24.7':
|
'@babel/helper-function-name@7.24.7':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -13653,7 +13708,7 @@ snapshots:
|
||||||
|
|
||||||
'@babel/helper-hoist-variables@7.22.5':
|
'@babel/helper-hoist-variables@7.22.5':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/types': 7.24.0
|
'@babel/types': 7.24.9
|
||||||
|
|
||||||
'@babel/helper-hoist-variables@7.24.7':
|
'@babel/helper-hoist-variables@7.24.7':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -13661,7 +13716,7 @@ snapshots:
|
||||||
|
|
||||||
'@babel/helper-module-imports@7.24.3':
|
'@babel/helper-module-imports@7.24.3':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/types': 7.24.0
|
'@babel/types': 7.24.9
|
||||||
|
|
||||||
'@babel/helper-module-imports@7.24.7':
|
'@babel/helper-module-imports@7.24.7':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -13677,7 +13732,7 @@ snapshots:
|
||||||
'@babel/helper-module-imports': 7.24.3
|
'@babel/helper-module-imports': 7.24.3
|
||||||
'@babel/helper-simple-access': 7.22.5
|
'@babel/helper-simple-access': 7.22.5
|
||||||
'@babel/helper-split-export-declaration': 7.22.6
|
'@babel/helper-split-export-declaration': 7.22.6
|
||||||
'@babel/helper-validator-identifier': 7.22.20
|
'@babel/helper-validator-identifier': 7.24.7
|
||||||
|
|
||||||
'@babel/helper-module-transforms@7.24.9(@babel/core@7.24.9)':
|
'@babel/helper-module-transforms@7.24.9(@babel/core@7.24.9)':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -13696,7 +13751,7 @@ snapshots:
|
||||||
|
|
||||||
'@babel/helper-simple-access@7.22.5':
|
'@babel/helper-simple-access@7.22.5':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/types': 7.24.0
|
'@babel/types': 7.24.9
|
||||||
|
|
||||||
'@babel/helper-simple-access@7.24.7':
|
'@babel/helper-simple-access@7.24.7':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -13707,7 +13762,7 @@ snapshots:
|
||||||
|
|
||||||
'@babel/helper-split-export-declaration@7.22.6':
|
'@babel/helper-split-export-declaration@7.22.6':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/types': 7.24.0
|
'@babel/types': 7.24.9
|
||||||
|
|
||||||
'@babel/helper-split-export-declaration@7.24.7':
|
'@babel/helper-split-export-declaration@7.24.7':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -13729,7 +13784,7 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/template': 7.24.0
|
'@babel/template': 7.24.0
|
||||||
'@babel/traverse': 7.24.1
|
'@babel/traverse': 7.24.1
|
||||||
'@babel/types': 7.24.0
|
'@babel/types': 7.24.9
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
@ -13861,14 +13916,14 @@ snapshots:
|
||||||
'@babel/template@7.18.10':
|
'@babel/template@7.18.10':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/code-frame': 7.22.5
|
'@babel/code-frame': 7.22.5
|
||||||
'@babel/parser': 7.24.4
|
'@babel/parser': 7.24.8
|
||||||
'@babel/types': 7.24.0
|
'@babel/types': 7.24.9
|
||||||
|
|
||||||
'@babel/template@7.24.0':
|
'@babel/template@7.24.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/code-frame': 7.24.2
|
'@babel/code-frame': 7.24.2
|
||||||
'@babel/parser': 7.24.4
|
'@babel/parser': 7.24.8
|
||||||
'@babel/types': 7.24.0
|
'@babel/types': 7.24.9
|
||||||
|
|
||||||
'@babel/template@7.24.7':
|
'@babel/template@7.24.7':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -13884,8 +13939,8 @@ snapshots:
|
||||||
'@babel/helper-function-name': 7.23.0
|
'@babel/helper-function-name': 7.23.0
|
||||||
'@babel/helper-hoist-variables': 7.22.5
|
'@babel/helper-hoist-variables': 7.22.5
|
||||||
'@babel/helper-split-export-declaration': 7.22.6
|
'@babel/helper-split-export-declaration': 7.22.6
|
||||||
'@babel/parser': 7.24.4
|
'@babel/parser': 7.24.8
|
||||||
'@babel/types': 7.24.0
|
'@babel/types': 7.24.9
|
||||||
debug: 4.3.5
|
debug: 4.3.5
|
||||||
globals: 11.12.0
|
globals: 11.12.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
|
@ -14349,7 +14404,7 @@ snapshots:
|
||||||
'@eslint/eslintrc@2.1.4':
|
'@eslint/eslintrc@2.1.4':
|
||||||
dependencies:
|
dependencies:
|
||||||
ajv: 6.12.6
|
ajv: 6.12.6
|
||||||
debug: 4.3.4
|
debug: 4.3.5
|
||||||
espree: 9.6.1
|
espree: 9.6.1
|
||||||
globals: 13.20.0
|
globals: 13.20.0
|
||||||
ignore: 5.3.1
|
ignore: 5.3.1
|
||||||
|
@ -15865,8 +15920,8 @@ snapshots:
|
||||||
|
|
||||||
'@types/babel__core@7.1.19':
|
'@types/babel__core@7.1.19':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/parser': 7.24.4
|
'@babel/parser': 7.24.8
|
||||||
'@babel/types': 7.24.0
|
'@babel/types': 7.24.9
|
||||||
'@types/babel__generator': 7.6.4
|
'@types/babel__generator': 7.6.4
|
||||||
'@types/babel__template': 7.4.1
|
'@types/babel__template': 7.4.1
|
||||||
'@types/babel__traverse': 7.18.2
|
'@types/babel__traverse': 7.18.2
|
||||||
|
@ -16889,7 +16944,7 @@ snapshots:
|
||||||
babel-plugin-jest-hoist@29.6.3:
|
babel-plugin-jest-hoist@29.6.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/template': 7.18.10
|
'@babel/template': 7.18.10
|
||||||
'@babel/types': 7.24.0
|
'@babel/types': 7.24.9
|
||||||
'@types/babel__core': 7.1.19
|
'@types/babel__core': 7.1.19
|
||||||
'@types/babel__traverse': 7.18.2
|
'@types/babel__traverse': 7.18.2
|
||||||
|
|
||||||
|
@ -19630,7 +19685,7 @@ snapshots:
|
||||||
istanbul-lib-instrument@5.2.1:
|
istanbul-lib-instrument@5.2.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/core': 7.24.4
|
'@babel/core': 7.24.4
|
||||||
'@babel/parser': 7.24.4
|
'@babel/parser': 7.24.8
|
||||||
'@istanbuljs/schema': 0.1.3
|
'@istanbuljs/schema': 0.1.3
|
||||||
istanbul-lib-coverage: 3.2.2
|
istanbul-lib-coverage: 3.2.2
|
||||||
semver: 6.3.1
|
semver: 6.3.1
|
||||||
|
@ -19640,7 +19695,7 @@ snapshots:
|
||||||
istanbul-lib-instrument@6.0.1:
|
istanbul-lib-instrument@6.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/core': 7.24.4
|
'@babel/core': 7.24.4
|
||||||
'@babel/parser': 7.24.4
|
'@babel/parser': 7.24.8
|
||||||
'@istanbuljs/schema': 0.1.3
|
'@istanbuljs/schema': 0.1.3
|
||||||
istanbul-lib-coverage: 3.2.2
|
istanbul-lib-coverage: 3.2.2
|
||||||
semver: 7.6.0
|
semver: 7.6.0
|
||||||
|
|
Loading…
Reference in a new issue