From ebd3695e80b2b3cfab153ee925942b855f170fb5 Mon Sep 17 00:00:00 2001 From: Manuel Astudillo Date: Thu, 4 Jul 2024 23:04:29 +0200 Subject: [PATCH 1/2] fix: upgrade dependencies for security patches --- app.js | 3 + index.js | 161 ------------------------ lib/cmd.ts | 169 +++++++++++++++++++++++++ lib/index.ts | 3 + lib/version-checker.ts | 34 +++++ package-lock.json | 2 +- package.json | 16 +-- tests/cli.spec.js | 4 +- tsconfig.json | 8 +- yarn.lock | 274 +++++++++++++++-------------------------- 10 files changed, 324 insertions(+), 350 deletions(-) create mode 100755 app.js delete mode 100755 index.js create mode 100644 lib/cmd.ts create mode 100644 lib/version-checker.ts diff --git a/app.js b/app.js new file mode 100755 index 0000000..b484570 --- /dev/null +++ b/app.js @@ -0,0 +1,3 @@ +#! /usr/bin/env node +const { run } = require("./dist/cmd.js"); +run(); diff --git a/index.js b/index.js deleted file mode 100755 index 932db08..0000000 --- a/index.js +++ /dev/null @@ -1,161 +0,0 @@ -#! /usr/bin/env node -const { Command, Option } = require("commander"); -const { name, version } = require(__dirname + "/package.json"); -const chalk = require("chalk"); - -// Check version -const lastestVersion = require("latest-version"); -const semver = require("semver"); - -const program = new Command(); -program - .version(version) - - .option( - "-n, --name [name]", - "connection name [My Connection]", - "My Connection" - ) - .option( - "-t, --token [token]", - "api token (get yours at https://taskforce.sh)", - process.env.TASKFORCE_TOKEN - ) - .option( - "-p, --port [port]", - "redis port [6379]", - process.env.REDIS_PORT || "6379" - ) - .option("--tls [tls]", "Activate secured TLS connection to Redis") - .option( - "-h, --host [host]", - "redis host [localhost]", - process.env.REDIS_HOST || "localhost" - ) - .option("-d, --database [db]", "redis database [0]", "0") - .option("--passwd [passwd]", "redis password", process.env.REDIS_PASSWD) - .option( - "--spasswd [spasswd]", - "redis sentinel password", - process.env.REDIS_SENTINEL_PASSWD - ) - .option("-u, --uri [uri]", "redis uri", process.env.REDIS_URI) - .option("--team [team]", "specify team where to put the connection") - .option( - "-b, --backend [host]", - "backend domain [api.taskforce.sh]", - "wss://api.taskforce.sh" - ) - .option( - "-s, --sentinels [host:port]", - "comma-separated list of sentinel host/port pairs", - process.env.REDIS_SENTINELS - ) - .option( - "-m, --master [name]", - "name of master node used in sentinel configuration", - process.env.REDIS_MASTER - ) - .option( - "--nodes ", - "comma-separated list of cluster nodes uris to connect to", - process.env.REDIS_NODES ? process.env.REDIS_NODES : undefined - ) - .option("--queues ", "comma-separated list of queues to monitor") - .addOption( - new Option( - "--queuesFile ", - "file with queues to monitor" - ).conflicts("queues") - ) - .parse(process.argv); - -console.info( - chalk.blueBright( - "Taskforce Connector v" + version + " - (c) 2017-2024 Taskforce.sh Inc." - ) -); - -const options = program.opts(); - -lastestVersion(name).then(function (newestVersion) { - if (semver.gt(newestVersion, version)) { - console.error( - chalk.yellow( - "New version " + - newestVersion + - " of taskforce available, please upgrade with yarn global add taskforce-connector" - ) - ); - } - if (!options.token) { - console.error( - chalk.red( - `ERROR: A valid token is required, use either TASKFORCE_TOKEN env or pass it with -t (get token at https://taskforce.sh)` - ) - ); - process.exit(1); - } - - const queueNames = options.queuesFile - ? parseQueuesFile(options.queuesFile) - : options.queues - ? parseQueues(options.queues) - : undefined; - - const connection = { - port: options.port, - host: options.host, - password: options.passwd, - sentinelPassword: options.spasswd, - db: options.database, - uri: options.uri, - tls: options.tls - ? { - rejectUnauthorized: false, - requestCert: true, - agent: false, - } - : void 0, - sentinels: - options.sentinels && - options.sentinels.split(",").map((hostPort) => { - const [host, port] = hostPort.split(":"); - return { host, port }; - }), - name: options.master, - }; - - const { Socket } = require("./dist/socket"); - Socket(options.name, options.backend, options.token, connection, { - team: options.team, - nodes: options.nodes ? options.nodes.split(",") : undefined, - queueNames, - }); -}); - -// Catch uncaught exceptions and unhandled rejections -process.on("uncaughtException", function (err) { - console.error(err, "Uncaught exception"); -}); - -process.on("unhandledRejection", (reason, promise) => { - console.error({ promise, reason }, "Unhandled Rejection at: Promise"); -}); - -function parseQueuesFile(file) { - // Load the queues from the file. The file must be a list of queues separated by new lines - const fs = require("fs"); - const path = require("path"); - const queuesFile = path.resolve(file); - if (fs.existsSync(queuesFile)) { - return fs.readFileSync(queuesFile, "utf8").split("\n").filter(Boolean); - } else { - console.error(chalk.red(`ERROR: File ${queuesFile} does not exist`)); - process.exit(1); - } -} - -function parseQueues(queuesString) { - return queuesString.split(","); -} diff --git a/lib/cmd.ts b/lib/cmd.ts new file mode 100644 index 0000000..0c7e1d5 --- /dev/null +++ b/lib/cmd.ts @@ -0,0 +1,169 @@ +import { Command, Option } from "commander"; +import { blueBright, red } from "chalk"; +import { readFileSync, existsSync } from "fs"; +import { resolve } from "path"; + +import { Socket } from "./socket"; +import { versionChecker } from "./version-checker"; + +export const run = () => { + + // Read the content of package.json + const packageJsonContent = readFileSync("./package.json", "utf8"); + + // Parse the JSON data + const { name, version } = JSON.parse(packageJsonContent); + + console.info( + blueBright( + "Taskforce Connector v" + version + " - (c) 2017-2024 Taskforce.sh Inc." + ) + ); + + const program = new Command(); + program + .version(version) + + .option( + "-n, --name [name]", + "connection name [My Connection]", + "My Connection" + ) + .option( + "-t, --token [token]", + "api token (get yours at https://taskforce.sh)", + process.env.TASKFORCE_TOKEN + ) + .option( + "-p, --port [port]", + "redis port [6379]", + process.env.REDIS_PORT || "6379" + ) + .option("--tls [tls]", "Activate secured TLS connection to Redis") + .option( + "-h, --host [host]", + "redis host [localhost]", + process.env.REDIS_HOST || "localhost" + ) + .option("-d, --database [db]", "redis database [0]", "0") + .option("--passwd [passwd]", "redis password", process.env.REDIS_PASSWD) + .option( + "--spasswd [spasswd]", + "redis sentinel password", + process.env.REDIS_SENTINEL_PASSWD + ) + .option("-u, --uri [uri]", "redis uri", process.env.REDIS_URI) + .option("--team [team]", "specify team where to put the connection") + .option( + "-b, --backend [host]", + "backend domain [api.taskforce.sh]", + "wss://api.taskforce.sh" + ) + .option( + "-s, --sentinels [host:port]", + "comma-separated list of sentinel host/port pairs", + process.env.REDIS_SENTINELS + ) + .option( + "-m, --master [name]", + "name of master node used in sentinel configuration", + process.env.REDIS_MASTER + ) + .option( + "--nodes ", + "comma-separated list of cluster nodes uris to connect to", + process.env.REDIS_NODES ? process.env.REDIS_NODES : undefined + ) + .option("--queues ", "comma-separated list of queues to monitor") + .addOption( + new Option( + "--queuesFile ", + "file with queues to monitor" + ).conflicts("queues") + ) + .parse(process.argv); + + const options = program.opts(); + + versionChecker(name, version).then(function () { + /* + lastestVersion(name).then(function (newestVersion) { + if (semver.gt(newestVersion, version)) { + console.error( + chalk.yellow( + "New version " + + newestVersion + + " of taskforce available, please upgrade with yarn global add taskforce-connector" + ) + ); + } + */ + if (!options.token) { + console.error( + red( + `ERROR: A valid token is required, use either TASKFORCE_TOKEN env or pass it with -t (get token at https://taskforce.sh)` + ) + ); + process.exit(1); + } + + const queueNames = options.queuesFile + ? parseQueuesFile(options.queuesFile) + : options.queues + ? parseQueues(options.queues) + : undefined; + + const connection = { + port: options.port, + host: options.host, + password: options.passwd, + sentinelPassword: options.spasswd, + db: options.database, + uri: options.uri, + tls: options.tls + ? { + rejectUnauthorized: false, + requestCert: true, + agent: false, + } + : void 0, + sentinels: + options.sentinels && + options.sentinels.split(",").map((hostPort: string) => { + const [host, port] = hostPort.split(":"); + return { host, port }; + }), + name: options.master, + }; + + Socket(options.name, options.backend, options.token, connection, { + team: options.team, + nodes: options.nodes ? options.nodes.split(",") : undefined, + queueNames, + }); + }); + + // Catch uncaught exceptions and unhandled rejections + process.on("uncaughtException", function (err) { + console.error(err, "Uncaught exception"); + }); + + process.on("unhandledRejection", (reason, promise) => { + console.error({ promise, reason }, "Unhandled Rejection at: Promise"); + }); + + function parseQueuesFile(file: string) { + // Load the queues from the file. The file must be a list of queues separated by new lines + const queuesFile = resolve(file); + if (existsSync(queuesFile)) { + return readFileSync(queuesFile, "utf8").split("\n").filter(Boolean); + } else { + console.error(red(`ERROR: File ${queuesFile} does not exist`)); + process.exit(1); + } + } + + function parseQueues(queuesString: string) { + return queuesString.split(","); + } +} diff --git a/lib/index.ts b/lib/index.ts index 2e38e99..c5cd222 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -8,6 +8,9 @@ export { Connection } from "./socket"; export { respond } from "./responders/respond"; export { BullMQResponders } from "./responders/bullmq-responders"; +export { versionChecker } from "./version-checker"; +export { Socket } from "./socket"; + export const Connect = ( name: string, token: string, diff --git a/lib/version-checker.ts b/lib/version-checker.ts new file mode 100644 index 0000000..2640a23 --- /dev/null +++ b/lib/version-checker.ts @@ -0,0 +1,34 @@ +import { gt } from 'semver'; +import { yellow } from "chalk"; + +/** + * Check if the current version of taskforce is the latest version + * @param name - package name + * @param version - current version of taskforce + */ +export const versionChecker = async (name: string, version: string) => { + + const latestVersion = (await import('latest-version')).default; + + try { + const newestVersion = await latestVersion(name); + + if (gt(newestVersion, version)) { + console.error( + yellow( + "New version " + + newestVersion + + " of taskforce available, please upgrade with yarn global add taskforce-connector" + ) + ); + } + } catch (err) { + console.error( + yellow( + "Error checking for latest version of taskforce" + ), + err + ); + process.exit(1); + } +}; diff --git a/package-lock.json b/package-lock.json index 95701ee..38e61f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "ws": "^8.6.0" }, "bin": { - "taskforce": "index.js" + "taskforce": "app.js" }, "devDependencies": { "@semantic-release/changelog": "^5.0.1", diff --git a/package.json b/package.json index f7fe6cd..2423cd6 100644 --- a/package.json +++ b/package.json @@ -5,22 +5,23 @@ "preferGlobal": true, "main": "dist/index.js", "types": "dist/index.d.ts", + "module": "./dist/index.js", "source": "lib/index.ts", "bin": { - "taskforce": "index.js" + "taskforce": "app.js" }, "files": [ "dist" ], "dependencies": { - "bull": "^4.12.9", - "bullmq": "^5.7.15", + "bull": "^4.15.1", + "bullmq": "^5.8.3", "chalk": "^4.1.0", "commander": "^12.1.0", "ioredis": "^5.4.1", - "latest-version": "^5.1.0", + "latest-version": "^9.0.0", "lodash": "^4.17.21", - "semver": "^7.3.2", + "semver": "^7.6.2", "ws": "^8.17.0" }, "devDependencies": { @@ -32,8 +33,9 @@ "@semantic-release/release-notes-generator": "^9.0.2", "@types/bull": "^3.15.8", "@types/chalk": "^2.2.0", - "@types/lodash": "^4.14.149", + "@types/lodash": "^4.17.6", "@types/node": "^20.10.5", + "@types/semver": "^7.5.8", "@types/ws": "^6.0.1", "jest": "^29.7.0", "typescript": "^5.3.3" @@ -41,7 +43,7 @@ "scripts": { "build": "tsc", "test": "jest", - "start": "./index.js", + "start": "node app.js", "prepare": "yarn build" }, "repository": { diff --git a/tests/cli.spec.js b/tests/cli.spec.js index 2e48ed6..e8f8756 100644 --- a/tests/cli.spec.js +++ b/tests/cli.spec.js @@ -15,14 +15,14 @@ describe("CLI Options", () => { it("should use environment variable for nodes if set", () => { process.env.REDIS_NODES = "node1:6379,node2:6379"; - require("../index.js"); // Update the path as necessary + require("../app.js"); // Update the path as necessary expect(program.nodes).toEqual(["node1:6379", "node2:6379"]); }); it("should use default port if no environment variable is set", () => { delete process.env.REDIS_PORT; - require("../index.js"); // Update the path as necessary + require("../app.js"); // Update the path as necessary expect(program.port).toBe("6379"); }); diff --git a/tsconfig.json b/tsconfig.json index 14810e3..b74c06c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,12 +1,16 @@ { "compilerOptions": { + "target": "ESNext", + "module": "Node16", "outDir": "dist", "sourceMap": false, "declaration": true, - "target": "es6", - "module": "commonjs", "noImplicitAny": true, "removeComments": true, + "moduleResolution": "Node16", + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true, + "esModuleInterop": false }, "compileOnSave": false, "include": ["./lib"], diff --git a/yarn.lock b/yarn.lock index 621bfc0..4d0ef6e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -861,6 +861,27 @@ dependencies: "@octokit/openapi-types" "^7.2.3" +"@pnpm/config.env-replace@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" + integrity sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w== + +"@pnpm/network.ca-file@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz#2ab05e09c1af0cdf2fcf5035bea1484e222f7983" + integrity sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA== + dependencies: + graceful-fs "4.2.10" + +"@pnpm/npm-conf@^2.1.0": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz#0058baf1c26cbb63a828f0193795401684ac86f0" + integrity sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA== + dependencies: + "@pnpm/config.env-replace" "^1.1.0" + "@pnpm/network.ca-file" "^1.0.1" + config-chain "^1.1.11" + "@semantic-release/changelog@^5.0.1": version "5.0.1" resolved "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-5.0.1.tgz" @@ -965,11 +986,6 @@ resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== - "@sinonjs/commons@^3.0.0": version "3.0.0" resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz" @@ -984,13 +1000,6 @@ dependencies: "@sinonjs/commons" "^3.0.0" -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - "@tootallnate/once@1": version "1.1.2" resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" @@ -1087,10 +1096,10 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/lodash@^4.14.149": - version "4.14.157" - resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.157.tgz" - integrity sha512-Ft5BNFmv2pHDgxV5JDsndOWTRJ+56zte0ZpYLowp03tW+K+t8u8YMOzAnpuqPgzX6WO1XpDIUm7u04M8vdDiVQ== +"@types/lodash@^4.17.6": + version "4.17.6" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.6.tgz#193ced6a40c8006cfc1ca3f4553444fb38f0e543" + integrity sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA== "@types/minimist@^1.2.0": version "1.2.1" @@ -1126,6 +1135,11 @@ resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== +"@types/semver@^7.5.8": + version "7.5.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== + "@types/stack-utils@^2.0.0": version "2.0.2" resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.2.tgz" @@ -1486,10 +1500,10 @@ builtins@^1.0.3: resolved "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz" integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== -bull@^4.12.9: - version "4.12.9" - resolved "https://registry.yarnpkg.com/bull/-/bull-4.12.9.tgz#e828fa01ee44af7148aafce5f339b0d09bc86422" - integrity sha512-rqka/O9ZBfrKgI4fanhN6XW0AJ9WYRakjHlCJPjoHyh79xIvEjyU8hvs/CCeRdrbU6zSw8UNfDOjCUaQO1MTuQ== +bull@^4.15.1: + version "4.15.1" + resolved "https://registry.yarnpkg.com/bull/-/bull-4.15.1.tgz#f76e76ca0d1a9eecf311dd9f306e3cf9ffb57cfb" + integrity sha512-knVKiZdrXbRkB+fWqNryDz85b3JfsT3dBrZexkztwvTH/AFmpHvsC933VB3JX18aJCz47E+xdO57xbDvxljoAg== dependencies: cron-parser "^4.2.1" get-port "^5.1.1" @@ -1499,10 +1513,10 @@ bull@^4.12.9: semver "^7.5.2" uuid "^8.3.0" -bullmq@^5.7.15: - version "5.7.15" - resolved "https://registry.yarnpkg.com/bullmq/-/bullmq-5.7.15.tgz#2a1a14547f2b0ef74b16f0a76706b12b1d765cb5" - integrity sha512-XR5sTA8BPUY67sS37sMKGCDvSLaVpMq7aaQG8FGSKOUnPoJMRf17n1TibVWP3+yK0xKLdK5Y7PY9D874Fpeqpg== +bullmq@^5.8.3: + version "5.8.3" + resolved "https://registry.yarnpkg.com/bullmq/-/bullmq-5.8.3.tgz#55a0e383156cc6e284bb7660ef40a6ac8f49167a" + integrity sha512-RJgQu/vgSZqjOYrZ7F1UJsSAzveNx7FFpR3Tp/1TxOMXXN9TtZMSly5MT+vjzOhQX//3+YWNRbMWpC1mkqBc9w== dependencies: cron-parser "^4.6.0" ioredis "^5.4.1" @@ -1541,19 +1555,6 @@ cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0: tar "^6.0.2" unique-filename "^1.1.1" -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - callsites@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" @@ -1663,13 +1664,6 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" -clone-response@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= - dependencies: - mimic-response "^1.0.0" - clone@^1.0.2: version "1.0.4" resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" @@ -1764,6 +1758,14 @@ concat-map@0.0.1: resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= +config-chain@^1.1.11: + version "1.1.13" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" @@ -1902,13 +1904,6 @@ decamelize@^1.1.0: resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= - dependencies: - mimic-response "^1.0.0" - dedent@^1.0.0: version "1.5.1" resolved "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz" @@ -1931,11 +1926,6 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -defer-to-connect@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.2.tgz" - integrity sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw== - del@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/del/-/del-6.0.0.tgz" @@ -2007,11 +1997,6 @@ dot-prop@^5.1.0: dependencies: is-obj "^2.0.0" -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" @@ -2290,13 +2275,6 @@ get-port@^5.1.1: resolved "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== -get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - get-stream@^5.0.0: version "5.2.0" resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" @@ -2304,13 +2282,6 @@ get-stream@^5.0.0: dependencies: pump "^3.0.0" -get-stream@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz" - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== - dependencies: - pump "^3.0.0" - get-stream@^6.0.0: version "6.0.1" resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" @@ -2359,22 +2330,10 @@ globby@^11.0.0, globby@^11.0.1: merge2 "^1.3.0" slash "^3.0.0" -got@^9.6.0: - version "9.6.0" - resolved "https://registry.npmjs.org/got/-/got-9.6.0.tgz" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" +graceful-fs@4.2.10: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" @@ -2450,11 +2409,6 @@ html-escaper@^2.0.0: resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -http-cache-semantics@^4.0.0: - version "4.0.3" - resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz" - integrity sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew== - http-cache-semantics@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz" @@ -2565,6 +2519,11 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +ini@^1.3.4: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + ini@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" @@ -3201,11 +3160,6 @@ jsesc@^2.5.1: resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= - json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" @@ -3270,13 +3224,6 @@ just-diff@^3.0.1: resolved "https://registry.npmjs.org/just-diff/-/just-diff-3.1.1.tgz" integrity sha512-sdMWKjRq8qWZEjDcVA6llnUT8RDEBIfOiGpYFPYa9u+2c39JCsejktSP7mj5eRid5EIvTzIpQ2kDOCw1Nq9BjQ== -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - kind-of@^6.0.3: version "6.0.3" resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" @@ -3287,12 +3234,17 @@ kleur@^3.0.3: resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -latest-version@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== +ky@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ky/-/ky-1.4.0.tgz#68b4a71eccfb4177199fe6ee2d5041b50bb41931" + integrity sha512-tPhhoGUiEiU/WXR4rt8klIoLdnTtyu+9jVKHd/wauEjYud32jyn63mzKWQweaQrHWxBQtYoVtdcEnYX1LosnFQ== + +latest-version@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-9.0.0.tgz#e91ed216e7a4badc6f73b66c65adb46c58ec6ba1" + integrity sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA== dependencies: - package-json "^6.3.0" + package-json "^10.0.0" leven@^3.1.0: version "3.1.0" @@ -3466,16 +3418,6 @@ lodash@^4.17.15, lodash@^4.17.21, lodash@^4.17.4: resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" @@ -3619,11 +3561,6 @@ mimic-fn@^2.1.0: resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - min-indent@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" @@ -3867,11 +3804,6 @@ normalize-path@^3.0.0: resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== - normalize-url@^6.0.0: version "6.1.0" resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" @@ -4093,11 +4025,6 @@ opener@^1.5.2: resolved "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - p-filter@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz" @@ -4161,15 +4088,15 @@ p-try@^2.0.0: resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -package-json@^6.3.0: - version "6.5.0" - resolved "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== +package-json@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-10.0.0.tgz#238786d9deabb946fe514b13290f19e2d5347fe1" + integrity sha512-w34pqp733w35nElGG6eH1OnDnHEWud4uxruQ2nKzY/Uy0uOJmWFdjDcAC+xAD4goVuBZStwaAEBS21BANv83HQ== dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" + ky "^1.2.0" + registry-auth-token "^5.0.2" + registry-url "^6.0.1" + semver "^7.6.0" pacote@^11.1.11, pacote@^11.2.6, pacote@^11.3.0, pacote@^11.3.1, pacote@^11.3.3, pacote@^11.3.5: version "11.3.5" @@ -4267,11 +4194,6 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= - pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" @@ -4329,6 +4251,11 @@ promzard@^0.3.0: dependencies: read "1" +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== + psl@^1.1.28: version "1.9.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" @@ -4377,7 +4304,7 @@ quick-lru@^4.0.1: resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -rc@^1.2.8: +rc@1.2.8, rc@^1.2.8: version "1.2.8" resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -4511,12 +4438,19 @@ registry-auth-token@^4.0.0: rc "^1.2.8" safe-buffer "^5.0.1" -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== +registry-auth-token@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.0.2.tgz#8b026cc507c8552ebbe06724136267e63302f756" + integrity sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ== dependencies: - rc "^1.2.8" + "@pnpm/npm-conf" "^2.1.0" + +registry-url@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-6.0.1.tgz#056d9343680f2f64400032b1e199faa692286c58" + integrity sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q== + dependencies: + rc "1.2.8" request@^2.88.2: version "2.88.2" @@ -4574,13 +4508,6 @@ resolve@^1.10.0, resolve@^1.20.0: is-core-module "^2.2.0" path-parse "^1.0.6" -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= - dependencies: - lowercase-keys "^1.0.0" - retry@^0.12.0: version "0.12.0" resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" @@ -4625,7 +4552,7 @@ safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.0.0, semver@^6.2.0: +semver@^6.0.0: version "6.3.0" resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -4642,6 +4569,11 @@ semver@^7.1.1, semver@^7.1.2, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semve dependencies: lru-cache "^6.0.0" +semver@^7.6.0, semver@^7.6.2: + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" @@ -4993,11 +4925,6 @@ to-fast-properties@^2.0.0: resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" @@ -5153,13 +5080,6 @@ url-join@^4.0.0: resolved "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz" integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= - dependencies: - prepend-http "^2.0.0" - util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" From 649d8390028c2cf677404b8617cffc203030ca70 Mon Sep 17 00:00:00 2001 From: Manuel Astudillo Date: Thu, 4 Jul 2024 23:08:36 +0200 Subject: [PATCH 2/2] chore: upgrade node version --- Dockerfile | 2 +- package.json | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 850ed7b..86c17a7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:16-alpine +FROM node:20-alpine RUN apk --no-cache add curl diff --git a/package.json b/package.json index 2423cd6..e07b040 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,9 @@ "version": "1.31.0", "description": "Connects queues to Taskforce", "preferGlobal": true, + "engine": { + "node": ">=18" + }, "main": "dist/index.js", "types": "dist/index.d.ts", "module": "./dist/index.js",