mirror of
https://github.com/logto-io/logto.git
synced 2024-12-16 20:26:19 -05:00
refactor(cli): use got and fix lint errors
This commit is contained in:
parent
0c6462dbda
commit
a67c23e4b0
6 changed files with 300 additions and 125 deletions
|
@ -1,10 +1,12 @@
|
|||
{
|
||||
"name": "create-logto",
|
||||
"version": "1.0.0",
|
||||
"description": "Logto creation to getting started.",
|
||||
"name": "cli",
|
||||
"version": "1.0.0-beta.9",
|
||||
"description": "Logto CLI.",
|
||||
"author": "Silverhand Inc. <contact@silverhand.io>",
|
||||
"homepage": "https://github.com/logto-io/logto#readme",
|
||||
"license": "MPL-2.0",
|
||||
"//": "Temporarily set to private until the package is ready.",
|
||||
"private": true,
|
||||
"files": [
|
||||
"lib"
|
||||
],
|
||||
|
@ -28,14 +30,13 @@
|
|||
"url": "https://github.com/logto-io/logto/issues"
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^0.27.2",
|
||||
"decompress": "^4.2.1",
|
||||
"got": "^11.8.2",
|
||||
"prompts": "^2.4.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@silverhand/eslint-config": "1.0.0",
|
||||
"@silverhand/ts-config": "1.0.0",
|
||||
"@types/axios": "^0.14.0",
|
||||
"@types/decompress": "^4.2.4",
|
||||
"@types/prompts": "^2.0.14",
|
||||
"eslint": "^8.21.0",
|
|
@ -1,12 +1,13 @@
|
|||
import { execSync } from 'child_process';
|
||||
import { createWriteStream } from 'fs';
|
||||
|
||||
import axios from 'axios';
|
||||
import got from 'got';
|
||||
|
||||
export const isVersionGreaterThan = (version: string, targetMajor: number) =>
|
||||
Number(version.split('.')[0]) >= targetMajor;
|
||||
|
||||
export const trimV = (version: string) => (version.startsWith('v') ? version.slice(1) : version);
|
||||
export const trimVersion = (version: string) =>
|
||||
version.startsWith('v') ? version.slice(1) : version;
|
||||
|
||||
export const safeExecSync = (command: string) => {
|
||||
try {
|
||||
|
@ -16,8 +17,7 @@ export const safeExecSync = (command: string) => {
|
|||
|
||||
export const downloadFile = async (url: string, destination: string) => {
|
||||
const file = createWriteStream(destination);
|
||||
const response = await axios.get(url, { responseType: 'stream' });
|
||||
response.data.pipe(file);
|
||||
got.stream(url).pipe(file);
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
file.on('error', (error) => {
|
89
packages/cli/src/index.ts
Normal file
89
packages/cli/src/index.ts
Normal file
|
@ -0,0 +1,89 @@
|
|||
import { execSync } from 'child_process';
|
||||
import { existsSync } from 'fs';
|
||||
import { unlink } from 'fs/promises';
|
||||
import path from 'path';
|
||||
|
||||
import decompress from 'decompress';
|
||||
import * as prompts from 'prompts';
|
||||
|
||||
import { downloadFile, isVersionGreaterThan, safeExecSync, trimVersion } from './functions';
|
||||
|
||||
const DIRECTORY = 'logto';
|
||||
const NODE_MAJOR_VERSION = 16;
|
||||
const POSTGRES_MAJOR_VERSION = 14;
|
||||
|
||||
const getPromptResponse = async (pgVersion: string) =>
|
||||
prompts.default(
|
||||
[
|
||||
{
|
||||
name: 'instancePath',
|
||||
message: 'Where should we create your logto instance?',
|
||||
type: 'text',
|
||||
initial: './' + DIRECTORY,
|
||||
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 >= ${POSTGRES_MAJOR_VERSION}.0.0 but cannot find in the current environment. Do you have a remote PostgreSQL instance ready?`,
|
||||
type: !isVersionGreaterThan(trimVersion(pgVersion), POSTGRES_MAJOR_VERSION) && 'confirm',
|
||||
initial: true,
|
||||
},
|
||||
{
|
||||
name: 'postgresUrl',
|
||||
message: 'What is the URL of your PostgreSQL instance?',
|
||||
type: (_, data) => (data.hasPostgresUrl ? 'text' : null),
|
||||
format: (value: string) => value.trim(),
|
||||
validate: (value: string) =>
|
||||
(value &&
|
||||
Boolean(
|
||||
/^(?:([^\s#/:?]+):\/{2})?(?:([^\s#/?@]+)@)?([^\s#/?]+)?(?:\/([^\s#?]*))?(?:\?([^\s#]+))?\S*$/.test(
|
||||
value
|
||||
)
|
||||
)) ||
|
||||
'Please enter a valid connection URL.',
|
||||
},
|
||||
{
|
||||
name: 'startInstance',
|
||||
message: 'Would you like to start Logto now?',
|
||||
type: 'confirm',
|
||||
initial: true,
|
||||
},
|
||||
],
|
||||
{
|
||||
onCancel: () => {
|
||||
throw new Error('Operation cancelled');
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
async function main() {
|
||||
const nodeVersion = execSync('node -v', { encoding: 'utf8', stdio: 'pipe' });
|
||||
const pgOutput = safeExecSync('postgres --version') ?? '';
|
||||
const pgArray = pgOutput.split(' ');
|
||||
const pgVersion = pgArray[pgArray.length - 1] ?? '';
|
||||
|
||||
if (!isVersionGreaterThan(trimVersion(nodeVersion), NODE_MAJOR_VERSION)) {
|
||||
throw new Error(`Logto requires NodeJS >= ${NODE_MAJOR_VERSION}.0.0.`);
|
||||
}
|
||||
|
||||
const response = await getPromptResponse(pgVersion);
|
||||
const startCommand = `cd ${String(response.instancePath)} && npm start`;
|
||||
const tarFileLocation = path.resolve('./logto.tar.gz');
|
||||
|
||||
await downloadFile(
|
||||
'https://github.com/logto-io/logto/releases/latest/download/logto.tar.gz',
|
||||
tarFileLocation
|
||||
);
|
||||
await decompress(tarFileLocation, response.instancePath);
|
||||
await unlink(tarFileLocation);
|
||||
|
||||
if (response.startInstance) {
|
||||
execSync(startCommand, { stdio: 'inherit' });
|
||||
} else {
|
||||
console.log(`You can use ${startCommand} to start Logto. Happy hacking!`);
|
||||
}
|
||||
}
|
||||
|
||||
await main();
|
|
@ -2,7 +2,9 @@
|
|||
"extends": "@silverhand/ts-config/tsconfig.base",
|
||||
"compilerOptions": {
|
||||
"outDir": "lib",
|
||||
"declaration": true
|
||||
"declaration": true,
|
||||
"module": "node16",
|
||||
"target": "es2022"
|
||||
},
|
||||
"include": [
|
||||
"src"
|
|
@ -1,95 +0,0 @@
|
|||
import { execSync } from 'child_process';
|
||||
import { existsSync } from 'fs';
|
||||
import { unlink } from 'fs/promises';
|
||||
import path from 'path';
|
||||
|
||||
import decompress from 'decompress';
|
||||
import prompt from 'prompts';
|
||||
|
||||
import { downloadFile, isVersionGreaterThan, safeExecSync, trimV } from './functions';
|
||||
|
||||
const DIRECTORY = 'logto';
|
||||
const NODE_MAJOR_VERSION = 16;
|
||||
const POSTGRES_MAJOR_VERSION = 14;
|
||||
|
||||
async function main() {
|
||||
const nodeVersion = execSync('node -v', { encoding: 'utf8', stdio: 'pipe' });
|
||||
const pgOutput = safeExecSync('postgres --version') ?? '';
|
||||
const pgArray = pgOutput.split(' ');
|
||||
const pgVersion = pgArray[pgArray.length - 1]!;
|
||||
|
||||
if (!isVersionGreaterThan(trimV(nodeVersion), NODE_MAJOR_VERSION)) {
|
||||
throw new Error(`Logto requires NodeJS >= ${NODE_MAJOR_VERSION}.0.0.`);
|
||||
}
|
||||
|
||||
let response;
|
||||
|
||||
try {
|
||||
response = await prompt(
|
||||
[
|
||||
{
|
||||
name: 'instancePath',
|
||||
message: 'Where should we create your logto instance?',
|
||||
type: 'text',
|
||||
initial: './' + DIRECTORY,
|
||||
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 >= ${POSTGRES_MAJOR_VERSION}.0.0 but cannot find in the current environment. Do you have a remote PostgreSQL instance ready?`,
|
||||
type: !isVersionGreaterThan(trimV(pgVersion), POSTGRES_MAJOR_VERSION) ? 'confirm' : null,
|
||||
initial: true,
|
||||
},
|
||||
{
|
||||
name: 'postgresUrl',
|
||||
message: 'What is the URL of your PostgreSQL instance?',
|
||||
type: (_, data) => (data.hasPostgresUrl ? 'text' : null),
|
||||
format: (value: string) => value.trim(),
|
||||
validate: (value: string) =>
|
||||
(value &&
|
||||
Boolean(
|
||||
/^(?:([^\s#/:?]+):\/{2})?(?:([^\s#/?@]+)@)?([^\s#/?]+)?(?:\/([^\s#?]*))?(?:\?([^\s#]+))?\S*$/.test(
|
||||
value
|
||||
)
|
||||
)) ||
|
||||
'Please enter a valid connection URL.',
|
||||
},
|
||||
{
|
||||
name: 'startInstance',
|
||||
message: 'Would you like to start Logto now?',
|
||||
type: 'confirm',
|
||||
initial: true,
|
||||
},
|
||||
],
|
||||
{
|
||||
onCancel: () => {
|
||||
throw new Error('Operation cancelled');
|
||||
},
|
||||
}
|
||||
);
|
||||
} catch (error: any) {
|
||||
console.log(error.message);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
const startCommand = `cd ${response.instancePath} && npm start`;
|
||||
const tarFileLocation = path.resolve('./logto.tar.gz');
|
||||
|
||||
await downloadFile(
|
||||
'https://github.com/logto-io/logto/releases/latest/download/logto.tar.gz',
|
||||
tarFileLocation
|
||||
);
|
||||
await decompress(tarFileLocation, response.instancePath);
|
||||
await unlink(tarFileLocation);
|
||||
|
||||
if (response.startInstance) {
|
||||
execSync(startCommand, { stdio: 'inherit' });
|
||||
} else {
|
||||
console.log(`You can use ${startCommand} to start Logto. Happy hacking!`);
|
||||
}
|
||||
}
|
||||
|
||||
main();
|
218
pnpm-lock.yaml
218
pnpm-lock.yaml
|
@ -18,6 +18,35 @@ 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/prompts': ^2.0.14
|
||||
decompress: ^4.2.1
|
||||
eslint: ^8.21.0
|
||||
got: ^11.8.2
|
||||
lint-staged: ^13.0.0
|
||||
prettier: ^2.7.1
|
||||
prompts: ^2.4.2
|
||||
rimraf: ^3.0.2
|
||||
typescript: ^4.7.4
|
||||
dependencies:
|
||||
decompress: 4.2.1
|
||||
got: 11.8.3
|
||||
prompts: 2.4.2
|
||||
devDependencies:
|
||||
'@silverhand/eslint-config': 1.0.0_swk2g7ygmfleszo5c33j4vooni
|
||||
'@silverhand/ts-config': 1.0.0_typescript@4.7.4
|
||||
'@types/decompress': 4.2.4
|
||||
'@types/prompts': 2.0.14
|
||||
eslint: 8.21.0
|
||||
lint-staged: 13.0.0
|
||||
prettier: 2.7.1
|
||||
rimraf: 3.0.2
|
||||
typescript: 4.7.4
|
||||
|
||||
packages/console:
|
||||
specifiers:
|
||||
'@fontsource/roboto-mono': ^4.5.7
|
||||
|
@ -4233,6 +4262,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 +4539,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
|
||||
|
@ -5261,6 +5302,13 @@ packages:
|
|||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/bl/1.2.3:
|
||||
resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==}
|
||||
dependencies:
|
||||
readable-stream: 2.3.7
|
||||
safe-buffer: 5.2.1
|
||||
dev: false
|
||||
|
||||
/bl/4.1.0:
|
||||
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
|
||||
dependencies:
|
||||
|
@ -5326,9 +5374,23 @@ packages:
|
|||
node-int64: 0.4.0
|
||||
dev: true
|
||||
|
||||
/buffer-alloc-unsafe/1.1.0:
|
||||
resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==}
|
||||
dev: false
|
||||
|
||||
/buffer-alloc/1.2.0:
|
||||
resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==}
|
||||
dependencies:
|
||||
buffer-alloc-unsafe: 1.1.0
|
||||
buffer-fill: 1.0.0
|
||||
dev: false
|
||||
|
||||
/buffer-crc32/0.2.13:
|
||||
resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
|
||||
dev: true
|
||||
|
||||
/buffer-fill/1.0.0:
|
||||
resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==}
|
||||
dev: false
|
||||
|
||||
/buffer-from/1.1.2:
|
||||
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
|
||||
|
@ -5795,7 +5857,6 @@ packages:
|
|||
|
||||
/commander/2.20.3:
|
||||
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
|
||||
dev: true
|
||||
|
||||
/commander/5.1.0:
|
||||
resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==}
|
||||
|
@ -5995,7 +6056,6 @@ packages:
|
|||
|
||||
/core-util-is/1.0.3:
|
||||
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
|
||||
dev: true
|
||||
|
||||
/cosmiconfig-typescript-loader/2.0.0_bjctuninx3nzqxltyvshqte2ni:
|
||||
resolution: {integrity: sha512-2NlGul/E3vTQEANqPziqkA01vfiuUU8vT0jZAuUIjEW8u3eCcnCQWLggapCjhbF76s7KQF0fM0kXSKmzaDaG1g==}
|
||||
|
@ -6305,6 +6365,59 @@ packages:
|
|||
dependencies:
|
||||
mimic-response: 3.1.0
|
||||
|
||||
/decompress-tar/4.1.1:
|
||||
resolution: {integrity: sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==}
|
||||
engines: {node: '>=4'}
|
||||
dependencies:
|
||||
file-type: 5.2.0
|
||||
is-stream: 1.1.0
|
||||
tar-stream: 1.6.2
|
||||
dev: false
|
||||
|
||||
/decompress-tarbz2/4.1.1:
|
||||
resolution: {integrity: sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==}
|
||||
engines: {node: '>=4'}
|
||||
dependencies:
|
||||
decompress-tar: 4.1.1
|
||||
file-type: 6.2.0
|
||||
is-stream: 1.1.0
|
||||
seek-bzip: 1.0.6
|
||||
unbzip2-stream: 1.4.3
|
||||
dev: false
|
||||
|
||||
/decompress-targz/4.1.1:
|
||||
resolution: {integrity: sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==}
|
||||
engines: {node: '>=4'}
|
||||
dependencies:
|
||||
decompress-tar: 4.1.1
|
||||
file-type: 5.2.0
|
||||
is-stream: 1.1.0
|
||||
dev: false
|
||||
|
||||
/decompress-unzip/4.0.1:
|
||||
resolution: {integrity: sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==}
|
||||
engines: {node: '>=4'}
|
||||
dependencies:
|
||||
file-type: 3.9.0
|
||||
get-stream: 2.3.1
|
||||
pify: 2.3.0
|
||||
yauzl: 2.10.0
|
||||
dev: false
|
||||
|
||||
/decompress/4.2.1:
|
||||
resolution: {integrity: sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==}
|
||||
engines: {node: '>=4'}
|
||||
dependencies:
|
||||
decompress-tar: 4.1.1
|
||||
decompress-tarbz2: 4.1.1
|
||||
decompress-targz: 4.1.1
|
||||
decompress-unzip: 4.0.1
|
||||
graceful-fs: 4.2.9
|
||||
make-dir: 1.3.0
|
||||
pify: 2.3.0
|
||||
strip-dirs: 2.1.0
|
||||
dev: false
|
||||
|
||||
/dedent/0.7.0:
|
||||
resolution: {integrity: sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=}
|
||||
dev: true
|
||||
|
@ -7305,7 +7418,6 @@ packages:
|
|||
resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==}
|
||||
dependencies:
|
||||
pend: 1.2.0
|
||||
dev: true
|
||||
|
||||
/figures/3.2.0:
|
||||
resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
|
||||
|
@ -7320,6 +7432,21 @@ packages:
|
|||
flat-cache: 3.0.4
|
||||
dev: true
|
||||
|
||||
/file-type/3.9.0:
|
||||
resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: false
|
||||
|
||||
/file-type/5.2.0:
|
||||
resolution: {integrity: sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==}
|
||||
engines: {node: '>=4'}
|
||||
dev: false
|
||||
|
||||
/file-type/6.2.0:
|
||||
resolution: {integrity: sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==}
|
||||
engines: {node: '>=4'}
|
||||
dev: false
|
||||
|
||||
/filelist/1.0.2:
|
||||
resolution: {integrity: sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==}
|
||||
dependencies:
|
||||
|
@ -7465,7 +7592,6 @@ packages:
|
|||
|
||||
/fs-constants/1.0.0:
|
||||
resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
|
||||
dev: true
|
||||
|
||||
/fs-exists-sync/0.1.0:
|
||||
resolution: {integrity: sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==}
|
||||
|
@ -7616,6 +7742,14 @@ packages:
|
|||
engines: {node: '>=10'}
|
||||
dev: true
|
||||
|
||||
/get-stream/2.3.1:
|
||||
resolution: {integrity: sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dependencies:
|
||||
object-assign: 4.1.1
|
||||
pinkie-promise: 2.0.1
|
||||
dev: false
|
||||
|
||||
/get-stream/5.2.0:
|
||||
resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
|
||||
engines: {node: '>=8'}
|
||||
|
@ -8649,6 +8783,10 @@ packages:
|
|||
resolution: {integrity: sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=}
|
||||
dev: true
|
||||
|
||||
/is-natural-number/4.0.1:
|
||||
resolution: {integrity: sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==}
|
||||
dev: false
|
||||
|
||||
/is-negative-zero/2.0.2:
|
||||
resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
@ -8738,6 +8876,11 @@ packages:
|
|||
protocols: 1.4.8
|
||||
dev: true
|
||||
|
||||
/is-stream/1.1.0:
|
||||
resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: false
|
||||
|
||||
/is-stream/2.0.1:
|
||||
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
|
||||
engines: {node: '>=8'}
|
||||
|
@ -8809,7 +8952,6 @@ packages:
|
|||
|
||||
/isarray/1.0.0:
|
||||
resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=}
|
||||
dev: true
|
||||
|
||||
/isexe/2.0.0:
|
||||
resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=}
|
||||
|
@ -9858,7 +10000,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==}
|
||||
|
@ -10319,6 +10460,13 @@ packages:
|
|||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/make-dir/1.3.0:
|
||||
resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==}
|
||||
engines: {node: '>=4'}
|
||||
dependencies:
|
||||
pify: 3.0.0
|
||||
dev: false
|
||||
|
||||
/make-dir/2.1.0:
|
||||
resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
|
||||
engines: {node: '>=6'}
|
||||
|
@ -11582,7 +11730,6 @@ packages:
|
|||
/object-assign/4.1.1:
|
||||
resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
/object-hash/2.2.0:
|
||||
resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==}
|
||||
|
@ -12140,7 +12287,6 @@ packages:
|
|||
|
||||
/pend/1.2.0:
|
||||
resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==}
|
||||
dev: true
|
||||
|
||||
/pg-connection-string/2.5.0:
|
||||
resolution: {integrity: sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==}
|
||||
|
@ -12273,12 +12419,10 @@ packages:
|
|||
/pify/2.3.0:
|
||||
resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
/pify/3.0.0:
|
||||
resolution: {integrity: sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=}
|
||||
resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
|
||||
engines: {node: '>=4'}
|
||||
dev: true
|
||||
|
||||
/pify/4.0.1:
|
||||
resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
|
||||
|
@ -12290,6 +12434,18 @@ packages:
|
|||
engines: {node: '>=10'}
|
||||
dev: true
|
||||
|
||||
/pinkie-promise/2.0.1:
|
||||
resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dependencies:
|
||||
pinkie: 2.0.4
|
||||
dev: false
|
||||
|
||||
/pinkie/2.0.4:
|
||||
resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: false
|
||||
|
||||
/pirates/4.0.4:
|
||||
resolution: {integrity: sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==}
|
||||
engines: {node: '>= 6'}
|
||||
|
@ -12601,7 +12757,6 @@ packages:
|
|||
|
||||
/process-nextick-args/2.0.1:
|
||||
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
|
||||
dev: true
|
||||
|
||||
/process/0.11.10:
|
||||
resolution: {integrity: sha1-czIwDoQBYb2j5podHZGn1LwW8YI=}
|
||||
|
@ -12639,7 +12794,6 @@ packages:
|
|||
dependencies:
|
||||
kleur: 3.0.3
|
||||
sisteransi: 1.0.5
|
||||
dev: true
|
||||
|
||||
/promzard/0.3.0:
|
||||
resolution: {integrity: sha1-JqXW7ox97kyxIggwWs+5O6OCqe4=}
|
||||
|
@ -13225,7 +13379,6 @@ packages:
|
|||
safe-buffer: 5.1.2
|
||||
string_decoder: 1.1.1
|
||||
util-deprecate: 1.0.2
|
||||
dev: true
|
||||
|
||||
/readable-stream/3.6.0:
|
||||
resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==}
|
||||
|
@ -13575,7 +13728,6 @@ packages:
|
|||
|
||||
/safe-buffer/5.1.2:
|
||||
resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
|
||||
dev: true
|
||||
|
||||
/safe-buffer/5.2.1:
|
||||
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
|
||||
|
@ -13612,6 +13764,13 @@ packages:
|
|||
loose-envify: 1.4.0
|
||||
dev: true
|
||||
|
||||
/seek-bzip/1.0.6:
|
||||
resolution: {integrity: sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
commander: 2.20.3
|
||||
dev: false
|
||||
|
||||
/semver-compare/1.0.0:
|
||||
resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==}
|
||||
|
||||
|
@ -13718,7 +13877,6 @@ packages:
|
|||
|
||||
/sisteransi/1.0.5:
|
||||
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
|
||||
dev: true
|
||||
|
||||
/slash/3.0.0:
|
||||
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
|
||||
|
@ -14190,7 +14348,6 @@ packages:
|
|||
resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
|
||||
dependencies:
|
||||
safe-buffer: 5.1.2
|
||||
dev: true
|
||||
|
||||
/string_decoder/1.3.0:
|
||||
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
|
||||
|
@ -14234,6 +14391,12 @@ packages:
|
|||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/strip-dirs/2.1.0:
|
||||
resolution: {integrity: sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==}
|
||||
dependencies:
|
||||
is-natural-number: 4.0.1
|
||||
dev: false
|
||||
|
||||
/strip-final-newline/2.0.0:
|
||||
resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
|
||||
engines: {node: '>=6'}
|
||||
|
@ -14537,6 +14700,19 @@ packages:
|
|||
tar-stream: 2.2.0
|
||||
dev: true
|
||||
|
||||
/tar-stream/1.6.2:
|
||||
resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==}
|
||||
engines: {node: '>= 0.8.0'}
|
||||
dependencies:
|
||||
bl: 1.2.3
|
||||
buffer-alloc: 1.2.0
|
||||
end-of-stream: 1.4.4
|
||||
fs-constants: 1.0.0
|
||||
readable-stream: 2.3.7
|
||||
to-buffer: 1.1.1
|
||||
xtend: 4.0.2
|
||||
dev: false
|
||||
|
||||
/tar-stream/2.2.0:
|
||||
resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
|
||||
engines: {node: '>=6'}
|
||||
|
@ -14652,6 +14828,10 @@ packages:
|
|||
resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==}
|
||||
dev: true
|
||||
|
||||
/to-buffer/1.1.1:
|
||||
resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==}
|
||||
dev: false
|
||||
|
||||
/to-fast-properties/2.0.0:
|
||||
resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
|
||||
engines: {node: '>=4'}
|
||||
|
@ -14981,7 +15161,6 @@ packages:
|
|||
dependencies:
|
||||
buffer: 5.7.1
|
||||
through: 2.3.8
|
||||
dev: true
|
||||
|
||||
/undefsafe/2.0.5:
|
||||
resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==}
|
||||
|
@ -15624,7 +15803,6 @@ packages:
|
|||
dependencies:
|
||||
buffer-crc32: 0.2.13
|
||||
fd-slicer: 1.1.0
|
||||
dev: true
|
||||
|
||||
/ylru/1.2.1:
|
||||
resolution: {integrity: sha512-faQrqNMzcPCHGVC2aaOINk13K+aaBDUPjGWl0teOXywElLjyVAB6Oe2jj62jHYtwsU49jXhScYbvPENK+6zAvQ==}
|
||||
|
|
Loading…
Reference in a new issue