From 34d449eec9dedc4d7efea9de66300eb99da99b1e Mon Sep 17 00:00:00 2001 From: Cai Huanyu Date: Wed, 8 Nov 2023 16:04:32 +0800 Subject: [PATCH] build(nodejs): introduce rollup to nodejs build system for requiring raw files(mustache files) (#135) * build(nodejs): introduce rollup to nodejs build system for requiring raw files(mustache files) * chore(nodejs): bump version to v0.0.2-beta.1 * build(nodejs): fix mustache codegen --- .gitignore | 1 + examples/nodejs/package.json | 3 +- examples/nodejs/raw-loader.js | 20 ++ examples/nodejs/tsconfig.json | 5 +- packages/nodejs/bin/prepublish | 9 +- packages/nodejs/externals.d.ts | 7 + packages/nodejs/package.json | 12 +- packages/nodejs/rollup.config.ts | 29 +++ packages/nodejs/rollup/raw.js | 31 +++ packages/nodejs/src/renderer/renderer.ts | 17 +- packages/nodejs/src/renderer/templates.ts | 20 ++ packages/nodejs/tsconfig.build.json | 6 +- packages/nodejs/tsconfig.json | 3 +- .../src/commands/ts-mustache-codegen.ts | 4 +- yarn.lock | 193 +++++++++++++++++- 15 files changed, 328 insertions(+), 32 deletions(-) create mode 100644 examples/nodejs/raw-loader.js create mode 100644 packages/nodejs/rollup.config.ts create mode 100644 packages/nodejs/rollup/raw.js create mode 100644 packages/nodejs/src/renderer/templates.ts diff --git a/.gitignore b/.gitignore index 31e6a841..3819e73d 100644 --- a/.gitignore +++ b/.gitignore @@ -63,3 +63,4 @@ tmp/ var/** !var/.gitkeep .i18n-temp.json +.rollup.cache diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 1ecce7e6..c9af72b1 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -12,6 +12,7 @@ "ts-node": "^10.9.1" }, "devDependencies": { - "@roarr/cli": "^5.12.3" + "@roarr/cli": "^5.12.3", + "tsconfig-paths": "^4.2.0" } } diff --git a/examples/nodejs/raw-loader.js b/examples/nodejs/raw-loader.js new file mode 100644 index 00000000..d5724e7c --- /dev/null +++ b/examples/nodejs/raw-loader.js @@ -0,0 +1,20 @@ +const path = require('path') +const fs = require('fs') +const REQUIRE_PATH_TEST = /(?:\?|&)raw(?:&|$)/ + +function register() { + const Module = require('module') + const orginalLoad = Module._load + const cwd = process.cwd() + Module._load = function _load(request, _parent) { + if (request.match(REQUIRE_PATH_TEST)) { + return fs.readFileSync(path.join(path.dirname(_parent ? _parent.filename : cwd), request.split('?')[0]), 'utf8') + } + return orginalLoad.apply(this, arguments) + } + + return () => { + Module._load = orginalLoad + } +} +register() diff --git a/examples/nodejs/tsconfig.json b/examples/nodejs/tsconfig.json index f2228e9e..4ff8e50d 100644 --- a/examples/nodejs/tsconfig.json +++ b/examples/nodejs/tsconfig.json @@ -1,3 +1,6 @@ { - "extends": "../../tools/typescript/tsconfig.cjs.json" + "extends": "../../tools/typescript/tsconfig.cjs.json", + "ts-node": { + "require": ["tsconfig-paths/register", "./raw-loader.js"] + } } diff --git a/packages/nodejs/bin/prepublish b/packages/nodejs/bin/prepublish index a5494dec..410c8a77 100755 --- a/packages/nodejs/bin/prepublish +++ b/packages/nodejs/bin/prepublish @@ -1,6 +1,9 @@ #!/bin/bash npm pkg set 'exports['.'].types'='./dist/index.d.ts' -npm pkg set 'exports['.'].default'='./dist/index.js' -npm pkg set 'main'='./dist/index.js' -npm pkg set 'types'='./dist/index.d.ts' \ No newline at end of file +npm pkg set 'exports['.'].require'='./dist/index.cjs.js' +npm pkg set 'exports['.'].import'='./dist/index.esm.js' +npm pkg set 'main'='./dist/index.cjs.js' +npm pkg set 'module'='./dist/index.esm.js' +npm pkg set 'types'='./dist/index.d.ts' +npm pkg set 'typings'='./dist/index.d.ts' \ No newline at end of file diff --git a/packages/nodejs/externals.d.ts b/packages/nodejs/externals.d.ts index c46ad7a1..103a5531 100644 --- a/packages/nodejs/externals.d.ts +++ b/packages/nodejs/externals.d.ts @@ -1 +1,8 @@ declare module '@roarr/middleware-serialize-error' + +declare module 'rollup-plugin-string' + +declare module '*?raw' { + const content: string + export default content +} diff --git a/packages/nodejs/package.json b/packages/nodejs/package.json index adb7ed46..e471110f 100644 --- a/packages/nodejs/package.json +++ b/packages/nodejs/package.json @@ -1,21 +1,24 @@ { "name": "@pleisto/node-flappy", - "version": "0.0.2-beta.0", + "version": "0.0.2-beta.1", "license": "Apache-2.0", "exports": { ".": { "types": "./src/index.ts", - "default": "./src/index.ts" + "require": "./src/index.ts", + "import": "./src/index.ts" } }, "main": "./src/index.ts", "types": "./src/index.ts", + "typings": "./src/index.ts", + "module": "./src/index.ts", "files": [ "README.md", "dist" ], "scripts": { - "build": "yarn clean && yarn run -T tsc -p tsconfig.build.json", + "build": "yarn clean && yarn rollup --config rollup.config.ts --configPlugin typescript", "clean": "rm -rf ./dist", "test": "vitest", "lint": "yarn lint:eslint && yarn lint:type", @@ -27,7 +30,6 @@ "dependencies": { "@pleisto/flappy-nodejs-bindings": "next", "@roarr/middleware-serialize-error": "^1.0.0", - "glob": "^10.3.3", "mustache": "^4.2.0", "radash": "^11.0.0", "roarr": "^7.15.1", @@ -40,9 +42,11 @@ "openai": "^4.12.4" }, "devDependencies": { + "@rollup/plugin-typescript": "^11.1.5", "@types/mustache": "^4", "@vitest/coverage-v8": "^0.34.6", "openai": "^4.12.4", + "rollup": "^4.3.0", "vitest": "^0.34.6" } } diff --git a/packages/nodejs/rollup.config.ts b/packages/nodejs/rollup.config.ts new file mode 100644 index 00000000..b05785fc --- /dev/null +++ b/packages/nodejs/rollup.config.ts @@ -0,0 +1,29 @@ +import typescript from '@rollup/plugin-typescript' +import { raw } from './rollup/raw' + +const config = [ + { + input: 'src/index.ts', + output: [ + { + file: './dist/index.esm.js', + format: 'es', + sourcemap: true + }, + { + file: './dist/index.cjs.js', + format: 'cjs', + sourcemap: true, + interop: 'auto' + } + ], + plugins: [ + typescript({ + tsconfig: './tsconfig.build.json', + sourceMap: true + }), + raw({ extensions: ['mustache'] }) + ] + } +] +export default config diff --git a/packages/nodejs/rollup/raw.js b/packages/nodejs/rollup/raw.js new file mode 100644 index 00000000..bc35f244 --- /dev/null +++ b/packages/nodejs/rollup/raw.js @@ -0,0 +1,31 @@ +const rawRE = /(?:\?|&)raw(?:&|$)/ + +export function raw({ extensions }) { + return { + name: 'raw', + + resolveId(source) { + if (rawRE.test(source)) { + return source.split('?')[0] + } + return null + }, + + load(id) { + if (rawRE.test(id)) { + return id.split('?')[0] + } + + return null + }, + + transform(code, id) { + if (extensions.includes(id.split('.').pop())) { + return { + code: `export default ${JSON.stringify(code)};`, + map: { mappings: '' } + } + } + } + } +} diff --git a/packages/nodejs/src/renderer/renderer.ts b/packages/nodejs/src/renderer/renderer.ts index f36c542a..0d33bd4c 100644 --- a/packages/nodejs/src/renderer/renderer.ts +++ b/packages/nodejs/src/renderer/renderer.ts @@ -1,21 +1,6 @@ import { type TemplateMap } from './mustacheTypes' -import { globSync } from 'glob' -import path from 'path' -import fs from 'fs' import Mustache from 'mustache' - -const TemplateFolderPath = './templates' -const MUSTACHE_EXTENSION = '.mustache' - -const files = globSync(path.join(TemplateFolderPath, `**/*${MUSTACHE_EXTENSION}`)) - -if (files.length === 0) throw new Error('template not found') - -const contents = files.map(f => fs.readFileSync(f, { encoding: 'utf8' })) - -const templates = Object.fromEntries( - files.map((f, i) => [path.relative(TemplateFolderPath, f).replace(MUSTACHE_EXTENSION, ''), contents[i]]) -) +import { templates } from './templates' export type TemplateRenderer = (templateName: K, params: TemplateMap[K]) => string diff --git a/packages/nodejs/src/renderer/templates.ts b/packages/nodejs/src/renderer/templates.ts new file mode 100644 index 00000000..cdce019f --- /dev/null +++ b/packages/nodejs/src/renderer/templates.ts @@ -0,0 +1,20 @@ +import agentSystemMessage from '../../templates/agent/systemMessage.mustache?raw' +import agentUserMessage from '../../templates/agent/userMessage.mustache?raw' +import errorRetry from '../../templates/error/retry.mustache?raw' +import featuresCodeInterpreterDescription from '../../templates/features/codeInterpreter/description.mustache?raw' +import featuresCodeInterpreterEvalCode from '../../templates/features/codeInterpreter/evalCode.mustache?raw' +import featuresSynthesizedSystemMessage from '../../templates/features/synthesized/systemMessage.mustache?raw' +import featuresSynthesizedUserMessage from '../../templates/features/synthesized/userMessage.mustache?raw' +import testPing from '../../templates/test/ping.mustache?raw' +import { type TemplateMap } from './mustacheTypes' + +export const templates: Record = { + 'agent/systemMessage': agentSystemMessage, + 'agent/userMessage': agentUserMessage, + 'error/retry': errorRetry, + 'features/codeInterpreter/description': featuresCodeInterpreterDescription, + 'features/codeInterpreter/evalCode': featuresCodeInterpreterEvalCode, + 'features/synthesized/systemMessage': featuresSynthesizedSystemMessage, + 'features/synthesized/userMessage': featuresSynthesizedUserMessage, + 'test/ping': testPing +} diff --git a/packages/nodejs/tsconfig.build.json b/packages/nodejs/tsconfig.build.json index d83b650f..6bfbdaab 100644 --- a/packages/nodejs/tsconfig.build.json +++ b/packages/nodejs/tsconfig.build.json @@ -1,10 +1,12 @@ { "extends": "./tsconfig.json", "compilerOptions": { - "module": "CommonJS", + "target": "ESNext", + "module": "ESNext", "declaration": true, "noEmit": false, "outDir": "dist", - "importHelpers": false + "importHelpers": false, + "incremental": false } } diff --git a/packages/nodejs/tsconfig.json b/packages/nodejs/tsconfig.json index 1fab67d9..517f1887 100644 --- a/packages/nodejs/tsconfig.json +++ b/packages/nodejs/tsconfig.json @@ -1,4 +1,5 @@ { "extends": "../../tools/typescript/tsconfig.cjs.json", - "include": ["./src/**/*", "./externals.d.ts"] + "include": ["./src/**/*", "./templates/**/*", "./externals.d.ts"], + "exclude": ["./src/**/*.test.ts"] } diff --git a/tools/devkit/src/commands/ts-mustache-codegen.ts b/tools/devkit/src/commands/ts-mustache-codegen.ts index 642b6cb7..e7e67b4d 100644 --- a/tools/devkit/src/commands/ts-mustache-codegen.ts +++ b/tools/devkit/src/commands/ts-mustache-codegen.ts @@ -18,8 +18,8 @@ export const handler: CommandModule['handler'] = async (): Promise => { // Generate typedefs const declarer = new Declarer(loader) - const types = await declarer.declare() - const data = fs.readFileSync(TargetPath).toString() + const types = (await declarer.declare()).trim() + const data = fs.readFileSync(TargetPath, 'utf-8').toString().trim() if (isCI) { if (data !== types) exit(1) diff --git a/yarn.lock b/yarn.lock index fe2bd84a..80863d1c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3204,6 +3204,7 @@ __metadata: "@roarr/cli": "npm:^5.12.3" openai: "npm:^4.12.4" ts-node: "npm:^10.9.1" + tsconfig-paths: "npm:^4.2.0" languageName: unknown linkType: soft @@ -3214,13 +3215,14 @@ __metadata: "@pleisto/flappy-nodejs-bindings": "npm:next" "@roarr/cli": "npm:^5.12.3" "@roarr/middleware-serialize-error": "npm:^1.0.0" + "@rollup/plugin-typescript": "npm:^11.1.5" "@types/mustache": "npm:^4" "@vitest/coverage-v8": "npm:^0.34.6" - glob: "npm:^10.3.3" mustache: "npm:^4.2.0" openai: "npm:^4.12.4" radash: "npm:^11.0.0" roarr: "npm:^7.15.1" + rollup: "npm:^4.3.0" vitest: "npm:^0.34.6" yaml: "npm:^2.3.3" zod: "npm:^3.22.4" @@ -3298,6 +3300,41 @@ __metadata: languageName: node linkType: hard +"@rollup/plugin-typescript@npm:^11.1.5": + version: 11.1.5 + resolution: "@rollup/plugin-typescript@npm:11.1.5" + dependencies: + "@rollup/pluginutils": "npm:^5.0.1" + resolve: "npm:^1.22.1" + peerDependencies: + rollup: ^2.14.0||^3.0.0||^4.0.0 + tslib: "*" + typescript: ">=3.7.0" + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true + checksum: ce49baf4cf97f3a33d0e60324a0f80ebe963fee002e791171bec2d05a1ae5e5be6de2bc4191790d88fbc78d4c2bac1be141fc47bd5f2dec7172514acd7652ffe + languageName: node + linkType: hard + +"@rollup/pluginutils@npm:^5.0.1": + version: 5.0.5 + resolution: "@rollup/pluginutils@npm:5.0.5" + dependencies: + "@types/estree": "npm:^1.0.0" + estree-walker: "npm:^2.0.2" + picomatch: "npm:^2.3.1" + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 18a1f5a9afa993a76663cc2102169cd546786b39a3e92bdc8a2a0b408b509d070a02b20970a30daa9d5d0b1b591b5e7734add84b3aaf263178aef5a26cfab2cf + languageName: node + linkType: hard + "@rollup/rollup-android-arm-eabi@npm:4.1.4": version: 4.1.4 resolution: "@rollup/rollup-android-arm-eabi@npm:4.1.4" @@ -3305,6 +3342,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm-eabi@npm:4.3.0": + version: 4.3.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.3.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@rollup/rollup-android-arm64@npm:4.1.4": version: 4.1.4 resolution: "@rollup/rollup-android-arm64@npm:4.1.4" @@ -3312,6 +3356,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm64@npm:4.3.0": + version: 4.3.0 + resolution: "@rollup/rollup-android-arm64@npm:4.3.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-arm64@npm:4.1.4": version: 4.1.4 resolution: "@rollup/rollup-darwin-arm64@npm:4.1.4" @@ -3319,6 +3370,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-arm64@npm:4.3.0": + version: 4.3.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.3.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-x64@npm:4.1.4": version: 4.1.4 resolution: "@rollup/rollup-darwin-x64@npm:4.1.4" @@ -3326,6 +3384,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-x64@npm:4.3.0": + version: 4.3.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.3.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-gnueabihf@npm:4.1.4": version: 4.1.4 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.1.4" @@ -3333,6 +3398,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-gnueabihf@npm:4.3.0": + version: 4.3.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.3.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-gnu@npm:4.1.4": version: 4.1.4 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.1.4" @@ -3340,6 +3412,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-gnu@npm:4.3.0": + version: 4.3.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.3.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-musl@npm:4.1.4": version: 4.1.4 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.1.4" @@ -3347,6 +3426,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-musl@npm:4.3.0": + version: 4.3.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.3.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-gnu@npm:4.1.4": version: 4.1.4 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.1.4" @@ -3354,6 +3440,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-gnu@npm:4.3.0": + version: 4.3.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.3.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-musl@npm:4.1.4": version: 4.1.4 resolution: "@rollup/rollup-linux-x64-musl@npm:4.1.4" @@ -3361,6 +3454,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-musl@npm:4.3.0": + version: 4.3.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.3.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-win32-arm64-msvc@npm:4.1.4": version: 4.1.4 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.1.4" @@ -3368,6 +3468,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-arm64-msvc@npm:4.3.0": + version: 4.3.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.3.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-win32-ia32-msvc@npm:4.1.4": version: 4.1.4 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.1.4" @@ -3375,6 +3482,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-ia32-msvc@npm:4.3.0": + version: 4.3.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.3.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@rollup/rollup-win32-x64-msvc@npm:4.1.4": version: 4.1.4 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.1.4" @@ -3382,6 +3496,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-x64-msvc@npm:4.3.0": + version: 4.3.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.3.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@sideway/address@npm:^4.1.3": version: 4.1.4 resolution: "@sideway/address@npm:4.1.4" @@ -8081,6 +8202,13 @@ __metadata: languageName: node linkType: hard +"estree-walker@npm:^2.0.2": + version: 2.0.2 + resolution: "estree-walker@npm:2.0.2" + checksum: 53a6c54e2019b8c914dc395890153ffdc2322781acf4bd7d1a32d7aedc1710807bdcd866ac133903d5629ec601fbb50abe8c2e5553c7f5a0afdd9b6af6c945af + languageName: node + linkType: hard + "estree-walker@npm:^3.0.0": version: 3.0.3 resolution: "estree-walker@npm:3.0.3" @@ -10671,7 +10799,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.1.2, json5@npm:^2.2.3": +"json5@npm:^2.1.2, json5@npm:^2.2.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -14768,6 +14896,56 @@ __metadata: languageName: node linkType: hard +"rollup@npm:^4.3.0": + version: 4.3.0 + resolution: "rollup@npm:4.3.0" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.3.0" + "@rollup/rollup-android-arm64": "npm:4.3.0" + "@rollup/rollup-darwin-arm64": "npm:4.3.0" + "@rollup/rollup-darwin-x64": "npm:4.3.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.3.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.3.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.3.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.3.0" + "@rollup/rollup-linux-x64-musl": "npm:4.3.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.3.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.3.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.3.0" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: d96b4e383930c560d56483abdf0b44ff90e065a9d1af6f089972103951824fc6f69d2799e2165c4275d616be3a92c869981d9cdcb8aa22fa63b2276a45f28286 + languageName: node + linkType: hard + "rtl-detect@npm:^1.0.4": version: 1.0.4 resolution: "rtl-detect@npm:1.0.4" @@ -16055,6 +16233,17 @@ __metadata: languageName: node linkType: hard +"tsconfig-paths@npm:^4.2.0": + version: 4.2.0 + resolution: "tsconfig-paths@npm:4.2.0" + dependencies: + json5: "npm:^2.2.2" + minimist: "npm:^1.2.6" + strip-bom: "npm:^3.0.0" + checksum: 09a5877402d082bb1134930c10249edeebc0211f36150c35e1c542e5b91f1047b1ccf7da1e59babca1ef1f014c525510f4f870de7c9bda470c73bb4e2721b3ea + languageName: node + linkType: hard + "tslib@npm:^1.8.1": version: 1.14.1 resolution: "tslib@npm:1.14.1"