From ff6caa045979b56b0a3b6e2a730302b8306651cc Mon Sep 17 00:00:00 2001 From: Luca Micieli Date: Thu, 26 Oct 2023 08:39:23 +0200 Subject: [PATCH] feat: add new init command --- packages/cli/package.json | 2 + .../application/cloud/projectsManagement.ts | 2 +- packages/cli/src/application/utils.ts | 7 +- packages/cli/src/commands/init.ts | 92 +++++++++++++++++ packages/cli/src/commands/run.ts | 6 +- packages/cli/tsconfig.json | 4 +- packages/storage-azure/src/index.ts | 4 +- pnpm-lock.yaml | 99 +++++++++++++++---- 8 files changed, 187 insertions(+), 29 deletions(-) create mode 100644 packages/cli/src/commands/init.ts diff --git a/packages/cli/package.json b/packages/cli/package.json index 3aaccac..9e6abbb 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -33,6 +33,7 @@ "axios": "^1.3.4", "chalk": "^4.1.2", "dotenv": "^16.3.1", + "inquirer": "^9.2.11", "ios-deploy": "^1.12.1", "open": "^8.4.2", "prompts": "^2.4.2" @@ -46,6 +47,7 @@ "@rn-buildhub/s3-storage": "workspace:^", "@types/adm-zip": "^0.5.0", "@types/chai": "^4", + "@types/inquirer": "^9.0.6", "@types/mocha": "^9.0.0", "@types/node": "^18.18.4", "@types/prompts": "^2.4.2", diff --git a/packages/cli/src/application/cloud/projectsManagement.ts b/packages/cli/src/application/cloud/projectsManagement.ts index 52186c7..92cb61d 100644 --- a/packages/cli/src/application/cloud/projectsManagement.ts +++ b/packages/cli/src/application/cloud/projectsManagement.ts @@ -12,7 +12,7 @@ export type RemoteConfig = { export type ProjectConfiguration = { remote: RemoteConfig; // this should not stay at project level because it indicates the build that the user has locally - currentBuildId: string | null; + currentBuildId?: string | null; }; diff --git a/packages/cli/src/application/utils.ts b/packages/cli/src/application/utils.ts index 77ff1dd..4e11ca6 100644 --- a/packages/cli/src/application/utils.ts +++ b/packages/cli/src/application/utils.ts @@ -23,12 +23,15 @@ export function executeCommandAsync(command: string, options?: ExecSyncOptionsWi return execAsync(command, options); } +export function getRootDestinationFolderBaseName() { + return ".rn-buildhub"; +} export function getRootDestinationFolder() { - return path.join(getProjectRootDir(), ".rn-build-hub"); + return path.join(getProjectRootDir(), getRootDestinationFolderBaseName()); } export function getConfigFile() { - return path.join(getProjectRootDir(), ".rn-build-hub.json"); + return path.join(getProjectRootDir(), ".rn-buildhub.json"); } export function getProjectRootDir() { diff --git a/packages/cli/src/commands/init.ts b/packages/cli/src/commands/init.ts new file mode 100644 index 0000000..662b0f0 --- /dev/null +++ b/packages/cli/src/commands/init.ts @@ -0,0 +1,92 @@ +import { Command, Flags } from "@oclif/core"; +import fs from "fs"; +import { getConfigFile, getProjectRootDir, getRootDestinationFolderBaseName } from "../application/utils"; +import logger from "../application/logger"; +import { ProjectConfiguration } from "../application/cloud/projectsManagement"; +import path from "path"; + +const remoteMapping = { + azure: "@rn-buildhub/azure-storage", + aws: "@rn-buildhub/s3-storage", + gcp: "@rn-buildhub/gcp-storage" +}; + + +function addDevDepsToPackageJson(deps: Record) { + const packageJsonPath = path.join(getProjectRootDir(), "package.json"); + if (fs.existsSync(packageJsonPath)) { + const packageJson = JSON.parse(fs.readFileSync("package.json", "utf8")); + packageJson.devDependencies = { + ...(packageJson.devDependencies || {}), + ...deps + }; + fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2)); + } + +} + +export default class Init extends Command { + static description = "Create native builds for android and ios"; + + static examples = [ + "<%= config.bin %> <%= command.id %> -i -f=dev", + "<%= config.bin %> <%= command.id %> -a -f=prod", + "<%= config.bin %> <%= command.id %> -a -f=prod --release", + "<%= config.bin %> <%= command.id %> -a --release", + "<%= config.bin %> <%= command.id %> -a --incremental" + ]; + + static flags = { + remote: Flags.string({ + char: "r", description: "The remote storage to use", + options: ["azure", "aws", "gcp"] + }) + }; + + public async run(): Promise { + const { flags } = await this.parse(Init); + // check if already initialized by checking if .rn-buildhub.json exists + if (fs.existsSync(getConfigFile())) { + this.error("Already initialized"); + } + let remote = flags.remote; + if (!remote) { + const { default: inquirer } = await import("inquirer"); + let responses: any = await inquirer.prompt([{ + name: "remote", + message: "select a remote storage to use", + type: "list", + choices: [{ name: "azure" }, { name: "aws" }, { name: "gcp" }] + }]); + remote = responses.remote; + } + if (remote && remote in remoteMapping) { + const remotePackage = remoteMapping[remote as keyof typeof remoteMapping]; + logger.info(`Updating package.json with ${remotePackage} and @rn-buildhub/cli`); + logger.info(`Please install ${remotePackage} with your package manager`); + + const version = this.config.version; + + addDevDepsToPackageJson({ + '@rn-buildhub/cli': `^${version}`, + [remotePackage]: `^${version}` + }); + // create the config file and write it + const config: ProjectConfiguration = { + remote: { + name: remotePackage, + config: {} + } + }; + logger.info(`Creating configuration file ${getConfigFile()}`); + fs.writeFileSync(getConfigFile(), JSON.stringify(config, null, 2)); + } + // append to gitignore .rn-buildhub if gitignore exists + if (fs.existsSync(".gitignore")) { + logger.info(`Adding build cache folder to .gitignore`); + fs.appendFileSync(".gitignore", `${getRootDestinationFolderBaseName()}`); + } + + this.exit(0); + } +} diff --git a/packages/cli/src/commands/run.ts b/packages/cli/src/commands/run.ts index 048efe0..4f61824 100644 --- a/packages/cli/src/commands/run.ts +++ b/packages/cli/src/commands/run.ts @@ -1,10 +1,10 @@ -import { Args, Command, Flags } from '@oclif/core'; +import { Flags } from '@oclif/core'; import { runApp as runAndroid } from '../application/runAndroid'; import { runApp as runIos } from '../application/runIos'; import { startMetro, checkIsMetroRunning } from '../application/metroManager'; import logger from '../application/logger'; import { iosBuildPlatforms } from '../application/iosUtils'; -import { downloadBuildIfNotPresent, updateCurrentBuild } from "./makeBuildCurrent"; +import { downloadBuildIfNotPresent } from "./makeBuildCurrent"; import RemoteAwareCommand from '../_projectAwareCommand'; export default class Run extends RemoteAwareCommand { @@ -18,7 +18,7 @@ export default class Run extends RemoteAwareCommand { flavor: Flags.string({ char: 'f', description: 'Specify the android flavor or the ios scheme to build' }), verbose: Flags.boolean({ description: 'Verbose output' }), forceBuild: Flags.boolean({ aliases: ['fb', 'force-build'], description: 'Force a native rebuild' }), - buildId: Flags.string({ description: 'Specify the build id. Can be local, last or a buildId', default: undefined }), + buildId: Flags.string({ aliases: ['id'], description: 'Specify the build id. Can be local, last or a buildId', default: undefined }), }; static args = { diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json index de614dc..4d0f80b 100644 --- a/packages/cli/tsconfig.json +++ b/packages/cli/tsconfig.json @@ -3,6 +3,7 @@ "declaration": true, "importHelpers": true, "module": "commonjs", + "moduleResolution": "Node16", "outDir": "dist", "rootDir": "src", "strict": true, @@ -10,7 +11,8 @@ "noEmitOnError": true, "target": "es2019", "esModuleInterop": true, - "skipLibCheck": true + "skipLibCheck": true, + "resolveJsonModule": true }, "include": [ "src/**/*" diff --git a/packages/storage-azure/src/index.ts b/packages/storage-azure/src/index.ts index b20c524..071d906 100644 --- a/packages/storage-azure/src/index.ts +++ b/packages/storage-azure/src/index.ts @@ -20,7 +20,7 @@ const ENV_AZURE_AD_AUTH = "RNBH_AZURE_AD_AUTH"; const getEnv = (key: string) => process.env[key]; -function getBlockBlobClient(filename: string, options: AzureBlobRunnerOptions) { +function getBlockBlobClient(filename: string, options: AzureBlobRunnerOptions = {}) { const connectionString = getEnv(ENV_CONNECTION_STRING) ?? options.connectionString; const accountKey = getEnv(ENV_ACCOUNT_KEY) ?? options.accountKey; const accountName = getEnv(ENV_ACCOUNT_NAME) ?? options.accountName; @@ -72,7 +72,7 @@ class AzureStorage extends RemoteStorage { private blob: (filename: string) => BlockBlobClient; // todo validate config - constructor(config: object) { + constructor(config?: object) { super(); require("dotenv").config({ path: path.join(getProjectRootDir(), ".env") }); this.blob = (filename: string) => getBlockBlobClient(filename, config); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e1284cb..72c2533 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,9 +1,5 @@ lockfileVersion: '6.0' -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - importers: .: @@ -53,6 +49,9 @@ importers: dotenv: specifier: ^16.3.1 version: 16.3.1 + inquirer: + specifier: ^9.2.11 + version: 9.2.11 ios-deploy: specifier: ^1.12.1 version: 1.12.2 @@ -87,6 +86,9 @@ importers: '@types/chai': specifier: ^4 version: 4.3.7 + '@types/inquirer': + specifier: ^9.0.6 + version: 9.0.6 '@types/mocha': specifier: ^9.0.0 version: 9.1.1 @@ -2193,6 +2195,13 @@ packages: - typescript dev: true + /@ljharb/through@2.3.11: + resolution: {integrity: sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + dev: false + /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} dependencies: @@ -3705,6 +3714,13 @@ packages: resolution: {integrity: sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==} dev: true + /@types/inquirer@9.0.6: + resolution: {integrity: sha512-1Go1AAP/yOy3Pth5Xf1DC3nfZ03cJLCPx6E2YnSN/5I3w1jHBVH4170DkZ+JxfmA7c9kL9+bf9z3FRGa4kNAqg==} + dependencies: + '@types/through': 0.0.32 + rxjs: 7.8.1 + dev: true + /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true @@ -3788,6 +3804,12 @@ packages: resolution: {integrity: sha512-4g+2YyWe0Ve+LBh+WUm1697PD0Kdi6coG1eU0YjQbwx61AZ8XbEpL1zIT6WjuUKrCMCROpEaYQPDjBnDouBVAQ==} dev: true + /@types/through@0.0.32: + resolution: {integrity: sha512-7XsfXIsjdfJM2wFDRAtEWp3zb2aVPk5QeyZxGlVK57q4u26DczMHhJmlhr0Jqv0THwxam/L8REXkj8M2I/lcvw==} + dependencies: + '@types/node': 18.18.4 + dev: true + /@types/tunnel@0.0.3: resolution: {integrity: sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==} dependencies: @@ -4556,7 +4578,6 @@ packages: dependencies: function-bind: 1.1.1 get-intrinsic: 1.2.1 - dev: true /caller-callsite@2.0.0: resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} @@ -4651,11 +4672,9 @@ packages: /chalk@5.3.0: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: true /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: true /check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} @@ -4758,6 +4777,11 @@ packages: engines: {node: '>= 10'} dev: true + /cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + dev: false + /cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: @@ -5491,6 +5515,11 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: false + /eslint-config-oclif-typescript@1.0.3(eslint@7.32.0)(typescript@4.9.5): resolution: {integrity: sha512-TeJKXWBQ3uKMtzgz++UFNWpe1WCx8mfqRuzZy1LirREgRlVv656SkVG4gNZat5rRNIQgfDmTS+YebxK02kfylA==} engines: {node: '>=12.0.0'} @@ -5885,7 +5914,6 @@ packages: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 - dev: true /fancy-test@2.0.42: resolution: {integrity: sha512-TX8YTALYAmExny+f+G24MFxWry3Pk09+9uykwRjfwjibRxJ9ZjJzrnHYVBZK46XQdyli7d+rQc5U/KK7V6uLsw==} @@ -5971,6 +5999,14 @@ packages: escape-string-regexp: 1.0.5 dev: true + /figures@5.0.0: + resolution: {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==} + engines: {node: '>=14'} + dependencies: + escape-string-regexp: 5.0.0 + is-unicode-supported: 1.3.0 + dev: false + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -6158,7 +6194,6 @@ packages: /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true /functional-red-black-tree@1.0.1: resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} @@ -6237,7 +6272,6 @@ packages: has: 1.0.4 has-proto: 1.0.1 has-symbols: 1.0.3 - dev: true /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} @@ -6523,12 +6557,10 @@ packages: /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} - dev: true /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - dev: true /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} @@ -6544,7 +6576,6 @@ packages: /has@1.0.4: resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} engines: {node: '>= 0.4.0'} - dev: true /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} @@ -6700,7 +6731,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - dev: true /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} @@ -6839,6 +6869,27 @@ packages: wrap-ansi: 6.2.0 dev: true + /inquirer@9.2.11: + resolution: {integrity: sha512-B2LafrnnhbRzCWfAdOXisUzL89Kg8cVJlYmhqoi3flSiV/TveO+nsXwgKr9h9PIo+J1hz7nBSk6gegRIMBBf7g==} + engines: {node: '>=14.18.0'} + dependencies: + '@ljharb/through': 2.3.11 + ansi-escapes: 4.3.2 + chalk: 5.3.0 + cli-cursor: 3.1.0 + cli-width: 4.1.0 + external-editor: 3.1.0 + figures: 5.0.0 + lodash: 4.17.21 + mute-stream: 1.0.0 + ora: 5.4.1 + run-async: 3.0.0 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: false + /install@0.13.0: resolution: {integrity: sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==} engines: {node: '>= 0.10'} @@ -7045,6 +7096,11 @@ packages: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} + /is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + dev: false + /is-utf8@0.2.1: resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} dev: true @@ -7660,7 +7716,6 @@ packages: /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: true /log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} @@ -8507,7 +8562,6 @@ packages: /mute-stream@1.0.0: resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true /nanoid@3.3.3: resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==} @@ -9076,7 +9130,6 @@ packages: /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - dev: true /p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} @@ -9918,6 +9971,11 @@ packages: engines: {node: '>=0.12.0'} dev: true + /run-async@3.0.0: + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + engines: {node: '>=0.12.0'} + dev: false + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -9927,7 +9985,6 @@ packages: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: tslib: 2.6.2 - dev: true /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -9944,7 +10001,6 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true /sax@1.2.1: resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==} @@ -10581,7 +10637,6 @@ packages: engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 - dev: true /tmp@0.2.1: resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} @@ -11361,3 +11416,7 @@ packages: /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false