mirror of
https://github.com/logto-io/logto.git
synced 2025-01-06 20:40:08 -05:00
commit
ba01f13bfa
6 changed files with 401 additions and 26 deletions
2
packages/cli/bin/logto
Executable file
2
packages/cli/bin/logto
Executable file
|
@ -0,0 +1,2 @@
|
|||
#!/usr/bin/env node
|
||||
require('../lib/index.js');
|
64
packages/cli/package.json
Normal file
64
packages/cli/package.json
Normal file
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
"name": "@logto/cli",
|
||||
"version": "1.0.0-beta.10",
|
||||
"description": "Logto CLI.",
|
||||
"author": "Silverhand Inc. <contact@silverhand.io>",
|
||||
"homepage": "https://github.com/logto-io/logto#readme",
|
||||
"license": "MPL-2.0",
|
||||
"main": "lib/index.js",
|
||||
"bin": {
|
||||
"logto": "bin/logto",
|
||||
"lg": "bin/logto"
|
||||
},
|
||||
"files": [
|
||||
"bin",
|
||||
"lib"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/logto-io/logto.git"
|
||||
},
|
||||
"scripts": {
|
||||
"precommit": "lint-staged",
|
||||
"build": "rimraf lib && tsc",
|
||||
"start": "node .",
|
||||
"dev": "ts-node src/index.ts",
|
||||
"lint": "eslint --ext .ts src",
|
||||
"lint:report": "pnpm lint --format json --output-file report.json",
|
||||
"prepack": "pnpm build"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^16.0.0"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/logto-io/logto/issues"
|
||||
},
|
||||
"dependencies": {
|
||||
"chalk": "^4.1.2",
|
||||
"got": "^11.8.2",
|
||||
"hpagent": "^1.0.0",
|
||||
"ora": "^5.0.0",
|
||||
"prompts": "^2.4.2",
|
||||
"semver": "^7.3.7",
|
||||
"tar": "^6.1.11"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@silverhand/eslint-config": "1.0.0",
|
||||
"@silverhand/ts-config": "1.0.0",
|
||||
"@types/decompress": "^4.2.4",
|
||||
"@types/node": "^16.0.0",
|
||||
"@types/prompts": "^2.0.14",
|
||||
"@types/semver": "^7.3.12",
|
||||
"@types/tar": "^6.1.2",
|
||||
"eslint": "^8.21.0",
|
||||
"lint-staged": "^13.0.0",
|
||||
"prettier": "^2.7.1",
|
||||
"rimraf": "^3.0.2",
|
||||
"ts-node": "^10.9.1",
|
||||
"typescript": "^4.7.4"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"extends": "@silverhand"
|
||||
},
|
||||
"prettier": "@silverhand/eslint-config/.prettierrc"
|
||||
}
|
130
packages/cli/src/index.ts
Normal file
130
packages/cli/src/index.ts
Normal file
|
@ -0,0 +1,130 @@
|
|||
import { execSync } from 'child_process';
|
||||
import { existsSync } from 'fs';
|
||||
import { mkdir } from 'fs/promises';
|
||||
import os from 'os';
|
||||
import path from 'path';
|
||||
|
||||
import chalk from 'chalk';
|
||||
import ora from 'ora';
|
||||
import * as prompts from 'prompts';
|
||||
import * as semver from 'semver';
|
||||
import tar from 'tar';
|
||||
|
||||
import { downloadFile, log, safeExecSync } from './utilities';
|
||||
|
||||
const pgRequired = new semver.SemVer('14.0.0');
|
||||
|
||||
const validateNodeVersion = () => {
|
||||
const required = new semver.SemVer('16.0.0');
|
||||
const current = new semver.SemVer(execSync('node -v', { encoding: 'utf8', stdio: 'pipe' }));
|
||||
|
||||
if (required.compare(current) > 0) {
|
||||
log.error(`Logto requires NodeJS >=${required.version}, but ${current.version} found.`);
|
||||
}
|
||||
|
||||
if (current.major > required.major) {
|
||||
log.warn(
|
||||
`Logto is tested under NodeJS ^${required.version}, but version ${current.version} found.`
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
const getInstancePath = async () => {
|
||||
const response = await prompts.default(
|
||||
[
|
||||
{
|
||||
name: 'instancePath',
|
||||
message: 'Where should we create your logto instance?',
|
||||
type: 'text',
|
||||
initial: './logto',
|
||||
format: (value: string) => path.resolve(value.trim()),
|
||||
validate: (value: string) =>
|
||||
existsSync(value) ? 'That path already exists, please try another.' : true,
|
||||
},
|
||||
{
|
||||
name: 'hasPostgresUrl',
|
||||
message: `Logto requires PostgreSQL >=${pgRequired.version} but cannot find in the current environment.\n Do you have a remote PostgreSQL instance ready?`,
|
||||
type: () => {
|
||||
const pgOutput = safeExecSync('postgres --version') ?? '';
|
||||
// Filter out all brackets in the output since Homebrew will append `(Homebrew)`.
|
||||
const pgArray = pgOutput.split(' ').filter((value) => !value.startsWith('('));
|
||||
const pgCurrent = semver.coerce(pgArray[pgArray.length - 1]);
|
||||
|
||||
return (!pgCurrent || pgCurrent.compare(pgRequired) < 0) && 'confirm';
|
||||
},
|
||||
format: (previous) => {
|
||||
if (!previous) {
|
||||
log.error('Logto requires a Postgres instance to run.');
|
||||
}
|
||||
},
|
||||
},
|
||||
],
|
||||
{
|
||||
onCancel: () => {
|
||||
log.error('Operation cancelled');
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
return String(response.instancePath);
|
||||
};
|
||||
|
||||
const tryStartInstance = async (instancePath: string) => {
|
||||
const response = await prompts.default({
|
||||
name: 'startInstance',
|
||||
message: 'Would you like to start Logto now?',
|
||||
type: 'confirm',
|
||||
initial: true,
|
||||
});
|
||||
|
||||
const yes = Boolean(response.startInstance);
|
||||
const startCommand = `cd ${instancePath} && npm start`;
|
||||
|
||||
if (yes) {
|
||||
execSync(startCommand, { stdio: 'inherit' });
|
||||
} else {
|
||||
log.info(`You can use ${startCommand} to start Logto. Happy hacking!`);
|
||||
}
|
||||
};
|
||||
|
||||
const downloadRelease = async () => {
|
||||
const tarFilePath = path.resolve(os.tmpdir(), './logto.tar.gz');
|
||||
|
||||
log.info(`Download Logto to ${tarFilePath}`);
|
||||
await downloadFile(
|
||||
'https://github.com/logto-io/logto/releases/latest/download/logto.tar.gz',
|
||||
tarFilePath
|
||||
);
|
||||
|
||||
return tarFilePath;
|
||||
};
|
||||
|
||||
const decompress = async (toPath: string, tarPath: string) => {
|
||||
const decompressSpinner = ora({
|
||||
text: `Decompress to ${toPath}`,
|
||||
prefixText: chalk.blue('[info]'),
|
||||
}).start();
|
||||
|
||||
try {
|
||||
await mkdir(toPath);
|
||||
await tar.extract({ file: tarPath, cwd: toPath, strip: 1 });
|
||||
} catch {
|
||||
decompressSpinner.fail();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
decompressSpinner.succeed();
|
||||
};
|
||||
|
||||
const main = async () => {
|
||||
validateNodeVersion();
|
||||
|
||||
const instancePath = await getInstancePath();
|
||||
const tarPath = await downloadRelease();
|
||||
|
||||
await decompress(instancePath, tarPath);
|
||||
await tryStartInstance(instancePath);
|
||||
};
|
||||
|
||||
void main();
|
70
packages/cli/src/utilities.ts
Normal file
70
packages/cli/src/utilities.ts
Normal file
|
@ -0,0 +1,70 @@
|
|||
import { execSync } from 'child_process';
|
||||
import { createWriteStream } from 'fs';
|
||||
|
||||
import chalk from 'chalk';
|
||||
import got, { Progress } from 'got';
|
||||
import { HttpsProxyAgent } from 'hpagent';
|
||||
import ora from 'ora';
|
||||
|
||||
export const safeExecSync = (command: string) => {
|
||||
try {
|
||||
return execSync(command, { encoding: 'utf8', stdio: 'pipe' });
|
||||
} catch {}
|
||||
};
|
||||
|
||||
type Log = Readonly<{
|
||||
info: typeof console.log;
|
||||
warn: typeof console.log;
|
||||
error: typeof console.log;
|
||||
}>;
|
||||
|
||||
export const log: Log = Object.freeze({
|
||||
info: (...args) => {
|
||||
console.log(chalk.blue('[info]'), ...args);
|
||||
},
|
||||
warn: (...args) => {
|
||||
console.log(chalk.yellow('[warn]'), ...args);
|
||||
},
|
||||
error: (...args) => {
|
||||
console.log(chalk.red('[error]'), ...args);
|
||||
// eslint-disable-next-line unicorn/no-process-exit
|
||||
process.exit(1);
|
||||
},
|
||||
});
|
||||
|
||||
export const downloadFile = async (url: string, destination: string) => {
|
||||
const { HTTPS_PROXY, HTTP_PROXY, https_proxy, http_proxy } = process.env;
|
||||
const file = createWriteStream(destination);
|
||||
const proxy = HTTPS_PROXY ?? https_proxy ?? HTTP_PROXY ?? http_proxy;
|
||||
const stream = got.stream(url, {
|
||||
...(proxy && { agent: { https: new HttpsProxyAgent({ proxy }) } }),
|
||||
});
|
||||
const spinner = ora({
|
||||
text: 'Connecting',
|
||||
prefixText: chalk.blue('[info]'),
|
||||
}).start();
|
||||
|
||||
stream.pipe(file);
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
stream.on('downloadProgress', ({ total, percent }: Progress) => {
|
||||
if (!total) {
|
||||
return;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @silverhand/fp/no-mutation
|
||||
spinner.text = `${(percent * 100).toFixed(1)}%`;
|
||||
});
|
||||
|
||||
file.on('error', (error) => {
|
||||
spinner.fail();
|
||||
reject(error.message);
|
||||
});
|
||||
|
||||
file.on('finish', () => {
|
||||
file.close();
|
||||
spinner.succeed();
|
||||
resolve(file);
|
||||
});
|
||||
});
|
||||
};
|
12
packages/cli/tsconfig.json
Normal file
12
packages/cli/tsconfig.json
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"extends": "@silverhand/ts-config/tsconfig.base",
|
||||
"compilerOptions": {
|
||||
"outDir": "lib",
|
||||
"declaration": true,
|
||||
"module": "node16",
|
||||
"target": "es2022"
|
||||
},
|
||||
"include": [
|
||||
"src"
|
||||
]
|
||||
}
|
149
pnpm-lock.yaml
149
pnpm-lock.yaml
|
@ -18,6 +18,51 @@ importers:
|
|||
lerna: 5.0.0
|
||||
typescript: 4.7.4
|
||||
|
||||
packages/cli:
|
||||
specifiers:
|
||||
'@silverhand/eslint-config': 1.0.0
|
||||
'@silverhand/ts-config': 1.0.0
|
||||
'@types/decompress': ^4.2.4
|
||||
'@types/node': ^16.0.0
|
||||
'@types/prompts': ^2.0.14
|
||||
'@types/semver': ^7.3.12
|
||||
'@types/tar': ^6.1.2
|
||||
chalk: ^4.1.2
|
||||
eslint: ^8.21.0
|
||||
got: ^11.8.2
|
||||
hpagent: ^1.0.0
|
||||
lint-staged: ^13.0.0
|
||||
ora: ^5.0.0
|
||||
prettier: ^2.7.1
|
||||
prompts: ^2.4.2
|
||||
rimraf: ^3.0.2
|
||||
semver: ^7.3.7
|
||||
tar: ^6.1.11
|
||||
ts-node: ^10.9.1
|
||||
typescript: ^4.7.4
|
||||
dependencies:
|
||||
chalk: 4.1.2
|
||||
got: 11.8.3
|
||||
hpagent: 1.0.0
|
||||
ora: 5.4.1
|
||||
prompts: 2.4.2
|
||||
semver: 7.3.7
|
||||
tar: 6.1.11
|
||||
devDependencies:
|
||||
'@silverhand/eslint-config': 1.0.0_swk2g7ygmfleszo5c33j4vooni
|
||||
'@silverhand/ts-config': 1.0.0_typescript@4.7.4
|
||||
'@types/decompress': 4.2.4
|
||||
'@types/node': 16.11.12
|
||||
'@types/prompts': 2.0.14
|
||||
'@types/semver': 7.3.12
|
||||
'@types/tar': 6.1.2
|
||||
eslint: 8.21.0
|
||||
lint-staged: 13.0.0
|
||||
prettier: 2.7.1
|
||||
rimraf: 3.0.2
|
||||
ts-node: 10.9.1_ccwudyfw5se7hgalwgkzhn2yp4
|
||||
typescript: 4.7.4
|
||||
|
||||
packages/console:
|
||||
specifiers:
|
||||
'@fontsource/roboto-mono': ^4.5.7
|
||||
|
@ -1651,8 +1696,8 @@ packages:
|
|||
/@jridgewell/trace-mapping/0.3.9:
|
||||
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
|
||||
dependencies:
|
||||
'@jridgewell/resolve-uri': 3.0.5
|
||||
'@jridgewell/sourcemap-codec': 1.4.11
|
||||
'@jridgewell/resolve-uri': 3.1.0
|
||||
'@jridgewell/sourcemap-codec': 1.4.14
|
||||
dev: true
|
||||
|
||||
/@koa/cors/3.1.0:
|
||||
|
@ -3821,7 +3866,7 @@ packages:
|
|||
eslint-import-resolver-typescript: 3.4.0_jatgrcxl4x7ywe7ak6cnjca2ae
|
||||
eslint-plugin-consistent-default-export-name: 0.0.15
|
||||
eslint-plugin-eslint-comments: 3.2.0_eslint@8.21.0
|
||||
eslint-plugin-import: 2.26.0_eslint@8.21.0
|
||||
eslint-plugin-import: 2.26.0_klqlxqqxnpnfpttri4irupweri
|
||||
eslint-plugin-no-use-extend-native: 0.5.0
|
||||
eslint-plugin-node: 11.1.0_eslint@8.21.0
|
||||
eslint-plugin-prettier: 4.2.1_h62lvancfh4b7r6zn2dgodrh5e
|
||||
|
@ -3831,6 +3876,7 @@ packages:
|
|||
eslint-plugin-unused-imports: 2.0.0_i7ihj7mda6acsfp32zwgvvndem
|
||||
prettier: 2.7.1
|
||||
transitivePeerDependencies:
|
||||
- eslint-import-resolver-webpack
|
||||
- supports-color
|
||||
- typescript
|
||||
dev: true
|
||||
|
@ -4233,6 +4279,12 @@ packages:
|
|||
'@types/ms': 0.7.31
|
||||
dev: true
|
||||
|
||||
/@types/decompress/4.2.4:
|
||||
resolution: {integrity: sha512-/C8kTMRTNiNuWGl5nEyKbPiMv6HA+0RbEXzFhFBEzASM6+oa4tJro9b8nj7eRlOFfuLdzUU+DS/GPDlvvzMOhA==}
|
||||
dependencies:
|
||||
'@types/node': 17.0.23
|
||||
dev: true
|
||||
|
||||
/@types/etag/1.8.1:
|
||||
resolution: {integrity: sha512-bsKkeSqN7HYyYntFRAmzcwx/dKW4Wa+KVMTInANlI72PWLQmOpZu96j0OqHZGArW4VQwCmJPteQlXaUDeOB0WQ==}
|
||||
dependencies:
|
||||
|
@ -4504,6 +4556,12 @@ packages:
|
|||
resolution: {integrity: sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==}
|
||||
dev: true
|
||||
|
||||
/@types/prompts/2.0.14:
|
||||
resolution: {integrity: sha512-HZBd99fKxRWpYCErtm2/yxUZv6/PBI9J7N4TNFffl5JbrYMHBwF25DjQGTW3b3jmXq+9P6/8fCIb2ee57BFfYA==}
|
||||
dependencies:
|
||||
'@types/node': 17.0.23
|
||||
dev: true
|
||||
|
||||
/@types/prop-types/15.7.4:
|
||||
resolution: {integrity: sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==}
|
||||
dev: true
|
||||
|
@ -4583,6 +4641,10 @@ packages:
|
|||
resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==}
|
||||
dev: true
|
||||
|
||||
/@types/semver/7.3.12:
|
||||
resolution: {integrity: sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==}
|
||||
dev: true
|
||||
|
||||
/@types/serve-static/1.13.10:
|
||||
resolution: {integrity: sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==}
|
||||
dependencies:
|
||||
|
@ -4850,12 +4912,6 @@ packages:
|
|||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/acorn/8.7.1:
|
||||
resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/acorn/8.8.0:
|
||||
resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
|
@ -5679,7 +5735,7 @@ packages:
|
|||
mimic-response: 1.0.1
|
||||
|
||||
/clone/1.0.4:
|
||||
resolution: {integrity: sha1-2jCcwmPfFZlMaIypAheco8fNfH4=}
|
||||
resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
|
||||
engines: {node: '>=0.8'}
|
||||
|
||||
/clone/2.1.2:
|
||||
|
@ -5935,8 +5991,8 @@ packages:
|
|||
engines: {node: '>=10'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
is-text-path: 1.0.1
|
||||
JSONStream: 1.3.5
|
||||
is-text-path: 1.0.1
|
||||
lodash: 4.17.21
|
||||
meow: 8.1.2
|
||||
split2: 3.2.2
|
||||
|
@ -6226,12 +6282,22 @@ packages:
|
|||
|
||||
/debug/2.6.9:
|
||||
resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
|
||||
peerDependencies:
|
||||
supports-color: '*'
|
||||
peerDependenciesMeta:
|
||||
supports-color:
|
||||
optional: true
|
||||
dependencies:
|
||||
ms: 2.0.0
|
||||
dev: true
|
||||
|
||||
/debug/3.2.7:
|
||||
resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
|
||||
peerDependencies:
|
||||
supports-color: '*'
|
||||
peerDependenciesMeta:
|
||||
supports-color:
|
||||
optional: true
|
||||
dependencies:
|
||||
ms: 2.1.3
|
||||
dev: true
|
||||
|
@ -6321,7 +6387,7 @@ packages:
|
|||
engines: {node: '>=0.10.0'}
|
||||
|
||||
/defaults/1.0.3:
|
||||
resolution: {integrity: sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=}
|
||||
resolution: {integrity: sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==}
|
||||
dependencies:
|
||||
clone: 1.0.4
|
||||
|
||||
|
@ -6766,6 +6832,8 @@ packages:
|
|||
dependencies:
|
||||
debug: 3.2.7
|
||||
resolve: 1.22.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/eslint-import-resolver-typescript/3.4.0_jatgrcxl4x7ywe7ak6cnjca2ae:
|
||||
|
@ -6778,7 +6846,7 @@ packages:
|
|||
debug: 4.3.4
|
||||
enhanced-resolve: 5.10.0
|
||||
eslint: 8.21.0
|
||||
eslint-plugin-import: 2.26.0_eslint@8.21.0
|
||||
eslint-plugin-import: 2.26.0_klqlxqqxnpnfpttri4irupweri
|
||||
get-tsconfig: 4.2.0
|
||||
globby: 13.1.2
|
||||
is-core-module: 2.9.0
|
||||
|
@ -6788,12 +6856,31 @@ packages:
|
|||
- supports-color
|
||||
dev: true
|
||||
|
||||
/eslint-module-utils/2.7.3:
|
||||
/eslint-module-utils/2.7.3_dirjbmf3bsnpt3git34hjh5rju:
|
||||
resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==}
|
||||
engines: {node: '>=4'}
|
||||
peerDependencies:
|
||||
'@typescript-eslint/parser': '*'
|
||||
eslint-import-resolver-node: '*'
|
||||
eslint-import-resolver-typescript: '*'
|
||||
eslint-import-resolver-webpack: '*'
|
||||
peerDependenciesMeta:
|
||||
'@typescript-eslint/parser':
|
||||
optional: true
|
||||
eslint-import-resolver-node:
|
||||
optional: true
|
||||
eslint-import-resolver-typescript:
|
||||
optional: true
|
||||
eslint-import-resolver-webpack:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/parser': 5.32.0_qugx7qdu5zevzvxaiqyxfiwquq
|
||||
debug: 3.2.7
|
||||
eslint-import-resolver-node: 0.3.6
|
||||
eslint-import-resolver-typescript: 3.4.0_jatgrcxl4x7ywe7ak6cnjca2ae
|
||||
find-up: 2.1.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/eslint-plugin-consistent-default-export-name/0.0.15:
|
||||
|
@ -6826,19 +6913,24 @@ packages:
|
|||
ignore: 5.2.0
|
||||
dev: true
|
||||
|
||||
/eslint-plugin-import/2.26.0_eslint@8.21.0:
|
||||
/eslint-plugin-import/2.26.0_klqlxqqxnpnfpttri4irupweri:
|
||||
resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==}
|
||||
engines: {node: '>=4'}
|
||||
peerDependencies:
|
||||
'@typescript-eslint/parser': '*'
|
||||
eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
|
||||
peerDependenciesMeta:
|
||||
'@typescript-eslint/parser':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/parser': 5.32.0_qugx7qdu5zevzvxaiqyxfiwquq
|
||||
array-includes: 3.1.4
|
||||
array.prototype.flat: 1.2.5
|
||||
debug: 2.6.9
|
||||
doctrine: 2.1.0
|
||||
eslint: 8.21.0
|
||||
eslint-import-resolver-node: 0.3.6
|
||||
eslint-module-utils: 2.7.3
|
||||
eslint-module-utils: 2.7.3_dirjbmf3bsnpt3git34hjh5rju
|
||||
has: 1.0.3
|
||||
is-core-module: 2.9.0
|
||||
is-glob: 4.0.3
|
||||
|
@ -6846,6 +6938,10 @@ packages:
|
|||
object.values: 1.1.5
|
||||
resolve: 1.22.0
|
||||
tsconfig-paths: 3.14.1
|
||||
transitivePeerDependencies:
|
||||
- eslint-import-resolver-typescript
|
||||
- eslint-import-resolver-webpack
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/eslint-plugin-no-use-extend-native/0.5.0:
|
||||
|
@ -8016,6 +8112,11 @@ packages:
|
|||
lru-cache: 7.10.1
|
||||
dev: true
|
||||
|
||||
/hpagent/1.0.0:
|
||||
resolution: {integrity: sha512-SCleE2Uc1bM752ymxg8QXYGW0TWtAV4ZW3TqH1aOnyi6T6YW2xadCcclm5qeVjvMvfQ2RKNtZxO7uVb9CTPt1A==}
|
||||
engines: {node: '>=14'}
|
||||
dev: false
|
||||
|
||||
/html-encoding-sniffer/3.0.0:
|
||||
resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==}
|
||||
engines: {node: '>=12'}
|
||||
|
@ -9858,7 +9959,6 @@ packages:
|
|||
/kleur/3.0.3:
|
||||
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
|
||||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
||||
/kleur/4.1.4:
|
||||
resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==}
|
||||
|
@ -10307,7 +10407,6 @@ packages:
|
|||
engines: {node: '>=10'}
|
||||
dependencies:
|
||||
yallist: 4.0.0
|
||||
dev: true
|
||||
|
||||
/lru-cache/7.10.1:
|
||||
resolution: {integrity: sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==}
|
||||
|
@ -11049,6 +11148,7 @@ packages:
|
|||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
yallist: 4.0.0
|
||||
dev: true
|
||||
|
||||
/minipass/3.3.5:
|
||||
resolution: {integrity: sha512-rQ/p+KfKBkeNwo04U15i+hOwoVBVmekmm/HcfTkTN2t9pbQKCMm4eN5gFeqgrrSp/kH/7BYYhTIHOxGqzbBPaA==}
|
||||
|
@ -11771,7 +11871,7 @@ packages:
|
|||
dev: true
|
||||
|
||||
/os-tmpdir/1.0.2:
|
||||
resolution: {integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=}
|
||||
resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
/p-cancelable/2.1.1:
|
||||
|
@ -12276,7 +12376,7 @@ packages:
|
|||
dev: true
|
||||
|
||||
/pify/3.0.0:
|
||||
resolution: {integrity: sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=}
|
||||
resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
|
||||
engines: {node: '>=4'}
|
||||
dev: true
|
||||
|
||||
|
@ -12639,7 +12739,6 @@ packages:
|
|||
dependencies:
|
||||
kleur: 3.0.3
|
||||
sisteransi: 1.0.5
|
||||
dev: true
|
||||
|
||||
/promzard/0.3.0:
|
||||
resolution: {integrity: sha1-JqXW7ox97kyxIggwWs+5O6OCqe4=}
|
||||
|
@ -13636,7 +13735,6 @@ packages:
|
|||
hasBin: true
|
||||
dependencies:
|
||||
lru-cache: 6.0.0
|
||||
dev: true
|
||||
|
||||
/serialize-error/7.0.1:
|
||||
resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==}
|
||||
|
@ -13718,7 +13816,6 @@ packages:
|
|||
|
||||
/sisteransi/1.0.5:
|
||||
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
|
||||
dev: true
|
||||
|
||||
/slash/3.0.0:
|
||||
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
|
||||
|
@ -14554,7 +14651,7 @@ packages:
|
|||
dependencies:
|
||||
chownr: 2.0.0
|
||||
fs-minipass: 2.1.0
|
||||
minipass: 3.1.6
|
||||
minipass: 3.3.5
|
||||
minizlib: 2.1.2
|
||||
mkdirp: 1.0.4
|
||||
yallist: 4.0.0
|
||||
|
@ -14822,7 +14919,7 @@ packages:
|
|||
'@tsconfig/node14': 1.0.1
|
||||
'@tsconfig/node16': 1.0.2
|
||||
'@types/node': 16.11.12
|
||||
acorn: 8.7.1
|
||||
acorn: 8.8.0
|
||||
acorn-walk: 8.2.0
|
||||
arg: 4.1.3
|
||||
create-require: 1.1.1
|
||||
|
@ -15327,7 +15424,7 @@ packages:
|
|||
dev: true
|
||||
|
||||
/wcwidth/1.0.1:
|
||||
resolution: {integrity: sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=}
|
||||
resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
|
||||
dependencies:
|
||||
defaults: 1.0.3
|
||||
|
||||
|
|
Loading…
Reference in a new issue