diff --git a/.yarn/cache/@jspm-core-npm-2.0.1-6915565e6a-611f37cadd.zip b/.yarn/cache/@jspm-core-npm-2.0.1-6915565e6a-611f37cadd.zip new file mode 100644 index 0000000000..1221837f93 Binary files /dev/null and b/.yarn/cache/@jspm-core-npm-2.0.1-6915565e6a-611f37cadd.zip differ diff --git a/.yarn/cache/@octokit-app-npm-12.0.7-03e4ae13df-a987e46d20.zip b/.yarn/cache/@octokit-app-npm-12.0.7-03e4ae13df-a987e46d20.zip deleted file mode 100644 index 1c867f9a47..0000000000 Binary files a/.yarn/cache/@octokit-app-npm-12.0.7-03e4ae13df-a987e46d20.zip and /dev/null differ diff --git a/.yarn/cache/@octokit-app-npm-14.0.0-82926149fa-6d1923f5e2.zip b/.yarn/cache/@octokit-app-npm-14.0.0-82926149fa-6d1923f5e2.zip new file mode 100644 index 0000000000..f9dd83ca10 Binary files /dev/null and b/.yarn/cache/@octokit-app-npm-14.0.0-82926149fa-6d1923f5e2.zip differ diff --git a/.yarn/cache/@octokit-auth-app-npm-6.0.0-88cce64c7c-e3eb3ff7be.zip b/.yarn/cache/@octokit-auth-app-npm-6.0.0-88cce64c7c-e3eb3ff7be.zip new file mode 100644 index 0000000000..7b505f1978 Binary files /dev/null and b/.yarn/cache/@octokit-auth-app-npm-6.0.0-88cce64c7c-e3eb3ff7be.zip differ diff --git a/.yarn/cache/@octokit-auth-oauth-app-npm-7.0.0-0782f4f46b-fa050fbd05.zip b/.yarn/cache/@octokit-auth-oauth-app-npm-7.0.0-0782f4f46b-fa050fbd05.zip new file mode 100644 index 0000000000..9a37cbff30 Binary files /dev/null and b/.yarn/cache/@octokit-auth-oauth-app-npm-7.0.0-0782f4f46b-fa050fbd05.zip differ diff --git a/.yarn/cache/@octokit-auth-oauth-device-npm-6.0.0-2501846a20-ba6e46a42a.zip b/.yarn/cache/@octokit-auth-oauth-device-npm-6.0.0-2501846a20-ba6e46a42a.zip new file mode 100644 index 0000000000..ba221f6bcf Binary files /dev/null and b/.yarn/cache/@octokit-auth-oauth-device-npm-6.0.0-2501846a20-ba6e46a42a.zip differ diff --git a/.yarn/cache/@octokit-auth-oauth-user-npm-4.0.0-a6aff64dd4-d4382d5fa3.zip b/.yarn/cache/@octokit-auth-oauth-user-npm-4.0.0-a6aff64dd4-d4382d5fa3.zip new file mode 100644 index 0000000000..0331bb653f Binary files /dev/null and b/.yarn/cache/@octokit-auth-oauth-user-npm-4.0.0-a6aff64dd4-d4382d5fa3.zip differ diff --git a/.yarn/cache/@octokit-auth-token-npm-4.0.0-9ad78a752f-d78f4dc48b.zip b/.yarn/cache/@octokit-auth-token-npm-4.0.0-9ad78a752f-d78f4dc48b.zip new file mode 100644 index 0000000000..1772a6eb18 Binary files /dev/null and b/.yarn/cache/@octokit-auth-token-npm-4.0.0-9ad78a752f-d78f4dc48b.zip differ diff --git a/.yarn/cache/@octokit-auth-unauthenticated-npm-5.0.0-d7e59efe4e-ec0715c2fb.zip b/.yarn/cache/@octokit-auth-unauthenticated-npm-5.0.0-d7e59efe4e-ec0715c2fb.zip new file mode 100644 index 0000000000..8372f913f2 Binary files /dev/null and b/.yarn/cache/@octokit-auth-unauthenticated-npm-5.0.0-d7e59efe4e-ec0715c2fb.zip differ diff --git a/.yarn/cache/@octokit-core-npm-5.0.0-c9003d20df-1a5d1112a2.zip b/.yarn/cache/@octokit-core-npm-5.0.0-c9003d20df-1a5d1112a2.zip new file mode 100644 index 0000000000..0ceb2b28d1 Binary files /dev/null and b/.yarn/cache/@octokit-core-npm-5.0.0-c9003d20df-1a5d1112a2.zip differ diff --git a/.yarn/cache/@octokit-endpoint-npm-9.0.0-0d4530e44e-0e402c4d0f.zip b/.yarn/cache/@octokit-endpoint-npm-9.0.0-0d4530e44e-0e402c4d0f.zip new file mode 100644 index 0000000000..a4ab67ba6a Binary files /dev/null and b/.yarn/cache/@octokit-endpoint-npm-9.0.0-0d4530e44e-0e402c4d0f.zip differ diff --git a/.yarn/cache/@octokit-graphql-npm-7.0.1-5feff6ab44-7ee907987b.zip b/.yarn/cache/@octokit-graphql-npm-7.0.1-5feff6ab44-7ee907987b.zip new file mode 100644 index 0000000000..dfc34f7ce3 Binary files /dev/null and b/.yarn/cache/@octokit-graphql-npm-7.0.1-5feff6ab44-7ee907987b.zip differ diff --git a/.yarn/cache/@octokit-oauth-app-npm-3.6.0-93a2b53ca2-bbaa30a4db.zip b/.yarn/cache/@octokit-oauth-app-npm-3.6.0-93a2b53ca2-bbaa30a4db.zip deleted file mode 100644 index 75ab9c8dd9..0000000000 Binary files a/.yarn/cache/@octokit-oauth-app-npm-3.6.0-93a2b53ca2-bbaa30a4db.zip and /dev/null differ diff --git a/.yarn/cache/@octokit-oauth-app-npm-6.0.0-b89f75e239-5d07c6fe15.zip b/.yarn/cache/@octokit-oauth-app-npm-6.0.0-b89f75e239-5d07c6fe15.zip new file mode 100644 index 0000000000..655c844147 Binary files /dev/null and b/.yarn/cache/@octokit-oauth-app-npm-6.0.0-b89f75e239-5d07c6fe15.zip differ diff --git a/.yarn/cache/@octokit-oauth-authorization-url-npm-6.0.2-7e66c4af6b-0f11169a3e.zip b/.yarn/cache/@octokit-oauth-authorization-url-npm-6.0.2-7e66c4af6b-0f11169a3e.zip new file mode 100644 index 0000000000..a94530cc5a Binary files /dev/null and b/.yarn/cache/@octokit-oauth-authorization-url-npm-6.0.2-7e66c4af6b-0f11169a3e.zip differ diff --git a/.yarn/cache/@octokit-oauth-methods-npm-4.0.0-5405a95ddc-623f3031f5.zip b/.yarn/cache/@octokit-oauth-methods-npm-4.0.0-5405a95ddc-623f3031f5.zip new file mode 100644 index 0000000000..4cea549258 Binary files /dev/null and b/.yarn/cache/@octokit-oauth-methods-npm-4.0.0-5405a95ddc-623f3031f5.zip differ diff --git a/.yarn/cache/@octokit-openapi-types-npm-18.0.0-1586e405d6-d487d6c6c1.zip b/.yarn/cache/@octokit-openapi-types-npm-18.0.0-1586e405d6-d487d6c6c1.zip new file mode 100644 index 0000000000..079fd4b71d Binary files /dev/null and b/.yarn/cache/@octokit-openapi-types-npm-18.0.0-1586e405d6-d487d6c6c1.zip differ diff --git a/.yarn/cache/@octokit-plugin-paginate-rest-npm-8.0.0-3e517c8a85-b5d7cee505.zip b/.yarn/cache/@octokit-plugin-paginate-rest-npm-8.0.0-3e517c8a85-b5d7cee505.zip new file mode 100644 index 0000000000..79a7fa9951 Binary files /dev/null and b/.yarn/cache/@octokit-plugin-paginate-rest-npm-8.0.0-3e517c8a85-b5d7cee505.zip differ diff --git a/.yarn/cache/@octokit-request-error-npm-5.0.0-262908a2c1-2012eca66f.zip b/.yarn/cache/@octokit-request-error-npm-5.0.0-262908a2c1-2012eca66f.zip new file mode 100644 index 0000000000..ff3dcb695b Binary files /dev/null and b/.yarn/cache/@octokit-request-error-npm-5.0.0-262908a2c1-2012eca66f.zip differ diff --git a/.yarn/cache/@octokit-request-npm-8.1.0-87eb780984-00f71e1ca0.zip b/.yarn/cache/@octokit-request-npm-8.1.0-87eb780984-00f71e1ca0.zip new file mode 100644 index 0000000000..67ca117f82 Binary files /dev/null and b/.yarn/cache/@octokit-request-npm-8.1.0-87eb780984-00f71e1ca0.zip differ diff --git a/.yarn/cache/@octokit-types-npm-11.1.0-668299c1c7-72627a94dd.zip b/.yarn/cache/@octokit-types-npm-11.1.0-668299c1c7-72627a94dd.zip new file mode 100644 index 0000000000..6b7b880b73 Binary files /dev/null and b/.yarn/cache/@octokit-types-npm-11.1.0-668299c1c7-72627a94dd.zip differ diff --git a/.yarn/cache/@octokit-webhooks-methods-npm-4.0.0-e4fcb7a631-07010438e5.zip b/.yarn/cache/@octokit-webhooks-methods-npm-4.0.0-e4fcb7a631-07010438e5.zip new file mode 100644 index 0000000000..d32e7eb670 Binary files /dev/null and b/.yarn/cache/@octokit-webhooks-methods-npm-4.0.0-e4fcb7a631-07010438e5.zip differ diff --git a/.yarn/cache/@octokit-webhooks-npm-12.0.3-cbd3575dab-2db63122ea.zip b/.yarn/cache/@octokit-webhooks-npm-12.0.3-cbd3575dab-2db63122ea.zip new file mode 100644 index 0000000000..63bedc8c76 Binary files /dev/null and b/.yarn/cache/@octokit-webhooks-npm-12.0.3-cbd3575dab-2db63122ea.zip differ diff --git a/.yarn/cache/@octokit-webhooks-npm-9.22.0-a839a0a83b-8d0c4d6716.zip b/.yarn/cache/@octokit-webhooks-npm-9.22.0-a839a0a83b-8d0c4d6716.zip deleted file mode 100644 index 315327ad7d..0000000000 Binary files a/.yarn/cache/@octokit-webhooks-npm-9.22.0-a839a0a83b-8d0c4d6716.zip and /dev/null differ diff --git a/.yarn/cache/@octokit-webhooks-types-npm-5.2.0-238f8fad9f-d9a70012b3.zip b/.yarn/cache/@octokit-webhooks-types-npm-5.2.0-238f8fad9f-d9a70012b3.zip deleted file mode 100644 index c1a2b2548c..0000000000 Binary files a/.yarn/cache/@octokit-webhooks-types-npm-5.2.0-238f8fad9f-d9a70012b3.zip and /dev/null differ diff --git a/.yarn/cache/@octokit-webhooks-types-npm-7.1.0-0e3a15740e-5aea38c38e.zip b/.yarn/cache/@octokit-webhooks-types-npm-7.1.0-0e3a15740e-5aea38c38e.zip new file mode 100644 index 0000000000..e749067185 Binary files /dev/null and b/.yarn/cache/@octokit-webhooks-types-npm-7.1.0-0e3a15740e-5aea38c38e.zip differ diff --git a/.yarn/cache/@types-jsonwebtoken-npm-9.0.2-7af15f7b9b-3bb8d40e78.zip b/.yarn/cache/@types-jsonwebtoken-npm-9.0.2-7af15f7b9b-3bb8d40e78.zip new file mode 100644 index 0000000000..9f0c9a9757 Binary files /dev/null and b/.yarn/cache/@types-jsonwebtoken-npm-9.0.2-7af15f7b9b-3bb8d40e78.zip differ diff --git a/.yarn/cache/esbuild-plugins-node-modules-polyfill-npm-1.2.0-4a291df066-9e4a7694fb.zip b/.yarn/cache/esbuild-plugins-node-modules-polyfill-npm-1.2.0-4a291df066-9e4a7694fb.zip new file mode 100644 index 0000000000..b78135a4eb Binary files /dev/null and b/.yarn/cache/esbuild-plugins-node-modules-polyfill-npm-1.2.0-4a291df066-9e4a7694fb.zip differ diff --git a/.yarn/cache/fromentries-npm-1.3.2-f5392090b8-33729c529c.zip b/.yarn/cache/fromentries-npm-1.3.2-f5392090b8-33729c529c.zip deleted file mode 100644 index 060711fe32..0000000000 Binary files a/.yarn/cache/fromentries-npm-1.3.2-f5392090b8-33729c529c.zip and /dev/null differ diff --git a/.yarn/cache/local-pkg-npm-0.4.3-de61dda1fd-7825aca531.zip b/.yarn/cache/local-pkg-npm-0.4.3-de61dda1fd-7825aca531.zip new file mode 100644 index 0000000000..5138507604 Binary files /dev/null and b/.yarn/cache/local-pkg-npm-0.4.3-de61dda1fd-7825aca531.zip differ diff --git a/.yarn/cache/lru-cache-npm-10.0.0-256d74bb20-18f101675f.zip b/.yarn/cache/lru-cache-npm-10.0.0-256d74bb20-18f101675f.zip new file mode 100644 index 0000000000..53a12f822a Binary files /dev/null and b/.yarn/cache/lru-cache-npm-10.0.0-256d74bb20-18f101675f.zip differ diff --git a/.yarn/cache/resolve.exports-npm-2.0.2-f59b42bbe5-1c7778ca1b.zip b/.yarn/cache/resolve.exports-npm-2.0.2-f59b42bbe5-1c7778ca1b.zip new file mode 100644 index 0000000000..25724ce5aa Binary files /dev/null and b/.yarn/cache/resolve.exports-npm-2.0.2-f59b42bbe5-1c7778ca1b.zip differ diff --git a/.yarn/cache/universal-github-app-jwt-npm-1.1.1-07e57504be-31d30150b9.zip b/.yarn/cache/universal-github-app-jwt-npm-1.1.1-07e57504be-31d30150b9.zip new file mode 100644 index 0000000000..96ed5c6028 Binary files /dev/null and b/.yarn/cache/universal-github-app-jwt-npm-1.1.1-07e57504be-31d30150b9.zip differ diff --git a/packages/deployment-service/.gitignore b/packages/deployment-service/.gitignore index cacbaac334..dc23e535a2 100644 --- a/packages/deployment-service/.gitignore +++ b/packages/deployment-service/.gitignore @@ -32,3 +32,5 @@ ormconfig.json .cdk.staging cdk.out + +bundle/ diff --git a/packages/deployment-service/cdk/lib/cdk-stack.ts b/packages/deployment-service/cdk/lib/cdk-stack.ts index 7b4384accd..9fb566cea5 100644 --- a/packages/deployment-service/cdk/lib/cdk-stack.ts +++ b/packages/deployment-service/cdk/lib/cdk-stack.ts @@ -45,6 +45,7 @@ type FunctionSetup = { queues?: sqs.IQueue[] topic?: Topic role?: Role + entrypoint: string, } const getNumberOfMigrations = async () => { @@ -109,17 +110,20 @@ export const createStack = async () => { ], timeout: 900, RAM: 2048, + entrypoint: 'bundle/sqs.zip', }, appEvents: { handler: createFileLoc('sqs', 'handle'), policies: [...policies.commonBackendPolicies, policies.cloudFrontPolicy, policies.route53Policy], queues: [queues[QueueNames.APP_EVENTS]], + entrypoint: 'bundle/sqs.zip', }, sns: { handler: createFileLoc('sns', 'handle'), policies: [...policies.commonBackendPolicies], topic: codebuildSnsTopic, timeout: 900, + entrypoint: 'bundle/sns.zip', }, httpApi: { handler: createFileLoc('http', 'handler'), @@ -136,6 +140,7 @@ export const createStack = async () => { }, headers: ['Content-Type', 'api-version', 'X-Api-Key'], }, + entrypoint: 'bundle/http.zip', }, http: { handler: createFileLoc('http', 'handler'), @@ -153,6 +158,7 @@ export const createStack = async () => { headers: ['Content-Type', 'Authorization', 'api-version'], authorizer: true, }, + entrypoint: 'bundle/http.zip', }, } @@ -184,9 +190,9 @@ export const createStack = async () => { for (const [name, options] of Object.entries(functionSetups)) { const lambda = createLambda({ + entrypoint: options.entrypoint, stack, name, - entrypoint: path.resolve('bundle.zip'), handler: options.handler, env, vpc, @@ -223,7 +229,7 @@ export const createStack = async () => { const migrationHandler = createLambda({ stack, name: 'cloud-deployment-migration', - entrypoint: path.resolve('bundle.zip'), + entrypoint: 'bundle/migration-run.zip', handler: createFileLoc('migration-run', 'migrationRun'), env, vpc, diff --git a/packages/deployment-service/package.json b/packages/deployment-service/package.json index cfcbc0ca66..15f3d65683 100644 --- a/packages/deployment-service/package.json +++ b/packages/deployment-service/package.json @@ -11,7 +11,7 @@ "@nestjs/passport": "^8.2.2", "@nestjs/platform-express": "^9.4.2", "@nestjs/typeorm": "^8.1.4", - "@octokit/app": "^12.0.7", + "@octokit/app": "^14.0.0", "@reapit/api-key-verify": "workspace:packages/api-key-verify", "@reapit/connect-session": "workspace:packages/connect-session", "@reapit/utils-nest": "workspace:packages/utils-nest", @@ -73,6 +73,7 @@ "@typescript-eslint/parser": "^5.59.7", "concurrently": "^6.5.1", "cross-env": "^7.0.3", + "esbuild-plugins-node-modules-polyfill": "^1.2.0", "eslint": "^8.41.0", "eslint-plugin-prettier": "^4.2.1", "jest": "^29.5.0", diff --git a/packages/deployment-service/src/sqs.ts b/packages/deployment-service/src/sqs.ts index bfa562498f..0b918eeacd 100644 --- a/packages/deployment-service/src/sqs.ts +++ b/packages/deployment-service/src/sqs.ts @@ -3,6 +3,10 @@ import { AppModule } from './app-module' import { WorkflowHandlerProvider } from './events/workflow-handler-provider' import { SQSHandler } from 'aws-lambda' import { INestMicroservice } from '@nestjs/common' +const crypto = require('crypto') + +global.crypto = crypto + let app: INestMicroservice diff --git a/packages/deployment-service/tsup-zip.config.json b/packages/deployment-service/tsup-zip.config.json new file mode 100644 index 0000000000..4f100d33bd --- /dev/null +++ b/packages/deployment-service/tsup-zip.config.json @@ -0,0 +1,3 @@ +{ + "bundleFiles": ["dist/http.js", "dist/sqs.js", "dist/sns.js", "dist/migration-run.js"] +} diff --git a/packages/deployment-service/tsup.config.js b/packages/deployment-service/tsup.config.js index f47b283724..f2d3c5e9f3 100644 --- a/packages/deployment-service/tsup.config.js +++ b/packages/deployment-service/tsup.config.js @@ -1,18 +1,31 @@ import { defineConfig } from 'tsup' import fs from 'fs' import config from './config.json' +import { nodeModulesPolyfillPlugin } from 'esbuild-plugins-node-modules-polyfill'; const pkgJson = JSON.parse(fs.readFileSync('package.json', 'utf-8')) export default defineConfig({ - entry: ['src/http.ts', 'src/sqs.ts', 'src/sns.ts'], + entry: ['src/http.ts', 'src/sqs.ts', 'src/sns.ts', 'src/migration-run.ts'], target: 'node18', clean: true, minify: config.NODE_ENV === 'production', esbuildOptions: (opts) => { opts.resolveExtensions = ['.ts', '.mjs', '.js'] + opts.plugins = [ + ...opts.plugins, + nodeModulesPolyfillPlugin({ + // modules: ['crypto'], + global: { + crypto: true, + }, + }), + ] }, - noExternal: Object.keys(pkgJson.dependencies), + noExternal: [ + ...Object.keys(pkgJson.dependencies), + 'crypto', + ], external: [ '@nestjs/microservices', '@nestjs/websockets', @@ -26,5 +39,6 @@ export default defineConfig({ 'mqtt', 'amqplib', 'redis', + 'crypto', ], }) diff --git a/packages/ts-scripts/src/tsup-zip/index.ts b/packages/ts-scripts/src/tsup-zip/index.ts index 3fd44eff89..07762d03e6 100644 --- a/packages/ts-scripts/src/tsup-zip/index.ts +++ b/packages/ts-scripts/src/tsup-zip/index.ts @@ -24,9 +24,10 @@ const findConfig = () => { return JSON.parse(fs.readFileSync(path.resolve('tsup-zip.config.json')).toString()) } -const bundle = (includes: string[], packageFolder: string) => { +const bundle = (packageFolder: string) => { const tmpDir = fs.mkdtempSync([os.tmpdir(), `${packageFolder}-build-`].join(path.sep)) const config = findConfig() + const includes = config.bundleFiles || ['dist'] fs.mkdirSync(`${tmpDir}/node_modules`) ;(config['bundle-packages'] || []).forEach((folder) => { @@ -37,12 +38,35 @@ const bundle = (includes: string[], packageFolder: string) => { fs.mkdirSync(`${tmpDir}/packages/${packageFolder}`) includes.forEach((folder) => { + if (folder.includes('/')) { + const resolveEndFolder = folder.split('/') + resolveEndFolder.pop() + if (!fs.existsSync(path.resolve(tmpDir, 'packages', packageFolder, resolveEndFolder.join('/')))) { + fs.mkdirSync(path.resolve(tmpDir, 'packages', packageFolder, resolveEndFolder.join('/'))) + } + } execSync(`cp -r ${path.resolve(process.cwd(), folder)} ${tmpDir}/packages/${packageFolder}/${folder}`) }) - execSync(`cd ${tmpDir} && zip -q -r ${path.resolve('bundle.zip')} .`) + if (includes.length >= 2) { + if (fs.existsSync(`${process.cwd()}/bundle`)) { + fs.rmSync(`${process.cwd()}/bundle`, { + force: true, + recursive: true, + }) + } + fs.mkdirSync(`${process.cwd()}/bundle`) + includes.forEach(file => { + const parts = file.split('/') + const fullFileName = parts.pop() + const [fileName] = fullFileName.split('.') + execSync(`cd ${tmpDir} && zip -q -r ${path.resolve('bundle', fileName)} ./packages/${packageFolder}/${parts.join('/')} ./node_modules`) + }) + } else { + execSync(`cd ${tmpDir} && zip -q -r ${path.resolve('bundle.zip')} .`) + } } const [folderPackage] = process.argv.slice(2) -bundle(['dist'], folderPackage) +bundle(folderPackage) diff --git a/yarn.lock b/yarn.lock index ff8232f5e0..f9832e5d01 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9806,6 +9806,13 @@ __metadata: languageName: node linkType: hard +"@jspm/core@npm:^2.0.1": + version: 2.0.1 + resolution: "@jspm/core@npm:2.0.1" + checksum: 611f37cadd8a76662309e89afb68bf5936d0fed16aacc8886fef0f0af94a9f7e1241ce6c619b650fa1064631374f6fcadad99be04c9cf504a47f5361746b8d7f + languageName: node + linkType: hard + "@kwsites/file-exists@npm:^1.1.1": version: 1.1.1 resolution: "@kwsites/file-exists@npm:1.1.1" @@ -10503,18 +10510,18 @@ __metadata: languageName: node linkType: hard -"@octokit/app@npm:^12.0.7": - version: 12.0.7 - resolution: "@octokit/app@npm:12.0.7" +"@octokit/app@npm:^14.0.0": + version: 14.0.0 + resolution: "@octokit/app@npm:14.0.0" dependencies: - "@octokit/auth-app": ^3.3.0 - "@octokit/auth-unauthenticated": ^2.0.4 - "@octokit/core": ^3.4.0 - "@octokit/oauth-app": ^3.3.2 - "@octokit/plugin-paginate-rest": ^2.13.3 - "@octokit/types": ^6.27.1 - "@octokit/webhooks": ^9.0.1 - checksum: a987e46d203193771ad5b170f37c00690d530794c37bee1e72269fb1cd3ebab6d103ef23556ac96b603a7b8dbcb3f451fee9d9f4f66e680f8b2671e3e5710e02 + "@octokit/auth-app": ^6.0.0 + "@octokit/auth-unauthenticated": ^5.0.0 + "@octokit/core": ^5.0.0 + "@octokit/oauth-app": ^6.0.0 + "@octokit/plugin-paginate-rest": ^8.0.0 + "@octokit/types": ^11.1.0 + "@octokit/webhooks": ^12.0.1 + checksum: 6d1923f5e213ed52a656bd250a3d0504be67e51e95ba5f7ac9658bd19232a67c274267f61b5137905104ea98736d7e00b438dabf87f54596429f34836f14d7bf languageName: node linkType: hard @@ -10536,7 +10543,24 @@ __metadata: languageName: node linkType: hard -"@octokit/auth-oauth-app@npm:^4.0.0, @octokit/auth-oauth-app@npm:^4.3.0": +"@octokit/auth-app@npm:^6.0.0": + version: 6.0.0 + resolution: "@octokit/auth-app@npm:6.0.0" + dependencies: + "@octokit/auth-oauth-app": ^7.0.0 + "@octokit/auth-oauth-user": ^4.0.0 + "@octokit/request": ^8.0.2 + "@octokit/request-error": ^5.0.0 + "@octokit/types": ^11.0.0 + deprecation: ^2.3.1 + lru-cache: ^10.0.0 + universal-github-app-jwt: ^1.1.1 + universal-user-agent: ^6.0.0 + checksum: e3eb3ff7be50557634c5712cfa1413522cfc167f87e096d4d344961fecdc4f8ec91cfb0a025705e48d2c1b663203d90a50bd5b99a6e0d667433d043f27fe3716 + languageName: node + linkType: hard + +"@octokit/auth-oauth-app@npm:^4.3.0": version: 4.3.0 resolution: "@octokit/auth-oauth-app@npm:4.3.0" dependencies: @@ -10551,6 +10575,21 @@ __metadata: languageName: node linkType: hard +"@octokit/auth-oauth-app@npm:^7.0.0": + version: 7.0.0 + resolution: "@octokit/auth-oauth-app@npm:7.0.0" + dependencies: + "@octokit/auth-oauth-device": ^6.0.0 + "@octokit/auth-oauth-user": ^4.0.0 + "@octokit/request": ^8.0.2 + "@octokit/types": ^11.0.0 + "@types/btoa-lite": ^1.0.0 + btoa-lite: ^1.0.0 + universal-user-agent: ^6.0.0 + checksum: fa050fbd05cb8da888672f029d65bf6526a8b0c3da43b4c1efac396f48d423adedd0e1d80624de1c95c0e9f5a2e47ad42c71ddca39f9371d8462331905c5d452 + languageName: node + linkType: hard + "@octokit/auth-oauth-device@npm:^3.1.1": version: 3.1.2 resolution: "@octokit/auth-oauth-device@npm:3.1.2" @@ -10563,7 +10602,19 @@ __metadata: languageName: node linkType: hard -"@octokit/auth-oauth-user@npm:^1.2.1, @octokit/auth-oauth-user@npm:^1.2.3, @octokit/auth-oauth-user@npm:^1.3.0": +"@octokit/auth-oauth-device@npm:^6.0.0": + version: 6.0.0 + resolution: "@octokit/auth-oauth-device@npm:6.0.0" + dependencies: + "@octokit/oauth-methods": ^4.0.0 + "@octokit/request": ^8.0.0 + "@octokit/types": ^11.0.0 + universal-user-agent: ^6.0.0 + checksum: ba6e46a42a68ca0e6d345b10de257b4e0764e6abeedfa3b7bd27bbe4336cbabf3dc081c97eb860939e4fbcb9827c62be5c4396023342db4717f254f06cdbba43 + languageName: node + linkType: hard + +"@octokit/auth-oauth-user@npm:^1.2.1, @octokit/auth-oauth-user@npm:^1.2.3": version: 1.3.0 resolution: "@octokit/auth-oauth-user@npm:1.3.0" dependencies: @@ -10577,6 +10628,20 @@ __metadata: languageName: node linkType: hard +"@octokit/auth-oauth-user@npm:^4.0.0": + version: 4.0.0 + resolution: "@octokit/auth-oauth-user@npm:4.0.0" + dependencies: + "@octokit/auth-oauth-device": ^6.0.0 + "@octokit/oauth-methods": ^4.0.0 + "@octokit/request": ^8.0.2 + "@octokit/types": ^11.0.0 + btoa-lite: ^1.0.0 + universal-user-agent: ^6.0.0 + checksum: d4382d5fa3b52e5a7595da92e2bea921793bbce3f03c0c047720db10b1443f42d27c21453d00f4ee30383e2c4279175a53b613de25584b004200c201f63b5f45 + languageName: node + linkType: hard + "@octokit/auth-token@npm:^2.4.0": version: 2.5.0 resolution: "@octokit/auth-token@npm:2.5.0" @@ -10595,7 +10660,14 @@ __metadata: languageName: node linkType: hard -"@octokit/auth-unauthenticated@npm:^2.0.0, @octokit/auth-unauthenticated@npm:^2.0.2, @octokit/auth-unauthenticated@npm:^2.0.4": +"@octokit/auth-token@npm:^4.0.0": + version: 4.0.0 + resolution: "@octokit/auth-token@npm:4.0.0" + checksum: d78f4dc48b214d374aeb39caec4fdbf5c1e4fd8b9fcb18f630b1fe2cbd5a880fca05445f32b4561f41262cb551746aeb0b49e89c95c6dd99299706684d0cae2f + languageName: node + linkType: hard + +"@octokit/auth-unauthenticated@npm:^2.0.2": version: 2.1.0 resolution: "@octokit/auth-unauthenticated@npm:2.1.0" dependencies: @@ -10605,7 +10677,17 @@ __metadata: languageName: node linkType: hard -"@octokit/core@npm:^3.2.3, @octokit/core@npm:^3.2.4, @octokit/core@npm:^3.3.2, @octokit/core@npm:^3.4.0": +"@octokit/auth-unauthenticated@npm:^5.0.0": + version: 5.0.0 + resolution: "@octokit/auth-unauthenticated@npm:5.0.0" + dependencies: + "@octokit/request-error": ^5.0.0 + "@octokit/types": ^11.0.0 + checksum: ec0715c2fbcfe5a4eaaf996c570e634d339ebbeaa00c1f336b3277c1477c96cdd09342fccdff63edc42ad80dff4ce0f02c3a5e0a6560a35188439330b6624690 + languageName: node + linkType: hard + +"@octokit/core@npm:^3.2.3, @octokit/core@npm:^3.2.4": version: 3.5.1 resolution: "@octokit/core@npm:3.5.1" dependencies: @@ -10620,6 +10702,21 @@ __metadata: languageName: node linkType: hard +"@octokit/core@npm:^5.0.0": + version: 5.0.0 + resolution: "@octokit/core@npm:5.0.0" + dependencies: + "@octokit/auth-token": ^4.0.0 + "@octokit/graphql": ^7.0.0 + "@octokit/request": ^8.0.2 + "@octokit/request-error": ^5.0.0 + "@octokit/types": ^11.0.0 + before-after-hook: ^2.2.0 + universal-user-agent: ^6.0.0 + checksum: 1a5d1112a2403d146aa1db7aaf81a31192ef6b0310a1e6f68c3e439fded22bd4b3a930f5071585e6ca0f2f5e7fc4a1aac68910525b71b03732c140e362d26a33 + languageName: node + linkType: hard + "@octokit/endpoint@npm:^6.0.1": version: 6.0.3 resolution: "@octokit/endpoint@npm:6.0.3" @@ -10631,6 +10728,17 @@ __metadata: languageName: node linkType: hard +"@octokit/endpoint@npm:^9.0.0": + version: 9.0.0 + resolution: "@octokit/endpoint@npm:9.0.0" + dependencies: + "@octokit/types": ^11.0.0 + is-plain-object: ^5.0.0 + universal-user-agent: ^6.0.0 + checksum: 0e402c4d0fbe5b8053630cedb30dde5074bb6410828a05dc93d7e0fdd6c17f9a44b66586ef1a4e4ee0baa8d34ef7d6f535e2f04d9ea42909b7fc7ff55ce56a48 + languageName: node + linkType: hard + "@octokit/graphql@npm:^4.5.8": version: 4.6.0 resolution: "@octokit/graphql@npm:4.6.0" @@ -10642,31 +10750,48 @@ __metadata: languageName: node linkType: hard -"@octokit/oauth-app@npm:^3.3.2": - version: 3.6.0 - resolution: "@octokit/oauth-app@npm:3.6.0" - dependencies: - "@octokit/auth-oauth-app": ^4.0.0 - "@octokit/auth-oauth-user": ^1.3.0 - "@octokit/auth-unauthenticated": ^2.0.0 - "@octokit/core": ^3.3.2 - "@octokit/oauth-authorization-url": ^4.2.1 - "@octokit/oauth-methods": ^1.2.2 +"@octokit/graphql@npm:^7.0.0": + version: 7.0.1 + resolution: "@octokit/graphql@npm:7.0.1" + dependencies: + "@octokit/request": ^8.0.1 + "@octokit/types": ^11.0.0 + universal-user-agent: ^6.0.0 + checksum: 7ee907987b1b8312c6f870c44455cbd3eed805bb1a4095038f4e7e62ee2e006bd766f2a71dfbe56b870cd8f7558309c602f00d3e252fe59578f4acf6249a4f17 + languageName: node + linkType: hard + +"@octokit/oauth-app@npm:^6.0.0": + version: 6.0.0 + resolution: "@octokit/oauth-app@npm:6.0.0" + dependencies: + "@octokit/auth-oauth-app": ^7.0.0 + "@octokit/auth-oauth-user": ^4.0.0 + "@octokit/auth-unauthenticated": ^5.0.0 + "@octokit/core": ^5.0.0 + "@octokit/oauth-authorization-url": ^6.0.2 + "@octokit/oauth-methods": ^4.0.0 "@types/aws-lambda": ^8.10.83 - fromentries: ^1.3.1 universal-user-agent: ^6.0.0 - checksum: bbaa30a4db8f30fd97d327c57e8d45b114810466fe32e30ea7a3bfacd1fc5065a83fe3c545ef0b81435bbdb64685ac5050c6ce83d92a230ebf4a21cbb51dd140 + checksum: 5d07c6fe15d4a670a3ca0c7c0d37c973912b3ac993375966a6bed0e084edbda972f575e2ab2dc17aa9718e5aeefbec7489f5aeb2dbc6e47768ad9633f27f842d languageName: node linkType: hard -"@octokit/oauth-authorization-url@npm:^4.2.1, @octokit/oauth-authorization-url@npm:^4.3.1": +"@octokit/oauth-authorization-url@npm:^4.3.1": version: 4.3.3 resolution: "@octokit/oauth-authorization-url@npm:4.3.3" checksum: 98a33c80ad32c929cc319ccb693c9115bff62faeb32485bf5533e65bc59e5024cf3f65a2e15f9a99fcda3cb230ca0c996cdb3938efc5d2d0427495c18032c4da languageName: node linkType: hard -"@octokit/oauth-methods@npm:^1.1.0, @octokit/oauth-methods@npm:^1.2.2": +"@octokit/oauth-authorization-url@npm:^6.0.2": + version: 6.0.2 + resolution: "@octokit/oauth-authorization-url@npm:6.0.2" + checksum: 0f11169a3eeb782cc08312c923de1a702b25ae033b972ba40380b6d72cb3f684543c8b6a5cf6f05936fdc6b8892070d4f7581138d8efc1b4c4a55ae6d7762327 + languageName: node + linkType: hard + +"@octokit/oauth-methods@npm:^1.1.0": version: 1.2.6 resolution: "@octokit/oauth-methods@npm:1.2.6" dependencies: @@ -10679,6 +10804,19 @@ __metadata: languageName: node linkType: hard +"@octokit/oauth-methods@npm:^4.0.0": + version: 4.0.0 + resolution: "@octokit/oauth-methods@npm:4.0.0" + dependencies: + "@octokit/oauth-authorization-url": ^6.0.2 + "@octokit/request": ^8.0.2 + "@octokit/request-error": ^5.0.0 + "@octokit/types": ^11.0.0 + btoa-lite: ^1.0.0 + checksum: 623f3031f56f5bfd6f142f9215bf47ba418b2f7fd9eb72d3e68cdd2b2c81345021b692edd18ad055df85e71e35497002e1fc4816235ed520dd71e677885c99cc + languageName: node + linkType: hard + "@octokit/openapi-types@npm:^11.2.0": version: 11.2.0 resolution: "@octokit/openapi-types@npm:11.2.0" @@ -10693,6 +10831,13 @@ __metadata: languageName: node linkType: hard +"@octokit/openapi-types@npm:^18.0.0": + version: 18.0.0 + resolution: "@octokit/openapi-types@npm:18.0.0" + checksum: d487d6c6c1965e583eee417d567e4fe3357a98953fc49bce1a88487e7908e9b5dbb3e98f60dfa340e23b1792725fbc006295aea071c5667a813b9c098185b56f + languageName: node + linkType: hard + "@octokit/plugin-enterprise-compatibility@npm:^1.2.8": version: 1.3.0 resolution: "@octokit/plugin-enterprise-compatibility@npm:1.3.0" @@ -10712,7 +10857,7 @@ __metadata: languageName: node linkType: hard -"@octokit/plugin-paginate-rest@npm:^2.13.3, @octokit/plugin-paginate-rest@npm:^2.6.2": +"@octokit/plugin-paginate-rest@npm:^2.6.2": version: 2.17.0 resolution: "@octokit/plugin-paginate-rest@npm:2.17.0" dependencies: @@ -10723,6 +10868,17 @@ __metadata: languageName: node linkType: hard +"@octokit/plugin-paginate-rest@npm:^8.0.0": + version: 8.0.0 + resolution: "@octokit/plugin-paginate-rest@npm:8.0.0" + dependencies: + "@octokit/types": ^11.0.0 + peerDependencies: + "@octokit/core": ">=5" + checksum: b5d7cee50523862c6ce7be057f7200e14ee4dcded462f27304c822c960a37efa23ed51080ea879f5d1e56e78f74baa17d2ce32eed5d726794abc35755777e32c + languageName: node + linkType: hard + "@octokit/plugin-request-log@npm:^1.0.0": version: 1.0.4 resolution: "@octokit/plugin-request-log@npm:1.0.4" @@ -10819,6 +10975,17 @@ __metadata: languageName: node linkType: hard +"@octokit/request-error@npm:^5.0.0": + version: 5.0.0 + resolution: "@octokit/request-error@npm:5.0.0" + dependencies: + "@octokit/types": ^11.0.0 + deprecation: ^2.0.0 + once: ^1.4.0 + checksum: 2012eca66f6b8fa4038b3bfe81d65a7134ec58e2caf45d229aca13b9653ab260abd95229bd1a8c11180ee0bcf738e2556831a85de28f39b175175653c3b79fdd + languageName: node + linkType: hard + "@octokit/request@npm:^5.2.0": version: 5.6.3 resolution: "@octokit/request@npm:5.6.3" @@ -10847,6 +11014,19 @@ __metadata: languageName: node linkType: hard +"@octokit/request@npm:^8.0.0, @octokit/request@npm:^8.0.1, @octokit/request@npm:^8.0.2": + version: 8.1.0 + resolution: "@octokit/request@npm:8.1.0" + dependencies: + "@octokit/endpoint": ^9.0.0 + "@octokit/request-error": ^5.0.0 + "@octokit/types": ^11.1.0 + is-plain-object: ^5.0.0 + universal-user-agent: ^6.0.0 + checksum: 00f71e1ca0bff84a1a903ca9f79a7837aac830cae3560d44f03272d062ef98e5a8170fdab8a47169c41db88e6894717cc71387604486d559f9eae409fab93f6f + languageName: node + linkType: hard + "@octokit/rest@npm:^16.43.2": version: 16.43.2 resolution: "@octokit/rest@npm:16.43.2" @@ -10883,6 +11063,15 @@ __metadata: languageName: node linkType: hard +"@octokit/types@npm:^11.0.0, @octokit/types@npm:^11.1.0": + version: 11.1.0 + resolution: "@octokit/types@npm:11.1.0" + dependencies: + "@octokit/openapi-types": ^18.0.0 + checksum: 72627a94ddaf7bc14db06572bcde67649aad608cd86548818380db9305f4c0ca9ca078a62dd883858a267e8ec8fd596a0fce416aa04197c439b9548efef609a7 + languageName: node + linkType: hard + "@octokit/types@npm:^2.0.0, @octokit/types@npm:^2.0.1": version: 2.16.2 resolution: "@octokit/types@npm:2.16.2" @@ -10901,7 +11090,7 @@ __metadata: languageName: node linkType: hard -"@octokit/types@npm:^6.0.1, @octokit/types@npm:^6.0.3, @octokit/types@npm:^6.1.1, @octokit/types@npm:^6.10.0, @octokit/types@npm:^6.12.2, @octokit/types@npm:^6.16.1, @octokit/types@npm:^6.27.1, @octokit/types@npm:^6.34.0": +"@octokit/types@npm:^6.0.1, @octokit/types@npm:^6.0.3, @octokit/types@npm:^6.1.1, @octokit/types@npm:^6.10.0, @octokit/types@npm:^6.12.2, @octokit/types@npm:^6.16.1, @octokit/types@npm:^6.34.0": version: 6.34.0 resolution: "@octokit/types@npm:6.34.0" dependencies: @@ -10926,10 +11115,10 @@ __metadata: languageName: node linkType: hard -"@octokit/webhooks-types@npm:5.2.0": - version: 5.2.0 - resolution: "@octokit/webhooks-types@npm:5.2.0" - checksum: d9a70012b3aeb071955bc4a474f4c7877a7c31da5972697a12aeb4de1993a90fa72b9b1bbb3ce4dcf55606a9677b0dcda27704643190e255ee2d6619f90ce46a +"@octokit/webhooks-methods@npm:^4.0.0": + version: 4.0.0 + resolution: "@octokit/webhooks-methods@npm:4.0.0" + checksum: 07010438e53a6a659f0d7d3596bf89e6795776165066553e76384d90cef077a1e259122733913468299a1a76c71536914eb871d0508fcbbd453468b21eeb30c7 languageName: node linkType: hard @@ -10940,15 +11129,22 @@ __metadata: languageName: node linkType: hard -"@octokit/webhooks@npm:^9.0.1": - version: 9.22.0 - resolution: "@octokit/webhooks@npm:9.22.0" +"@octokit/webhooks-types@npm:7.1.0": + version: 7.1.0 + resolution: "@octokit/webhooks-types@npm:7.1.0" + checksum: 5aea38c38e97cb1b8d54c805c17c4015ee937d0b1ad550adc64eaf2e90bfbaf1e00c878490c10b43e31a11563e8d02183b86268ed588b04e39b22d5fd27807cf + languageName: node + linkType: hard + +"@octokit/webhooks@npm:^12.0.1": + version: 12.0.3 + resolution: "@octokit/webhooks@npm:12.0.3" dependencies: - "@octokit/request-error": ^2.0.2 - "@octokit/webhooks-methods": ^2.0.0 - "@octokit/webhooks-types": 5.2.0 + "@octokit/request-error": ^5.0.0 + "@octokit/webhooks-methods": ^4.0.0 + "@octokit/webhooks-types": 7.1.0 aggregate-error: ^3.1.0 - checksum: 8d0c4d6716406a69687deeeb3cb3cc9d04b390240859e3feea2ff61a960b1be5d127168d3f52c7978dab36e8efb413c2d2a947d86b410f6b60f2140a1952bf36 + checksum: 2db63122eab1852047379f9cb0024cdb22a2bf16356907b66bc71d5a01814b069178aee07fe61faeb80cde3dcd513a39526974f8bae5ec6e26b63fe87877ace1 languageName: node linkType: hard @@ -16047,6 +16243,15 @@ __metadata: languageName: node linkType: hard +"@types/jsonwebtoken@npm:^9.0.0": + version: 9.0.2 + resolution: "@types/jsonwebtoken@npm:9.0.2" + dependencies: + "@types/node": "*" + checksum: 3bb8d40e78d7eb53e427db6e9f0f22e0890cfee80965dcf741d08341814913afb211306de6e9847c6d241cc8e36f8a59090cbfdcc510ab7c81af9d650c5afe0e + languageName: node + linkType: hard + "@types/jszip@npm:^3.4.1": version: 3.4.1 resolution: "@types/jszip@npm:3.4.1" @@ -23394,7 +23599,7 @@ __metadata: "@nestjs/platform-express": ^9.4.2 "@nestjs/testing": ^9.4.2 "@nestjs/typeorm": ^8.1.4 - "@octokit/app": ^12.0.7 + "@octokit/app": ^14.0.0 "@reapit/api-key-verify": "workspace:packages/api-key-verify" "@reapit/config-manager": "workspace:packages/config-manager" "@reapit/connect-session": "workspace:packages/connect-session" @@ -23418,6 +23623,7 @@ __metadata: class-validator: ^0.14.0 concurrently: ^6.5.1 cross-env: ^7.0.3 + esbuild-plugins-node-modules-polyfill: ^1.2.0 eslint: ^8.41.0 eslint-plugin-prettier: ^4.2.1 jest: ^29.5.0 @@ -24617,6 +24823,19 @@ __metadata: languageName: node linkType: hard +"esbuild-plugins-node-modules-polyfill@npm:^1.2.0": + version: 1.2.0 + resolution: "esbuild-plugins-node-modules-polyfill@npm:1.2.0" + dependencies: + "@jspm/core": ^2.0.1 + local-pkg: ^0.4.3 + resolve.exports: ^2.0.2 + peerDependencies: + esbuild: ^0.14.0 || ^0.15.0 || ^0.16.0 || ^0.17.0 || ^0.18.0 + checksum: 9e4a7694fb682a3a308ac774ac350f3b1091446687a9c5a36293f8a20f376b8035eaac0e8ba5a5bad907a7443657876c32d011e36e710306acc115383387360f + languageName: node + linkType: hard + "esbuild@npm:^0.17.5": version: 0.17.16 resolution: "esbuild@npm:0.17.16" @@ -26564,13 +26783,6 @@ __metadata: languageName: node linkType: hard -"fromentries@npm:^1.3.1": - version: 1.3.2 - resolution: "fromentries@npm:1.3.2" - checksum: 33729c529ce19f5494f846f0dd4945078f4e37f4e8955f4ae8cc7385c218f600e9d93a7d225d17636c20d1889106fd87061f911550861b7072f53bf891e6b341 - languageName: node - linkType: hard - "fs-constants@npm:^1.0.0": version: 1.0.0 resolution: "fs-constants@npm:1.0.0" @@ -31679,6 +31891,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"local-pkg@npm:^0.4.3": + version: 0.4.3 + resolution: "local-pkg@npm:0.4.3" + checksum: 7825aca531dd6afa3a3712a0208697aa4a5cd009065f32e3fb732aafcc42ed11f277b5ac67229222e96f4def55197171cdf3d5522d0381b489d2e5547b407d55 + languageName: node + linkType: hard + "locate-path@npm:^2.0.0": version: 2.0.0 resolution: "locate-path@npm:2.0.0" @@ -32072,6 +32291,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"lru-cache@npm:^10.0.0": + version: 10.0.0 + resolution: "lru-cache@npm:10.0.0" + checksum: 18f101675fe283bc09cda0ef1e3cc83781aeb8373b439f086f758d1d91b28730950db785999cd060d3c825a8571c03073e8c14512b6655af2188d623031baf50 + languageName: node + linkType: hard + "lru-cache@npm:^4.0.3, lru-cache@npm:^4.1.5": version: 4.1.5 resolution: "lru-cache@npm:4.1.5" @@ -39323,6 +39549,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"resolve.exports@npm:^2.0.2": + version: 2.0.2 + resolution: "resolve.exports@npm:2.0.2" + checksum: 1c7778ca1b86a94f8ab4055d196c7d87d1874b96df4d7c3e67bbf793140f0717fd506dcafd62785b079cd6086b9264424ad634fb904409764c3509c3df1653f2 + languageName: node + linkType: hard + "resolve@^1.0.0, resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.2": version: 1.20.0 resolution: "resolve@npm:1.20.0" @@ -44057,6 +44290,16 @@ fsevents@^1.2.7: languageName: node linkType: hard +"universal-github-app-jwt@npm:^1.1.1": + version: 1.1.1 + resolution: "universal-github-app-jwt@npm:1.1.1" + dependencies: + "@types/jsonwebtoken": ^9.0.0 + jsonwebtoken: ^9.0.0 + checksum: 31d30150b9eafa9fa8bf57bd6f97d7d91d4509ad24fa673a6e29ac2295b8f1fc293a70cb44fa807af7cfd787db1cf6edd3876fc0cae31230c5292b76677159fc + languageName: node + linkType: hard + "universal-user-agent@npm:^4.0.0": version: 4.0.1 resolution: "universal-user-agent@npm:4.0.1"