feat: powerful cli
This commit is contained in:
parent
1219f3b172
commit
e68778428e
16 changed files with 795 additions and 50 deletions
|
@ -22,6 +22,7 @@ extends:
|
||||||
|
|
||||||
globals:
|
globals:
|
||||||
BigInt: 'readonly'
|
BigInt: 'readonly'
|
||||||
|
NodeJS: 'readonly'
|
||||||
|
|
||||||
rules:
|
rules:
|
||||||
# 0 = off, 1 = warn, 2 = error
|
# 0 = off, 1 = warn, 2 = error
|
||||||
|
|
6
.github/workflows/napi3.yaml
vendored
6
.github/workflows/napi3.yaml
vendored
|
@ -58,7 +58,7 @@ jobs:
|
||||||
run: yarn add ava@2 --dev --ignore-engines
|
run: yarn add ava@2 --dev --ignore-engines
|
||||||
|
|
||||||
- name: 'Build TypeScript'
|
- name: 'Build TypeScript'
|
||||||
run: yarn build
|
run: yarn --ignore-engines build
|
||||||
|
|
||||||
- name: Check build
|
- name: Check build
|
||||||
uses: actions-rs/cargo@v1
|
uses: actions-rs/cargo@v1
|
||||||
|
@ -75,8 +75,8 @@ jobs:
|
||||||
|
|
||||||
- name: Unit tests
|
- name: Unit tests
|
||||||
run: |
|
run: |
|
||||||
yarn --cwd ./test_module build
|
yarn --cwd ./test_module --ignore-engines build
|
||||||
yarn test
|
yarn --ignore-engines test
|
||||||
env:
|
env:
|
||||||
RUST_BACKTRACE: 1
|
RUST_BACKTRACE: 1
|
||||||
|
|
||||||
|
|
21
package.json
21
package.json
|
@ -5,6 +5,9 @@
|
||||||
"bin": {
|
"bin": {
|
||||||
"napi": "scripts/index.js"
|
"napi": "scripts/index.js"
|
||||||
},
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.15"
|
||||||
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git@github.com:Brooooooklyn/napi-rs.git"
|
"url": "git@github.com:Brooooooklyn/napi-rs.git"
|
||||||
|
@ -18,12 +21,12 @@
|
||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "tsc -p tsconfig.json",
|
"build": "tsc -p tsconfig.json && chmod 777 scripts/index.js",
|
||||||
"format": "run-p format:md format:json format:yaml format:source format:rs",
|
"format": "run-p format:md format:json format:yaml format:source format:rs",
|
||||||
"format:md": "prettier --parser markdown --write './**/*.md'",
|
"format:md": "prettier --parser markdown --write './**/*.md'",
|
||||||
"format:json": "prettier --parser json --write './**/*.json'",
|
"format:json": "prettier --parser json --write './**/*.json'",
|
||||||
"format:rs": "cargo fmt",
|
"format:rs": "cargo fmt",
|
||||||
"format:source": "prettier --config ./package.json --write './**/*.js'",
|
"format:source": "prettier --config ./package.json --write './**/*.{js,ts}'",
|
||||||
"format:yaml": "prettier --parser yaml --write './**/*.{yml,yaml}'",
|
"format:yaml": "prettier --parser yaml --write './**/*.{yml,yaml}'",
|
||||||
"lint": "eslint -c .eslintrc.yml './src/**/*.ts' './test_module/**/*.{ts,js}'",
|
"lint": "eslint -c .eslintrc.yml './src/**/*.ts' './test_module/**/*.{ts,js}'",
|
||||||
"test": "ava"
|
"test": "ava"
|
||||||
|
@ -33,9 +36,16 @@
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/napi-rs/napi-rs#readme",
|
"homepage": "https://github.com/napi-rs/napi-rs#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@octokit/rest": "^18.0.4",
|
||||||
|
"chalk": "^4.1.0",
|
||||||
"clipanion": "^2.5.0",
|
"clipanion": "^2.5.0",
|
||||||
|
"debug": "^4.1.1",
|
||||||
|
"fdir": "^4.1.0",
|
||||||
"inquirer": "^7.3.3",
|
"inquirer": "^7.3.3",
|
||||||
"toml": "^3.0.0"
|
"lodash": "^4.17.20",
|
||||||
|
"putasset": "^5.0.3",
|
||||||
|
"toml": "^3.0.0",
|
||||||
|
"tslib": "^2.0.1"
|
||||||
},
|
},
|
||||||
"prettier": {
|
"prettier": {
|
||||||
"printWidth": 80,
|
"printWidth": 80,
|
||||||
|
@ -59,7 +69,9 @@
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@istanbuljs/nyc-config-typescript": "^1.0.1",
|
"@istanbuljs/nyc-config-typescript": "^1.0.1",
|
||||||
"@swc-node/register": "^0.4.5",
|
"@swc-node/register": "^0.4.5",
|
||||||
|
"@types/debug": "^4.1.5",
|
||||||
"@types/inquirer": "^7.3.1",
|
"@types/inquirer": "^7.3.1",
|
||||||
|
"@types/lodash": "^4.14.161",
|
||||||
"@types/node": "^14.6.3",
|
"@types/node": "^14.6.3",
|
||||||
"@typescript-eslint/eslint-plugin": "^4.0.1",
|
"@typescript-eslint/eslint-plugin": "^4.0.1",
|
||||||
"@typescript-eslint/parser": "^4.0.1",
|
"@typescript-eslint/parser": "^4.0.1",
|
||||||
|
@ -78,7 +90,6 @@
|
||||||
"typescript": "^4.0.2"
|
"typescript": "^4.0.2"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@swc-node/core-linux-musl": "^0.6.1",
|
"@swc-node/core-linux-musl": "^0.6.1"
|
||||||
"tslib": "^2.0.1"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
73
src/artifacts.ts
Normal file
73
src/artifacts.ts
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
import { join, parse } from 'path'
|
||||||
|
|
||||||
|
import chalk from 'chalk'
|
||||||
|
import { Command } from 'clipanion'
|
||||||
|
import { fdir } from 'fdir'
|
||||||
|
|
||||||
|
import { debugFactory } from './debug'
|
||||||
|
import { readFileAsync, writeFileAsync } from './utils'
|
||||||
|
|
||||||
|
const debug = debugFactory('artifacts')
|
||||||
|
|
||||||
|
export class ArtifactsCommand extends Command {
|
||||||
|
@Command.String('-d,--dir')
|
||||||
|
sourceDir = 'artifacts'
|
||||||
|
|
||||||
|
@Command.String('-t,--target')
|
||||||
|
targetDir = '.'
|
||||||
|
|
||||||
|
@Command.Path('artifacts')
|
||||||
|
async execute() {
|
||||||
|
const api = new fdir()
|
||||||
|
.withFullPaths()
|
||||||
|
.exclude((dirPath) => dirPath.includes('node_modules'))
|
||||||
|
.filter((filePath) => filePath.endsWith('package.json'))
|
||||||
|
.crawl(join(process.cwd(), this.targetDir))
|
||||||
|
const sourceApi = new fdir()
|
||||||
|
.withFullPaths()
|
||||||
|
.crawl(join(process.cwd(), this.sourceDir))
|
||||||
|
const distDirs = await api.withPromise().then(
|
||||||
|
(output) =>
|
||||||
|
(output as string[])
|
||||||
|
.map((packageJsonPath) => {
|
||||||
|
const { dir } = parse(packageJsonPath)
|
||||||
|
const { napi } = require(packageJsonPath)
|
||||||
|
if (!napi) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
const napiName: string = napi?.name ?? 'index'
|
||||||
|
debug(
|
||||||
|
`Scan dir: [${chalk.yellowBright(
|
||||||
|
dir,
|
||||||
|
)}], napi name: ${chalk.greenBright(napiName)}`,
|
||||||
|
)
|
||||||
|
return {
|
||||||
|
dir,
|
||||||
|
name: napiName,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.filter(Boolean) as {
|
||||||
|
name: string
|
||||||
|
dir: string
|
||||||
|
}[],
|
||||||
|
)
|
||||||
|
|
||||||
|
await sourceApi.withPromise().then((output) =>
|
||||||
|
Promise.all(
|
||||||
|
(output as string[]).map(async (filePath) => {
|
||||||
|
debug(`Read [${chalk.yellowBright(filePath)}]`)
|
||||||
|
const sourceContent = await readFileAsync(filePath)
|
||||||
|
const parsedName = parse(filePath)
|
||||||
|
const [fileName] = parsedName.name.split('.')
|
||||||
|
const { dir } = distDirs.find(({ name }) => name === fileName) ?? {}
|
||||||
|
if (!dir) {
|
||||||
|
throw new TypeError(`No dist dir found for ${filePath}`)
|
||||||
|
}
|
||||||
|
const distFilePath = join(dir, parsedName.base)
|
||||||
|
debug(`Write file content to [${chalk.yellowBright(distFilePath)}]`)
|
||||||
|
await writeFileAsync(distFilePath, sourceContent)
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
94
src/build.ts
94
src/build.ts
|
@ -1,22 +1,21 @@
|
||||||
import { readFile, writeFile } from 'fs'
|
|
||||||
import os from 'os'
|
import os from 'os'
|
||||||
import { join, parse } from 'path'
|
import { join, parse, sep } from 'path'
|
||||||
import { promisify } from 'util'
|
|
||||||
|
|
||||||
|
import chalk from 'chalk'
|
||||||
import { Command } from 'clipanion'
|
import { Command } from 'clipanion'
|
||||||
import toml from 'toml'
|
import toml from 'toml'
|
||||||
|
|
||||||
const readFileAsync = promisify(readFile)
|
import { getNapiConfig } from './consts'
|
||||||
const writeFileAsync = promisify(writeFile)
|
import { debugFactory } from './debug'
|
||||||
|
import { existsAsync, readFileAsync, writeFileAsync } from './utils'
|
||||||
|
|
||||||
|
const debug = debugFactory('build')
|
||||||
|
|
||||||
export class BuildCommand extends Command {
|
export class BuildCommand extends Command {
|
||||||
static usage = Command.Usage({
|
static usage = Command.Usage({
|
||||||
description: 'Copy native module into specified dir',
|
description: 'Copy native module into specified dir',
|
||||||
})
|
})
|
||||||
|
|
||||||
@Command.String(`--name`)
|
|
||||||
name!: string
|
|
||||||
|
|
||||||
@Command.Boolean(`--platform`)
|
@Command.Boolean(`--platform`)
|
||||||
appendPlatformToFilename!: boolean
|
appendPlatformToFilename!: boolean
|
||||||
|
|
||||||
|
@ -26,16 +25,21 @@ export class BuildCommand extends Command {
|
||||||
@Command.Boolean('--musl')
|
@Command.Boolean('--musl')
|
||||||
isMusl = false
|
isMusl = false
|
||||||
|
|
||||||
@Command.String()
|
@Command.String('--config,-c')
|
||||||
target?: string
|
configFileName?: string
|
||||||
|
|
||||||
|
@Command.String({
|
||||||
|
required: false,
|
||||||
|
})
|
||||||
|
target = '.'
|
||||||
|
|
||||||
@Command.Path('build')
|
@Command.Path('build')
|
||||||
async execute() {
|
async execute() {
|
||||||
|
const { binaryName } = getNapiConfig(this.configFileName)
|
||||||
let tomlContentString: string
|
let tomlContentString: string
|
||||||
let tomlContent: any
|
let tomlContent: any
|
||||||
let moduleName: string
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
debug('Start read toml')
|
||||||
tomlContentString = await readFileAsync(
|
tomlContentString = await readFileAsync(
|
||||||
join(process.cwd(), 'Cargo.toml'),
|
join(process.cwd(), 'Cargo.toml'),
|
||||||
'utf-8',
|
'utf-8',
|
||||||
|
@ -45,39 +49,44 @@ export class BuildCommand extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
debug('Start parse toml')
|
||||||
tomlContent = toml.parse(tomlContentString)
|
tomlContent = toml.parse(tomlContentString)
|
||||||
} catch {
|
} catch {
|
||||||
throw new TypeError('Could not parse the Cargo.toml')
|
throw new TypeError('Could not parse the Cargo.toml')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let dylibName
|
||||||
|
|
||||||
if (tomlContent.package ?? tomlContent.package.name) {
|
if (tomlContent.package ?? tomlContent.package.name) {
|
||||||
moduleName = tomlContent.package.name.replace(/-/g, '_')
|
dylibName = tomlContent.package.name.replace(/-/g, '_')
|
||||||
} else {
|
} else {
|
||||||
throw new TypeError('No package.name field in Cargo.toml')
|
throw new TypeError('No package.name field in Cargo.toml')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
debug(`Dylib name: ${chalk.greenBright(dylibName)}`)
|
||||||
|
|
||||||
const platform = os.platform()
|
const platform = os.platform()
|
||||||
let libExt
|
let libExt
|
||||||
let dylibName = moduleName
|
|
||||||
|
debug(`Platform: ${chalk.greenBright(platform)}`)
|
||||||
|
|
||||||
// Platform based massaging for build commands
|
// Platform based massaging for build commands
|
||||||
switch (platform) {
|
switch (platform) {
|
||||||
case 'darwin':
|
case 'darwin':
|
||||||
libExt = '.dylib'
|
libExt = '.dylib'
|
||||||
dylibName = `lib${moduleName}`
|
dylibName = `lib${dylibName}`
|
||||||
break
|
break
|
||||||
case 'win32':
|
case 'win32':
|
||||||
libExt = '.dll'
|
libExt = '.dll'
|
||||||
break
|
break
|
||||||
case 'linux':
|
case 'linux':
|
||||||
dylibName = `lib${moduleName}`
|
dylibName = `lib${dylibName}`
|
||||||
libExt = '.so'
|
libExt = '.so'
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
console.error(
|
throw new TypeError(
|
||||||
'Operating system not currently supported or recognized by the build script',
|
'Operating system not currently supported or recognized by the build script',
|
||||||
)
|
)
|
||||||
process.exit(1)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const targetDir = this.isRelease ? 'release' : 'debug'
|
const targetDir = this.isRelease ? 'release' : 'debug'
|
||||||
|
@ -92,30 +101,47 @@ export class BuildCommand extends Command {
|
||||||
: `.${platform}-musl`
|
: `.${platform}-musl`
|
||||||
: ''
|
: ''
|
||||||
|
|
||||||
let distModulePath =
|
debug(
|
||||||
this.target ??
|
`Platform name: ${
|
||||||
join('target', targetDir, `${moduleName}${platformName}.node`)
|
platformName || chalk.green('[Empty]')
|
||||||
const parsedDist = parse(distModulePath)
|
}, musl: ${chalk.greenBright(this.isMusl)}`,
|
||||||
|
)
|
||||||
|
|
||||||
if (!parsedDist.name || parsedDist.name === '.') {
|
let distModulePath = this.target
|
||||||
distModulePath = moduleName
|
? join(this.target, `${binaryName}${platformName}.node`)
|
||||||
}
|
: join('target', targetDir, `${binaryName}${platformName}.node`)
|
||||||
|
const parsedDist = parse(distModulePath)
|
||||||
|
|
||||||
if (!parsedDist.ext) {
|
if (!parsedDist.ext) {
|
||||||
distModulePath = `${distModulePath}${platformName}.node`
|
distModulePath = `${distModulePath}${platformName}.node`
|
||||||
}
|
}
|
||||||
|
|
||||||
const pos = __dirname.indexOf('node_modules')
|
const dir = await findUp()
|
||||||
|
|
||||||
const dylibContent = await readFileAsync(
|
if (!dir) {
|
||||||
join(
|
throw new TypeError('No target dir found')
|
||||||
__dirname.substring(0, pos),
|
}
|
||||||
'target',
|
|
||||||
targetDir,
|
const sourcePath = join(dir, 'target', targetDir, `${dylibName}${libExt}`)
|
||||||
`${dylibName}${libExt}`,
|
debug(`Read [${chalk.yellowBright(sourcePath)}] content`)
|
||||||
),
|
|
||||||
)
|
const dylibContent = await readFileAsync(sourcePath)
|
||||||
|
|
||||||
|
debug(`Write binary content to [${chalk.yellowBright(distModulePath)}]`)
|
||||||
|
|
||||||
await writeFileAsync(distModulePath, dylibContent)
|
await writeFileAsync(distModulePath, dylibContent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function findUp(dir = process.cwd()): Promise<string | null> {
|
||||||
|
const dist = join(dir, 'target')
|
||||||
|
if (await existsAsync(dist)) {
|
||||||
|
return dir
|
||||||
|
}
|
||||||
|
const dirs = dir.split(sep)
|
||||||
|
if (dirs.length < 2) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
dirs.pop()
|
||||||
|
return findUp(dirs.join(sep))
|
||||||
|
}
|
||||||
|
|
26
src/consts.ts
Normal file
26
src/consts.ts
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
import { join } from 'path'
|
||||||
|
|
||||||
|
export function getNapiConfig(packageJson = 'package.json') {
|
||||||
|
const packageJsonPath = join(process.cwd(), packageJson)
|
||||||
|
|
||||||
|
const pkgJson = require(packageJsonPath)
|
||||||
|
const { version: packageVersion, os, napi, name } = pkgJson
|
||||||
|
const muslPlatforms: string[] = (napi?.musl ?? []).map(
|
||||||
|
(platform: string) => `${platform}-musl`,
|
||||||
|
)
|
||||||
|
const platforms = os
|
||||||
|
const version = packageVersion
|
||||||
|
const packageName = name
|
||||||
|
|
||||||
|
const binaryName = napi?.name ?? 'index'
|
||||||
|
|
||||||
|
return {
|
||||||
|
muslPlatforms,
|
||||||
|
platforms,
|
||||||
|
version,
|
||||||
|
packageName,
|
||||||
|
binaryName,
|
||||||
|
packageJsonPath,
|
||||||
|
content: pkgJson,
|
||||||
|
}
|
||||||
|
}
|
76
src/create-npm-dir.ts
Normal file
76
src/create-npm-dir.ts
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
import { join } from 'path'
|
||||||
|
|
||||||
|
import chalk from 'chalk'
|
||||||
|
import { Command } from 'clipanion'
|
||||||
|
import { pick } from 'lodash'
|
||||||
|
|
||||||
|
import { getNapiConfig } from './consts'
|
||||||
|
import { debugFactory } from './debug'
|
||||||
|
import { spawn } from './spawn'
|
||||||
|
import { writeFileAsync } from './utils'
|
||||||
|
|
||||||
|
const debug = debugFactory('create-npm-dir')
|
||||||
|
|
||||||
|
export class CreateNpmDirCommand extends Command {
|
||||||
|
@Command.String('-t,--target')
|
||||||
|
targetDir!: string
|
||||||
|
|
||||||
|
@Command.Path('create-npm-dir')
|
||||||
|
async execute() {
|
||||||
|
const pkgJsonDir = join(this.targetDir, 'package.json')
|
||||||
|
debug(`Read content from [${chalk.yellowBright(pkgJsonDir)}]`)
|
||||||
|
const {
|
||||||
|
platforms,
|
||||||
|
muslPlatforms,
|
||||||
|
packageName,
|
||||||
|
version,
|
||||||
|
binaryName,
|
||||||
|
content,
|
||||||
|
} = getNapiConfig(pkgJsonDir)
|
||||||
|
|
||||||
|
for (const platform of [...platforms, ...muslPlatforms]) {
|
||||||
|
const targetDir = join(process.cwd(), this.targetDir, 'npm', platform)
|
||||||
|
await spawn(`mkdir -p ${targetDir}`)
|
||||||
|
const binaryFileName = `${binaryName}.${platform}.node`
|
||||||
|
const targetPackageJson = join(targetDir, 'package.json')
|
||||||
|
debug(`Write file [${chalk.yellowBright(targetPackageJson)}]`)
|
||||||
|
await writeFileAsync(
|
||||||
|
targetPackageJson,
|
||||||
|
JSON.stringify(
|
||||||
|
{
|
||||||
|
name: `${packageName}-${platform}`,
|
||||||
|
version,
|
||||||
|
os: [platform],
|
||||||
|
main: binaryFileName,
|
||||||
|
files: [binaryFileName],
|
||||||
|
...pick(
|
||||||
|
content,
|
||||||
|
'description',
|
||||||
|
'keywords',
|
||||||
|
'author',
|
||||||
|
'homepage',
|
||||||
|
'license',
|
||||||
|
'cpu',
|
||||||
|
'engines',
|
||||||
|
'publishConfig',
|
||||||
|
'repository',
|
||||||
|
'bugs',
|
||||||
|
),
|
||||||
|
},
|
||||||
|
null,
|
||||||
|
2,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
const targetReadme = join(targetDir, 'README.md')
|
||||||
|
debug(`Write target README.md [${chalk.yellowBright(targetReadme)}]`)
|
||||||
|
await writeFileAsync(targetReadme, readme(packageName, platform))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function readme(packageName: string, platform: string) {
|
||||||
|
return `\`#${packageName}-${platform}\`
|
||||||
|
|
||||||
|
this is the **${platform}** 64-bit binary for \`${packageName}\`
|
||||||
|
`
|
||||||
|
}
|
3
src/debug.ts
Normal file
3
src/debug.ts
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
import debug from 'debug'
|
||||||
|
|
||||||
|
export const debugFactory = (namespace: string) => debug(`napi:${namespace}`)
|
11
src/index.ts
11
src/index.ts
|
@ -2,19 +2,30 @@
|
||||||
|
|
||||||
import { Cli } from 'clipanion'
|
import { Cli } from 'clipanion'
|
||||||
|
|
||||||
|
import { ArtifactsCommand } from './artifacts'
|
||||||
import { BuildCommand } from './build'
|
import { BuildCommand } from './build'
|
||||||
|
import { CreateNpmDirCommand } from './create-npm-dir'
|
||||||
|
import { PrePublishCommand } from './pre-publish'
|
||||||
|
import { VersionCommand } from './version'
|
||||||
|
|
||||||
const cli = new Cli({
|
const cli = new Cli({
|
||||||
binaryName: 'bin',
|
binaryName: 'bin',
|
||||||
binaryVersion: require('../package.json').version,
|
binaryVersion: require('../package.json').version,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
cli.register(ArtifactsCommand)
|
||||||
cli.register(BuildCommand)
|
cli.register(BuildCommand)
|
||||||
|
cli.register(CreateNpmDirCommand)
|
||||||
|
cli.register(PrePublishCommand)
|
||||||
|
cli.register(VersionCommand)
|
||||||
|
|
||||||
cli
|
cli
|
||||||
.run(process.argv.slice(2), {
|
.run(process.argv.slice(2), {
|
||||||
...Cli.defaultContext,
|
...Cli.defaultContext,
|
||||||
})
|
})
|
||||||
|
.then((status) => {
|
||||||
|
process.exit(status)
|
||||||
|
})
|
||||||
.catch((e) => {
|
.catch((e) => {
|
||||||
console.error(e)
|
console.error(e)
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
|
|
152
src/pre-publish.ts
Normal file
152
src/pre-publish.ts
Normal file
|
@ -0,0 +1,152 @@
|
||||||
|
import { join } from 'path'
|
||||||
|
|
||||||
|
import { Octokit } from '@octokit/rest'
|
||||||
|
import chalk from 'chalk'
|
||||||
|
import { Command } from 'clipanion'
|
||||||
|
|
||||||
|
import { getNapiConfig } from './consts'
|
||||||
|
import { debugFactory } from './debug'
|
||||||
|
import { spawn } from './spawn'
|
||||||
|
import { updatePackageJson } from './update-package'
|
||||||
|
import { readFileAsync, writeFileAsync } from './utils'
|
||||||
|
|
||||||
|
const debug = debugFactory('prepublish')
|
||||||
|
|
||||||
|
interface PackageInfo {
|
||||||
|
name: string
|
||||||
|
version: string
|
||||||
|
tag: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export class PrePublishCommand extends Command {
|
||||||
|
static usage = Command.Usage({
|
||||||
|
description:
|
||||||
|
'Update package.json and copy addons into per platform packages',
|
||||||
|
})
|
||||||
|
|
||||||
|
@Command.String(`-p,--prefix`)
|
||||||
|
prefix = 'npm'
|
||||||
|
|
||||||
|
@Command.String('--tagstyle,-t')
|
||||||
|
tagStyle: 'npm' | 'lerna' = 'lerna'
|
||||||
|
|
||||||
|
@Command.String('-c,--config')
|
||||||
|
configFileName?: string
|
||||||
|
|
||||||
|
@Command.Boolean('--dry-run')
|
||||||
|
isDryRun = false
|
||||||
|
|
||||||
|
@Command.Path('prepublish')
|
||||||
|
async execute() {
|
||||||
|
const {
|
||||||
|
packageJsonPath,
|
||||||
|
platforms,
|
||||||
|
version,
|
||||||
|
muslPlatforms,
|
||||||
|
packageName,
|
||||||
|
binaryName,
|
||||||
|
} = getNapiConfig(this.configFileName)
|
||||||
|
debug(`Update optionalDependencies in [${packageJsonPath}]`)
|
||||||
|
if (!this.isDryRun) {
|
||||||
|
await updatePackageJson(packageJsonPath, {
|
||||||
|
optionalDependencies: platforms.reduce(
|
||||||
|
(acc: Record<string, string>, cur: NodeJS.Platform) => {
|
||||||
|
acc[`${packageName}-${cur}`] = `^${version}`
|
||||||
|
return acc
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const { owner, repo, pkgInfo } = await this.createGhRelease(
|
||||||
|
packageName,
|
||||||
|
version,
|
||||||
|
)
|
||||||
|
|
||||||
|
for (const name of [...platforms, ...muslPlatforms]) {
|
||||||
|
const pkgDir = join(process.cwd(), this.prefix, name)
|
||||||
|
const filename = `${binaryName}.${name}.node`
|
||||||
|
debug(`Read [${chalk.greenBright(filename)}] content`)
|
||||||
|
const bindingFile = await readFileAsync(join(process.cwd(), filename))
|
||||||
|
const dstPath = join(pkgDir, filename)
|
||||||
|
await writeFileAsync(dstPath, bindingFile)
|
||||||
|
debug(`Write [${chalk.yellowBright(dstPath)}] content`)
|
||||||
|
if (!this.isDryRun) {
|
||||||
|
await spawn('npm publish', {
|
||||||
|
cwd: pkgDir,
|
||||||
|
env: process.env,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
debug(
|
||||||
|
`Start upload [${chalk.greenBright(
|
||||||
|
dstPath,
|
||||||
|
)}] to Github release, [${chalk.greenBright(pkgInfo.tag)}]`,
|
||||||
|
)
|
||||||
|
if (!this.isDryRun) {
|
||||||
|
const putasset = require('putasset')
|
||||||
|
const downloadUrl = await putasset(process.env.GITHUB_TOKEN, {
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
tag: pkgInfo.tag,
|
||||||
|
filename: dstPath,
|
||||||
|
})
|
||||||
|
console.info(`${chalk.green(dstPath)} upload success`)
|
||||||
|
console.info(`Download url: ${chalk.blueBright(downloadUrl)}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async createGhRelease(packageName: string, version: string) {
|
||||||
|
const headCommit = (await spawn('git log -1 --pretty=%B'))
|
||||||
|
.toString('utf8')
|
||||||
|
.trim()
|
||||||
|
const [owner, repo] = process.env.GITHUB_REPOSITORY!.split('/')
|
||||||
|
const octokit = new Octokit({
|
||||||
|
auth: process.env.GITHUB_TOKEN,
|
||||||
|
})
|
||||||
|
let pkgInfo: PackageInfo | undefined
|
||||||
|
if (this.tagStyle === 'lerna') {
|
||||||
|
const packagesToPublish = headCommit
|
||||||
|
.split('\n')
|
||||||
|
.map((line) => line.trim())
|
||||||
|
.filter((line, index) => line.length && index)
|
||||||
|
.map((line) => line.substr(2))
|
||||||
|
.map(this.parseTag)
|
||||||
|
pkgInfo = packagesToPublish.find(
|
||||||
|
(pkgInfo) => pkgInfo.name === packageName,
|
||||||
|
)
|
||||||
|
if (!pkgInfo) {
|
||||||
|
throw new TypeError(
|
||||||
|
`No release commit found with ${packageName}, original commit info: ${headCommit}`,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
pkgInfo = {
|
||||||
|
tag: `v${headCommit}`,
|
||||||
|
version,
|
||||||
|
name: packageName,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!this.isDryRun) {
|
||||||
|
await octokit.repos.createRelease({
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
tag_name: pkgInfo.tag,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return { owner, repo, pkgInfo }
|
||||||
|
}
|
||||||
|
|
||||||
|
private parseTag(tag: string) {
|
||||||
|
const segments = tag.split('@')
|
||||||
|
const version = segments.pop()!
|
||||||
|
const name = segments.join('@')
|
||||||
|
|
||||||
|
return {
|
||||||
|
name,
|
||||||
|
version,
|
||||||
|
tag,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
30
src/spawn.ts
Normal file
30
src/spawn.ts
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
import { spawn as _spawn, SpawnOptionsWithoutStdio } from 'child_process'
|
||||||
|
|
||||||
|
import { debugFactory } from './debug'
|
||||||
|
|
||||||
|
const debug = debugFactory('spawn')
|
||||||
|
|
||||||
|
export function spawn(
|
||||||
|
command: string,
|
||||||
|
options: SpawnOptionsWithoutStdio = {},
|
||||||
|
): Promise<Buffer> {
|
||||||
|
const [cmd, ...args] = command.split(' ').map((s) => s.trim())
|
||||||
|
debug(`execute ${cmd} ${args.join(' ')}`)
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const spawnStream = _spawn(cmd, args, { ...options, shell: 'bash' })
|
||||||
|
const chunks: Buffer[] = []
|
||||||
|
process.stdin.pipe(spawnStream.stdin)
|
||||||
|
spawnStream.stdout?.on('data', (chunk) => {
|
||||||
|
chunks.push(chunk)
|
||||||
|
})
|
||||||
|
spawnStream.stdout.pipe(process.stdout)
|
||||||
|
spawnStream.stderr.pipe(process.stderr)
|
||||||
|
spawnStream.on('close', (code) => {
|
||||||
|
if (code !== 0) {
|
||||||
|
reject()
|
||||||
|
} else {
|
||||||
|
resolve(Buffer.concat(chunks))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
9
src/update-package.ts
Normal file
9
src/update-package.ts
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
import { writeFileAsync } from './utils'
|
||||||
|
|
||||||
|
export async function updatePackageJson(
|
||||||
|
path: string,
|
||||||
|
partial: Record<string, any>,
|
||||||
|
) {
|
||||||
|
const old = require(path)
|
||||||
|
await writeFileAsync(path, JSON.stringify({ ...old, ...partial }, null, 2))
|
||||||
|
}
|
6
src/utils.ts
Normal file
6
src/utils.ts
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
import { readFile, writeFile, exists } from 'fs'
|
||||||
|
import { promisify } from 'util'
|
||||||
|
|
||||||
|
export const readFileAsync = promisify(readFile)
|
||||||
|
export const writeFileAsync = promisify(writeFile)
|
||||||
|
export const existsAsync = promisify(exists)
|
38
src/version.ts
Normal file
38
src/version.ts
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
import { join } from 'path'
|
||||||
|
|
||||||
|
import chalk from 'chalk'
|
||||||
|
import { Command } from 'clipanion'
|
||||||
|
|
||||||
|
import { getNapiConfig } from './consts'
|
||||||
|
import { debugFactory } from './debug'
|
||||||
|
import { spawn } from './spawn'
|
||||||
|
import { updatePackageJson } from './update-package'
|
||||||
|
|
||||||
|
const debug = debugFactory('version')
|
||||||
|
|
||||||
|
export class VersionCommand extends Command {
|
||||||
|
@Command.String(`-p,--prefix`)
|
||||||
|
prefix = 'npm'
|
||||||
|
|
||||||
|
@Command.String('-c,--config')
|
||||||
|
configFileName?: string
|
||||||
|
|
||||||
|
@Command.Path('version')
|
||||||
|
async execute() {
|
||||||
|
const { muslPlatforms, version, platforms } = getNapiConfig(
|
||||||
|
this.configFileName,
|
||||||
|
)
|
||||||
|
for (const name of [...platforms, ...muslPlatforms]) {
|
||||||
|
const pkgDir = join(process.cwd(), this.prefix, name)
|
||||||
|
debug(
|
||||||
|
`Update version to ${chalk.greenBright(
|
||||||
|
version,
|
||||||
|
)} in [${chalk.yellowBright(pkgDir)}]`,
|
||||||
|
)
|
||||||
|
await updatePackageJson(join(pkgDir, 'package.json'), {
|
||||||
|
version,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
await spawn('git add .')
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,8 +2,8 @@
|
||||||
"name": "test-module",
|
"name": "test-module",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "cargo build && node ../scripts/index.js build ./index",
|
"build": "cargo build && node ../scripts/index.js build",
|
||||||
"build-release": "cargo build --release && node ../scripts/index.js build --release ./index",
|
"build-release": "cargo build --release && node ../scripts/index.js build --release",
|
||||||
"test": "node ./index.js"
|
"test": "node ./index.js"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
295
yarn.lock
295
yarn.lock
|
@ -250,6 +250,140 @@
|
||||||
"@nodelib/fs.scandir" "2.1.3"
|
"@nodelib/fs.scandir" "2.1.3"
|
||||||
fastq "^1.6.0"
|
fastq "^1.6.0"
|
||||||
|
|
||||||
|
"@octokit/auth-token@^2.4.0":
|
||||||
|
version "2.4.2"
|
||||||
|
resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.2.tgz#10d0ae979b100fa6b72fa0e8e63e27e6d0dbff8a"
|
||||||
|
integrity sha512-jE/lE/IKIz2v1+/P0u4fJqv0kYwXOTujKemJMFr6FeopsxlIK3+wKDCJGnysg81XID5TgZQbIfuJ5J0lnTiuyQ==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/types" "^5.0.0"
|
||||||
|
|
||||||
|
"@octokit/core@^2.4.3":
|
||||||
|
version "2.5.4"
|
||||||
|
resolved "https://registry.npmjs.org/@octokit/core/-/core-2.5.4.tgz#f7fbf8e4f86c5cc2497a8887ba2561ec8d358054"
|
||||||
|
integrity sha512-HCp8yKQfTITYK+Nd09MHzAlP1v3Ii/oCohv0/TW9rhSLvzb98BOVs2QmVYuloE6a3l6LsfyGIwb6Pc4ycgWlIQ==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/auth-token" "^2.4.0"
|
||||||
|
"@octokit/graphql" "^4.3.1"
|
||||||
|
"@octokit/request" "^5.4.0"
|
||||||
|
"@octokit/types" "^5.0.0"
|
||||||
|
before-after-hook "^2.1.0"
|
||||||
|
universal-user-agent "^5.0.0"
|
||||||
|
|
||||||
|
"@octokit/core@^3.0.0":
|
||||||
|
version "3.1.2"
|
||||||
|
resolved "https://registry.npmjs.org/@octokit/core/-/core-3.1.2.tgz#c937d5f9621b764573068fcd2e5defcc872fd9cc"
|
||||||
|
integrity sha512-AInOFULmwOa7+NFi9F8DlDkm5qtZVmDQayi7TUgChE3yeIGPq0Y+6cAEXPexQ3Ea+uZy66hKEazR7DJyU+4wfw==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/auth-token" "^2.4.0"
|
||||||
|
"@octokit/graphql" "^4.3.1"
|
||||||
|
"@octokit/request" "^5.4.0"
|
||||||
|
"@octokit/types" "^5.0.0"
|
||||||
|
before-after-hook "^2.1.0"
|
||||||
|
universal-user-agent "^6.0.0"
|
||||||
|
|
||||||
|
"@octokit/endpoint@^6.0.1":
|
||||||
|
version "6.0.5"
|
||||||
|
resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.5.tgz#43a6adee813c5ffd2f719e20cfd14a1fee7c193a"
|
||||||
|
integrity sha512-70K5u6zd45ItOny6aHQAsea8HHQjlQq85yqOMe+Aj8dkhN2qSJ9T+Q3YjUjEYfPRBcuUWNgMn62DQnP/4LAIiQ==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/types" "^5.0.0"
|
||||||
|
is-plain-object "^4.0.0"
|
||||||
|
universal-user-agent "^6.0.0"
|
||||||
|
|
||||||
|
"@octokit/graphql@^4.3.1":
|
||||||
|
version "4.5.4"
|
||||||
|
resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.5.4.tgz#c9ef75b0406ebf195bf5f4ed2304a77ed7df27c7"
|
||||||
|
integrity sha512-ITpZ+dQc0cXAW1FmDkHJJM+8Lb6anUnin0VB5hLBilnYVdLC0ICFU/KIvT7OXfW9S81DE3U4Vx2EypDG1OYaPA==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/request" "^5.3.0"
|
||||||
|
"@octokit/types" "^5.0.0"
|
||||||
|
universal-user-agent "^6.0.0"
|
||||||
|
|
||||||
|
"@octokit/plugin-paginate-rest@^2.2.0":
|
||||||
|
version "2.3.2"
|
||||||
|
resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.3.2.tgz#746fca42bc1c79639625dbcafe983e3581bdbfc7"
|
||||||
|
integrity sha512-PjHbMhKryxClCrmfvRpGaKCTxUcHIf2zirWRV9SMGf0EmxD/rFew/abSqbMiLl9uQgRZvqtTyCRMGMlUv1ZsBg==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/types" "^5.3.0"
|
||||||
|
|
||||||
|
"@octokit/plugin-request-log@^1.0.0":
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz#eef87a431300f6148c39a7f75f8cfeb218b2547e"
|
||||||
|
integrity sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw==
|
||||||
|
|
||||||
|
"@octokit/plugin-rest-endpoint-methods@3.17.0":
|
||||||
|
version "3.17.0"
|
||||||
|
resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-3.17.0.tgz#d8ba04eb883849dd98666c55bf49d8c9fe7be055"
|
||||||
|
integrity sha512-NFV3vq7GgoO2TrkyBRUOwflkfTYkFKS0tLAPym7RNpkwLCttqShaEGjthOsPEEL+7LFcYv3mU24+F2yVd3npmg==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/types" "^4.1.6"
|
||||||
|
deprecation "^2.3.1"
|
||||||
|
|
||||||
|
"@octokit/plugin-rest-endpoint-methods@4.1.3":
|
||||||
|
version "4.1.3"
|
||||||
|
resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.1.3.tgz#44d9af35cd9fef63c7a4cf3b0e6b681886cc8d34"
|
||||||
|
integrity sha512-az3seq9yuc0OXlNLrZ0fWTNbFuL4sN8GN1sLmovELg3+LnpWmOs3GAn2KGa6E7SKMgpCuFvJwvsHEfYasTHUxQ==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/types" "^5.1.1"
|
||||||
|
deprecation "^2.3.1"
|
||||||
|
|
||||||
|
"@octokit/request-error@^2.0.0":
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.2.tgz#0e76b83f5d8fdda1db99027ea5f617c2e6ba9ed0"
|
||||||
|
integrity sha512-2BrmnvVSV1MXQvEkrb9zwzP0wXFNbPJij922kYBTLIlIafukrGOb+ABBT2+c6wZiuyWDH1K1zmjGQ0toN/wMWw==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/types" "^5.0.1"
|
||||||
|
deprecation "^2.0.0"
|
||||||
|
once "^1.4.0"
|
||||||
|
|
||||||
|
"@octokit/request@^5.3.0", "@octokit/request@^5.4.0":
|
||||||
|
version "5.4.7"
|
||||||
|
resolved "https://registry.npmjs.org/@octokit/request/-/request-5.4.7.tgz#fd703ee092e0463ceba49ff7a3e61cb4cf8a0fde"
|
||||||
|
integrity sha512-FN22xUDP0i0uF38YMbOfx6TotpcENP5W8yJM1e/LieGXn6IoRxDMnBf7tx5RKSW4xuUZ/1P04NFZy5iY3Rax1A==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/endpoint" "^6.0.1"
|
||||||
|
"@octokit/request-error" "^2.0.0"
|
||||||
|
"@octokit/types" "^5.0.0"
|
||||||
|
deprecation "^2.0.0"
|
||||||
|
is-plain-object "^4.0.0"
|
||||||
|
node-fetch "^2.3.0"
|
||||||
|
once "^1.4.0"
|
||||||
|
universal-user-agent "^6.0.0"
|
||||||
|
|
||||||
|
"@octokit/rest@^17.1.3":
|
||||||
|
version "17.11.2"
|
||||||
|
resolved "https://registry.npmjs.org/@octokit/rest/-/rest-17.11.2.tgz#f3dbd46f9f06361c646230fd0ef8598e59183ead"
|
||||||
|
integrity sha512-4jTmn8WossTUaLfNDfXk4fVJgbz5JgZE8eCs4BvIb52lvIH8rpVMD1fgRCrHbSd6LRPE5JFZSfAEtszrOq3ZFQ==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/core" "^2.4.3"
|
||||||
|
"@octokit/plugin-paginate-rest" "^2.2.0"
|
||||||
|
"@octokit/plugin-request-log" "^1.0.0"
|
||||||
|
"@octokit/plugin-rest-endpoint-methods" "3.17.0"
|
||||||
|
|
||||||
|
"@octokit/rest@^18.0.4":
|
||||||
|
version "18.0.4"
|
||||||
|
resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.0.4.tgz#3c7e7dba671ae2097c24086581a2dc2fdb039be0"
|
||||||
|
integrity sha512-l4PspvLvBG+bTDsji+XceDWuIf7qAZHLljbqJZ6UDdtACkW+MuFsprXicV5pEFAkxfPusyVDDPYJKRY1KJb7Zg==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/core" "^3.0.0"
|
||||||
|
"@octokit/plugin-paginate-rest" "^2.2.0"
|
||||||
|
"@octokit/plugin-request-log" "^1.0.0"
|
||||||
|
"@octokit/plugin-rest-endpoint-methods" "4.1.3"
|
||||||
|
|
||||||
|
"@octokit/types@^4.1.6":
|
||||||
|
version "4.1.10"
|
||||||
|
resolved "https://registry.npmjs.org/@octokit/types/-/types-4.1.10.tgz#e4029c11e2cc1335051775bc1600e7e740e4aca4"
|
||||||
|
integrity sha512-/wbFy1cUIE5eICcg0wTKGXMlKSbaAxEr00qaBXzscLXpqhcwgXeS6P8O0pkysBhRfyjkKjJaYrvR1ExMO5eOXQ==
|
||||||
|
dependencies:
|
||||||
|
"@types/node" ">= 8"
|
||||||
|
|
||||||
|
"@octokit/types@^5.0.0", "@octokit/types@^5.0.1", "@octokit/types@^5.1.1", "@octokit/types@^5.3.0":
|
||||||
|
version "5.4.1"
|
||||||
|
resolved "https://registry.npmjs.org/@octokit/types/-/types-5.4.1.tgz#d5d5f2b70ffc0e3f89467c3db749fa87fc3b7031"
|
||||||
|
integrity sha512-OlMlSySBJoJ6uozkr/i03nO5dlYQyE05vmQNZhAh9MyO4DPBP88QlwsDVLmVjIMFssvIZB6WO0ctIGMRG+xsJQ==
|
||||||
|
dependencies:
|
||||||
|
"@types/node" ">= 8"
|
||||||
|
|
||||||
"@sindresorhus/is@^0.14.0":
|
"@sindresorhus/is@^0.14.0":
|
||||||
version "0.14.0"
|
version "0.14.0"
|
||||||
resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
|
resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
|
||||||
|
@ -315,6 +449,11 @@
|
||||||
resolved "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
|
resolved "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
|
||||||
integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
|
integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
|
||||||
|
|
||||||
|
"@types/debug@^4.1.5":
|
||||||
|
version "4.1.5"
|
||||||
|
resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd"
|
||||||
|
integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==
|
||||||
|
|
||||||
"@types/glob@^7.1.1":
|
"@types/glob@^7.1.1":
|
||||||
version "7.1.3"
|
version "7.1.3"
|
||||||
resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183"
|
resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183"
|
||||||
|
@ -341,6 +480,11 @@
|
||||||
resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
|
resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
|
||||||
integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
|
integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
|
||||||
|
|
||||||
|
"@types/lodash@^4.14.161":
|
||||||
|
version "4.14.161"
|
||||||
|
resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.161.tgz#a21ca0777dabc6e4f44f3d07f37b765f54188b18"
|
||||||
|
integrity sha512-EP6O3Jkr7bXvZZSZYlsgt5DIjiGr0dXP1/jVEwVLTFgg0d+3lWVQkRavYVQszV7dYUwvg0B8R0MBDpcmXg7XIA==
|
||||||
|
|
||||||
"@types/minimatch@*":
|
"@types/minimatch@*":
|
||||||
version "3.0.3"
|
version "3.0.3"
|
||||||
resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
|
resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
|
||||||
|
@ -351,6 +495,11 @@
|
||||||
resolved "https://registry.npmjs.org/@types/node/-/node-14.6.3.tgz#cc4f979548ca4d8e7b90bc0180052ab99ee64224"
|
resolved "https://registry.npmjs.org/@types/node/-/node-14.6.3.tgz#cc4f979548ca4d8e7b90bc0180052ab99ee64224"
|
||||||
integrity sha512-pC/hkcREG6YfDfui1FBmj8e20jFU5Exjw4NYDm8kEdrW+mOh0T1Zve8DWKnS7ZIZvgncrctcNCXF4Q2I+loyww==
|
integrity sha512-pC/hkcREG6YfDfui1FBmj8e20jFU5Exjw4NYDm8kEdrW+mOh0T1Zve8DWKnS7ZIZvgncrctcNCXF4Q2I+loyww==
|
||||||
|
|
||||||
|
"@types/node@>= 8":
|
||||||
|
version "14.6.4"
|
||||||
|
resolved "https://registry.npmjs.org/@types/node/-/node-14.6.4.tgz#a145cc0bb14ef9c4777361b7bbafa5cf8e3acb5a"
|
||||||
|
integrity sha512-Wk7nG1JSaMfMpoMJDKUsWYugliB2Vy55pdjLpmLixeyMi7HizW2I/9QoxsPCkXl3dO+ZOVqPumKaDUv5zJu2uQ==
|
||||||
|
|
||||||
"@types/normalize-package-data@^2.4.0":
|
"@types/normalize-package-data@^2.4.0":
|
||||||
version "2.4.0"
|
version "2.4.0"
|
||||||
resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
|
resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
|
||||||
|
@ -675,6 +824,11 @@ balanced-match@^1.0.0:
|
||||||
resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
||||||
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
|
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
|
||||||
|
|
||||||
|
before-after-hook@^2.1.0:
|
||||||
|
version "2.1.0"
|
||||||
|
resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635"
|
||||||
|
integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==
|
||||||
|
|
||||||
binary-extensions@^2.0.0:
|
binary-extensions@^2.0.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9"
|
resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9"
|
||||||
|
@ -782,6 +936,11 @@ chardet@^0.7.0:
|
||||||
resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
|
resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
|
||||||
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
|
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
|
||||||
|
|
||||||
|
checkup@^1.3.0:
|
||||||
|
version "1.3.0"
|
||||||
|
resolved "https://registry.npmjs.org/checkup/-/checkup-1.3.0.tgz#d3800276fea5d0f247ffc951be78c8b02f8e0d76"
|
||||||
|
integrity sha1-04ACdv6l0PJH/8lRvnjIsC+ODXY=
|
||||||
|
|
||||||
chokidar@^3.4.2:
|
chokidar@^3.4.2:
|
||||||
version "3.4.2"
|
version "3.4.2"
|
||||||
resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d"
|
resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d"
|
||||||
|
@ -999,7 +1158,7 @@ cosmiconfig@^7.0.0:
|
||||||
path-type "^4.0.0"
|
path-type "^4.0.0"
|
||||||
yaml "^1.10.0"
|
yaml "^1.10.0"
|
||||||
|
|
||||||
cross-spawn@^6.0.5:
|
cross-spawn@^6.0.0, cross-spawn@^6.0.5:
|
||||||
version "6.0.5"
|
version "6.0.5"
|
||||||
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
|
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
|
||||||
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
|
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
|
||||||
|
@ -1119,6 +1278,11 @@ del@^5.1.0:
|
||||||
rimraf "^3.0.0"
|
rimraf "^3.0.0"
|
||||||
slash "^3.0.0"
|
slash "^3.0.0"
|
||||||
|
|
||||||
|
deprecation@^2.0.0, deprecation@^2.3.1:
|
||||||
|
version "2.3.1"
|
||||||
|
resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919"
|
||||||
|
integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==
|
||||||
|
|
||||||
diff@^4.0.1:
|
diff@^4.0.1:
|
||||||
version "4.0.2"
|
version "4.0.2"
|
||||||
resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
|
resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
|
||||||
|
@ -1410,6 +1574,19 @@ esutils@^2.0.2, esutils@^2.0.3:
|
||||||
resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
|
resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
|
||||||
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
|
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
|
||||||
|
|
||||||
|
execa@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
|
||||||
|
integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
|
||||||
|
dependencies:
|
||||||
|
cross-spawn "^6.0.0"
|
||||||
|
get-stream "^4.0.0"
|
||||||
|
is-stream "^1.1.0"
|
||||||
|
npm-run-path "^2.0.0"
|
||||||
|
p-finally "^1.0.0"
|
||||||
|
signal-exit "^3.0.0"
|
||||||
|
strip-eof "^1.0.0"
|
||||||
|
|
||||||
execa@^4.0.3:
|
execa@^4.0.3:
|
||||||
version "4.0.3"
|
version "4.0.3"
|
||||||
resolved "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2"
|
resolved "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2"
|
||||||
|
@ -1473,6 +1650,11 @@ fastq@^1.6.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
reusify "^1.0.4"
|
reusify "^1.0.4"
|
||||||
|
|
||||||
|
fdir@^4.1.0:
|
||||||
|
version "4.1.0"
|
||||||
|
resolved "https://registry.npmjs.org/fdir/-/fdir-4.1.0.tgz#f739ec79f61f69779a6430a622e5f54c57caf921"
|
||||||
|
integrity sha512-oOkohnPg4nUIkd6w22iGbFD7c7UvVnXB3a7/GHcPSsXDUGm6Jxp12bGI5O0gr0YuhDh5l/vDExdHOnrW/j9EqQ==
|
||||||
|
|
||||||
figures@^3.0.0, figures@^3.2.0:
|
figures@^3.0.0, figures@^3.2.0:
|
||||||
version "3.2.0"
|
version "3.2.0"
|
||||||
resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
|
resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
|
||||||
|
@ -1604,7 +1786,7 @@ get-stdin@^6.0.0:
|
||||||
resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
|
resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
|
||||||
integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
|
integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
|
||||||
|
|
||||||
get-stream@^4.1.0:
|
get-stream@^4.0.0, get-stream@^4.1.0:
|
||||||
version "4.1.0"
|
version "4.1.0"
|
||||||
resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
|
resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
|
||||||
integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
|
integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
|
||||||
|
@ -1974,7 +2156,7 @@ is-path-inside@^3.0.1:
|
||||||
resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017"
|
resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017"
|
||||||
integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==
|
integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==
|
||||||
|
|
||||||
is-plain-object@^4.1.1:
|
is-plain-object@^4.0.0, is-plain-object@^4.1.1:
|
||||||
version "4.1.1"
|
version "4.1.1"
|
||||||
resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-4.1.1.tgz#1a14d6452cbd50790edc7fdaa0aed5a40a35ebb5"
|
resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-4.1.1.tgz#1a14d6452cbd50790edc7fdaa0aed5a40a35ebb5"
|
||||||
integrity sha512-5Aw8LLVsDlZsETVMhoMXzqsXwQqr/0vlnBYzIXJbYo2F4yYlhLHs+Ez7Bod7IIQKWkJbJfxrWD7pA1Dw1TKrwA==
|
integrity sha512-5Aw8LLVsDlZsETVMhoMXzqsXwQqr/0vlnBYzIXJbYo2F4yYlhLHs+Ez7Bod7IIQKWkJbJfxrWD7pA1Dw1TKrwA==
|
||||||
|
@ -1996,6 +2178,11 @@ is-regexp@^1.0.0:
|
||||||
resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
|
resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
|
||||||
integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
|
integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
|
||||||
|
|
||||||
|
is-stream@^1.1.0:
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
|
||||||
|
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
|
||||||
|
|
||||||
is-stream@^2.0.0:
|
is-stream@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
|
resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
|
||||||
|
@ -2314,6 +2501,11 @@ lowercase-keys@^2.0.0:
|
||||||
resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
|
resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
|
||||||
integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
|
integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
|
||||||
|
|
||||||
|
macos-release@^2.2.0:
|
||||||
|
version "2.4.1"
|
||||||
|
resolved "https://registry.npmjs.org/macos-release/-/macos-release-2.4.1.tgz#64033d0ec6a5e6375155a74b1a1eba8e509820ac"
|
||||||
|
integrity sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg==
|
||||||
|
|
||||||
make-dir@^3.0.0, make-dir@^3.0.2:
|
make-dir@^3.0.0, make-dir@^3.0.2:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
|
resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
|
||||||
|
@ -2378,6 +2570,18 @@ micromatch@^4.0.2:
|
||||||
braces "^3.0.1"
|
braces "^3.0.1"
|
||||||
picomatch "^2.0.5"
|
picomatch "^2.0.5"
|
||||||
|
|
||||||
|
mime-db@1.44.0:
|
||||||
|
version "1.44.0"
|
||||||
|
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
|
||||||
|
integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==
|
||||||
|
|
||||||
|
mime-types@^2.1.21:
|
||||||
|
version "2.1.27"
|
||||||
|
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
|
||||||
|
integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==
|
||||||
|
dependencies:
|
||||||
|
mime-db "1.44.0"
|
||||||
|
|
||||||
mimic-fn@^2.1.0:
|
mimic-fn@^2.1.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
|
resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
|
||||||
|
@ -2437,6 +2641,11 @@ nice-try@^1.0.4:
|
||||||
resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
|
resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
|
||||||
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
|
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
|
||||||
|
|
||||||
|
node-fetch@^2.3.0:
|
||||||
|
version "2.6.0"
|
||||||
|
resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
|
||||||
|
integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
|
||||||
|
|
||||||
node-modules-regexp@^1.0.0:
|
node-modules-regexp@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
|
resolved "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
|
||||||
|
@ -2484,6 +2693,13 @@ npm-run-all@^4.1.5:
|
||||||
shell-quote "^1.6.1"
|
shell-quote "^1.6.1"
|
||||||
string.prototype.padend "^3.0.0"
|
string.prototype.padend "^3.0.0"
|
||||||
|
|
||||||
|
npm-run-path@^2.0.0:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
|
||||||
|
integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
|
||||||
|
dependencies:
|
||||||
|
path-key "^2.0.0"
|
||||||
|
|
||||||
npm-run-path@^4.0.0:
|
npm-run-path@^4.0.0:
|
||||||
version "4.0.1"
|
version "4.0.1"
|
||||||
resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
|
resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
|
||||||
|
@ -2599,6 +2815,14 @@ ora@^5.0.0:
|
||||||
strip-ansi "^6.0.0"
|
strip-ansi "^6.0.0"
|
||||||
wcwidth "^1.0.1"
|
wcwidth "^1.0.1"
|
||||||
|
|
||||||
|
os-name@^3.1.0:
|
||||||
|
version "3.1.0"
|
||||||
|
resolved "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801"
|
||||||
|
integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==
|
||||||
|
dependencies:
|
||||||
|
macos-release "^2.2.0"
|
||||||
|
windows-release "^3.1.0"
|
||||||
|
|
||||||
os-tmpdir@~1.0.2:
|
os-tmpdir@~1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
|
resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
|
||||||
|
@ -2614,6 +2838,11 @@ p-defer@^1.0.0:
|
||||||
resolved "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
|
resolved "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
|
||||||
integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
|
integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
|
||||||
|
|
||||||
|
p-finally@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
|
||||||
|
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
|
||||||
|
|
||||||
p-limit@^1.1.0:
|
p-limit@^1.1.0:
|
||||||
version "1.3.0"
|
version "1.3.0"
|
||||||
resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
|
resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
|
||||||
|
@ -2745,7 +2974,7 @@ path-is-absolute@^1.0.0:
|
||||||
resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
||||||
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
|
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
|
||||||
|
|
||||||
path-key@^2.0.1:
|
path-key@^2.0.0, path-key@^2.0.1:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
|
resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
|
||||||
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
|
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
|
||||||
|
@ -2908,6 +3137,19 @@ pupa@^2.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
escape-goat "^2.0.0"
|
escape-goat "^2.0.0"
|
||||||
|
|
||||||
|
putasset@^5.0.3:
|
||||||
|
version "5.0.3"
|
||||||
|
resolved "https://registry.npmjs.org/putasset/-/putasset-5.0.3.tgz#2fa82a8fc5e2333869df8ffb0e1f8618b1c87b9b"
|
||||||
|
integrity sha512-LGRp0SLOC4PDP/BawMaG3/hw6iKgQPRXcBF7WIzx2XTYwHVk2sS3gpvZqz6bf9GhKMal2phs+DF7J6eIAXEL4w==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/rest" "^17.1.3"
|
||||||
|
checkup "^1.3.0"
|
||||||
|
mime-types "^2.1.21"
|
||||||
|
readjson "^2.0.1"
|
||||||
|
try-catch "^3.0.0"
|
||||||
|
try-to-catch "^3.0.0"
|
||||||
|
yargs-parser "^18.1.1"
|
||||||
|
|
||||||
rc@^1.2.8:
|
rc@^1.2.8:
|
||||||
version "1.2.8"
|
version "1.2.8"
|
||||||
resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
|
resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
|
||||||
|
@ -2961,6 +3203,13 @@ readdirp@~3.4.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
picomatch "^2.2.1"
|
picomatch "^2.2.1"
|
||||||
|
|
||||||
|
readjson@^2.0.1:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.npmjs.org/readjson/-/readjson-2.0.1.tgz#1822964dfd0bc0b49c8f983c192a9dd5309eb9e1"
|
||||||
|
integrity sha512-6WuJWYFKx9IVT0zogHlyRC6p+RttAC457garckmGQ8qKICT/xLVrpmvlwp8nTwPHzopbdXIJ593Df8AErIbgeQ==
|
||||||
|
dependencies:
|
||||||
|
try-catch "^3.0.0"
|
||||||
|
|
||||||
regexpp@^3.0.0, regexpp@^3.1.0:
|
regexpp@^3.0.0, regexpp@^3.1.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
|
resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
|
||||||
|
@ -3153,7 +3402,7 @@ shell-quote@^1.6.1:
|
||||||
resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2"
|
resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2"
|
||||||
integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==
|
integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==
|
||||||
|
|
||||||
signal-exit@^3.0.2:
|
signal-exit@^3.0.0, signal-exit@^3.0.2:
|
||||||
version "3.0.3"
|
version "3.0.3"
|
||||||
resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
|
resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
|
||||||
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
|
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
|
||||||
|
@ -3340,6 +3589,11 @@ strip-bom@^4.0.0:
|
||||||
resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878"
|
resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878"
|
||||||
integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==
|
integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==
|
||||||
|
|
||||||
|
strip-eof@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
|
||||||
|
integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
|
||||||
|
|
||||||
strip-final-newline@^2.0.0:
|
strip-final-newline@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
|
resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
|
||||||
|
@ -3458,6 +3712,16 @@ trim-off-newlines@^1.0.1:
|
||||||
resolved "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3"
|
resolved "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3"
|
||||||
integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM=
|
integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM=
|
||||||
|
|
||||||
|
try-catch@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.npmjs.org/try-catch/-/try-catch-3.0.0.tgz#7996d8b89895e2e8ae62cbdbeb4fe17470f8131b"
|
||||||
|
integrity sha512-3uAqUnoemzca1ENvZ72EVimR+E8lqBbzwZ9v4CEbLjkaV3Q+FtdmPUt7jRtoSoTiYjyIMxEkf6YgUpe/voJ1ng==
|
||||||
|
|
||||||
|
try-to-catch@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.npmjs.org/try-to-catch/-/try-to-catch-3.0.0.tgz#a1903b44d13d5124c54d14a461d22ec1f52ea14b"
|
||||||
|
integrity sha512-eIm6ZXwR35jVF8By/HdbbkcaCDTBI5PpCPkejRKrYp0jyf/DbCCcRhHD7/O9jtFI3ewsqo9WctFEiJTS6i+CQA==
|
||||||
|
|
||||||
ts-node@^9.0.0:
|
ts-node@^9.0.0:
|
||||||
version "9.0.0"
|
version "9.0.0"
|
||||||
resolved "https://registry.npmjs.org/ts-node/-/ts-node-9.0.0.tgz#e7699d2a110cc8c0d3b831715e417688683460b3"
|
resolved "https://registry.npmjs.org/ts-node/-/ts-node-9.0.0.tgz#e7699d2a110cc8c0d3b831715e417688683460b3"
|
||||||
|
@ -3542,6 +3806,18 @@ unique-string@^2.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
crypto-random-string "^2.0.0"
|
crypto-random-string "^2.0.0"
|
||||||
|
|
||||||
|
universal-user-agent@^5.0.0:
|
||||||
|
version "5.0.0"
|
||||||
|
resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz#a3182aa758069bf0e79952570ca757de3579c1d9"
|
||||||
|
integrity sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==
|
||||||
|
dependencies:
|
||||||
|
os-name "^3.1.0"
|
||||||
|
|
||||||
|
universal-user-agent@^6.0.0:
|
||||||
|
version "6.0.0"
|
||||||
|
resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee"
|
||||||
|
integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==
|
||||||
|
|
||||||
update-notifier@^4.1.1:
|
update-notifier@^4.1.1:
|
||||||
version "4.1.1"
|
version "4.1.1"
|
||||||
resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.1.tgz#895fc8562bbe666179500f9f2cebac4f26323746"
|
resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.1.tgz#895fc8562bbe666179500f9f2cebac4f26323746"
|
||||||
|
@ -3636,6 +3912,13 @@ widest-line@^3.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
string-width "^4.0.0"
|
string-width "^4.0.0"
|
||||||
|
|
||||||
|
windows-release@^3.1.0:
|
||||||
|
version "3.3.3"
|
||||||
|
resolved "https://registry.npmjs.org/windows-release/-/windows-release-3.3.3.tgz#1c10027c7225743eec6b89df160d64c2e0293999"
|
||||||
|
integrity sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==
|
||||||
|
dependencies:
|
||||||
|
execa "^1.0.0"
|
||||||
|
|
||||||
word-wrap@^1.2.3:
|
word-wrap@^1.2.3:
|
||||||
version "1.2.3"
|
version "1.2.3"
|
||||||
resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
|
resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
|
||||||
|
@ -3687,7 +3970,7 @@ yaml@^1.10.0, yaml@^1.7.2:
|
||||||
resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e"
|
resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e"
|
||||||
integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==
|
integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==
|
||||||
|
|
||||||
yargs-parser@^18.1.2:
|
yargs-parser@^18.1.1, yargs-parser@^18.1.2:
|
||||||
version "18.1.3"
|
version "18.1.3"
|
||||||
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
|
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
|
||||||
integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
|
integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
|
||||||
|
|
Loading…
Reference in a new issue