260407.1 · bfb184f7eaad40dedc6736445d6490b2a690927a
Pin dependencies (#621)
reading declarations
@@ -71,7 +71,7 @@ jobs: - name: Build cpp if: matrix.language == 'cpp' run: |- npm install -g cmake-js@6.3.2 && npm install && npm test+ npm ci --ignore-scripts && npm test # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
@@ -15,7 +15,7 @@ jobs: egress-policy: audit - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0- - run: npm install+ - run: npm ci --ignore-scripts - name: check clang-format run: | git config clangFormat.binary node_modules/.bin/clang-format
@@ -29,8 +29,7 @@ jobs: uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: ${{ matrix.node-version }}- - run: npm install -g cmake-js@6.3.2- - run: npm install+ - run: npm ci --ignore-scripts - name: Environment Information run: npx envinfo - name: Run Test@@ -50,8 +49,7 @@ jobs: - run: node -p process.versions - name: Environment Information run: npx envinfo- - run: npm install -g cmake-js@6.3.2- - run: npm install+ - run: npm ci --ignore-scripts - name: Environment Information run: npx envinfo - name: Run Test
@@ -4,7 +4,6 @@ Debug/ Release/ *.lock *.log-package-lock.json npm-debug.log* .idea/
@@ -0,0 +1,3022 @@+{+ "name": "node-addon-examples",+ "version": "1.0.0",+ "lockfileVersion": 3,+ "requires": true,+ "packages": {+ "": {+ "name": "node-addon-examples",+ "version": "1.0.0",+ "workspaces": [+ "src/1-getting-started/*/*",+ "src/2-js-to-native/*/*",+ "src/3-context-awareness/*",+ "src/4-references-and-handle-scope/*",+ "src/5-async-work/*/*",+ "src/6-threadsafe-function/*/*",+ "src/7-events/*/*",+ "src/8-tooling/*/*"+ ],+ "dependencies": {+ "chalk": "^5.4.1",+ "semver": "^7.1.3"+ },+ "devDependencies": {+ "clang-format": "^1.4.0",+ "husky": "^4.3.0",+ "lint-staged": "^16.1.0",+ "node-gyp": "^12.2.0"+ }+ },+ "node_modules/@babel/code-frame": {+ "version": "7.29.0",+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",+ "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "@babel/helper-validator-identifier": "^7.28.5",+ "js-tokens": "^4.0.0",+ "picocolors": "^1.1.1"+ },+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@babel/helper-validator-identifier": {+ "version": "7.28.5",+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@cspotcode/source-map-support": {+ "version": "0.8.1",+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",+ "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "@jridgewell/trace-mapping": "0.3.9"+ },+ "engines": {+ "node": ">=12"+ }+ },+ "node_modules/@gar/promise-retry": {+ "version": "1.0.3",+ "resolved": "https://registry.npmjs.org/@gar/promise-retry/-/promise-retry-1.0.3.tgz",+ "integrity": "sha512-GmzA9ckNokPypTg10pgpeHNQe7ph+iIKKmhKu3Ob9ANkswreCx7R3cKmY781K8QK3AqVL3xVh9A42JvIAbkkSA==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": "^20.17.0 || >=22.9.0"+ }+ },+ "node_modules/@isaacs/fs-minipass": {+ "version": "4.0.1",+ "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",+ "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",+ "license": "ISC",+ "dependencies": {+ "minipass": "^7.0.4"+ },+ "engines": {+ "node": ">=18.0.0"+ }+ },+ "node_modules/@jridgewell/resolve-uri": {+ "version": "3.1.2",+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=6.0.0"+ }+ },+ "node_modules/@jridgewell/sourcemap-codec": {+ "version": "1.5.5",+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/@jridgewell/trace-mapping": {+ "version": "0.3.9",+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "@jridgewell/resolve-uri": "^3.0.3",+ "@jridgewell/sourcemap-codec": "^1.4.10"+ }+ },+ "node_modules/@npmcli/agent": {+ "version": "4.0.0",+ "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz",+ "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==",+ "dev": true,+ "license": "ISC",+ "dependencies": {+ "agent-base": "^7.1.0",+ "http-proxy-agent": "^7.0.0",+ "https-proxy-agent": "^7.0.1",+ "lru-cache": "^11.2.1",+ "socks-proxy-agent": "^8.0.3"+ },+ "engines": {+ "node": "^20.17.0 || >=22.9.0"+ }+ },+ "node_modules/@npmcli/fs": {+ "version": "5.0.0",+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-5.0.0.tgz",+ "integrity": "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==",+ "dev": true,+ "license": "ISC",+ "dependencies": {+ "semver": "^7.3.5"+ },+ "engines": {+ "node": "^20.17.0 || >=22.9.0"+ }+ },+ "node_modules/@npmcli/redact": {+ "version": "4.0.0",+ "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-4.0.0.tgz",+ "integrity": "sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==",+ "dev": true,+ "license": "ISC",+ "engines": {+ "node": "^20.17.0 || >=22.9.0"+ }+ },+ "node_modules/@tsconfig/node10": {+ "version": "1.0.12",+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz",+ "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/@tsconfig/node12": {+ "version": "1.0.11",+ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",+ "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/@tsconfig/node14": {+ "version": "1.0.3",+ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",+ "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/@tsconfig/node16": {+ "version": "1.0.4",+ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",+ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/@types/node": {+ "version": "25.5.2",+ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.2.tgz",+ "integrity": "sha512-tO4ZIRKNC+MDWV4qKVZe3Ql/woTnmHDr5JD8UI5hn2pwBrHEwOEMZK7WlNb5RKB6EoJ02gwmQS9OrjuFnZYdpg==",+ "dev": true,+ "license": "MIT",+ "peer": true,+ "dependencies": {+ "undici-types": "~7.18.0"+ }+ },+ "node_modules/@types/parse-json": {+ "version": "4.0.2",+ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",+ "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/abbrev": {+ "version": "4.0.0",+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz",+ "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==",+ "dev": true,+ "license": "ISC",+ "engines": {+ "node": "^20.17.0 || >=22.9.0"+ }+ },+ "node_modules/acorn": {+ "version": "8.16.0",+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",+ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",+ "dev": true,+ "license": "MIT",+ "bin": {+ "acorn": "bin/acorn"+ },+ "engines": {+ "node": ">=0.4.0"+ }+ },+ "node_modules/acorn-walk": {+ "version": "8.3.5",+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz",+ "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "acorn": "^8.11.0"+ },+ "engines": {+ "node": ">=0.4.0"+ }+ },+ "node_modules/agent-base": {+ "version": "7.1.4",+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">= 14"+ }+ },+ "node_modules/ansi-escapes": {+ "version": "7.3.0",+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz",+ "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "environment": "^1.0.0"+ },+ "engines": {+ "node": ">=18"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/ansi-regex": {+ "version": "6.2.2",+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=12"+ },+ "funding": {+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"+ }+ },+ "node_modules/ansi-styles": {+ "version": "6.2.3",+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=12"+ },+ "funding": {+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"+ }+ },+ "node_modules/arg": {+ "version": "4.1.3",+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/async": {+ "version": "3.2.6",+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/async_work_nan": {+ "resolved": "src/5-async-work/async_pi_estimate/nan",+ "link": true+ },+ "node_modules/async_work_node_addon_api": {+ "resolved": "src/5-async-work/async_pi_estimate/node-addon-api",+ "link": true+ },+ "node_modules/async_work_promise": {+ "resolved": "src/5-async-work/async_work_promise/napi",+ "link": true+ },+ "node_modules/async_work_thread_safe_function": {+ "resolved": "src/5-async-work/async_work_thread_safe_function/napi",+ "link": true+ },+ "node_modules/async_worker_promise": {+ "resolved": "src/5-async-work/async_work_promise/node-addon-api",+ "link": true+ },+ "node_modules/async-iterator-example": {+ "resolved": "src/5-async-work/async-iterator/node-addon-api",+ "link": true+ },+ "node_modules/balanced-match": {+ "version": "1.0.2",+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/bindings": {+ "version": "1.5.0",+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",+ "license": "MIT",+ "dependencies": {+ "file-uri-to-path": "1.0.0"+ }+ },+ "node_modules/brace-expansion": {+ "version": "1.1.13",+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz",+ "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "balanced-match": "^1.0.0",+ "concat-map": "0.0.1"+ }+ },+ "node_modules/build-napi-with-cmake": {+ "resolved": "src/8-tooling/build_with_cmake/napi",+ "link": true+ },+ "node_modules/build-node-addon-api-with-cmake": {+ "resolved": "src/8-tooling/build_with_cmake/node-addon-api",+ "link": true+ },+ "node_modules/cacache": {+ "version": "20.0.4",+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.4.tgz",+ "integrity": "sha512-M3Lab8NPYlZU2exsL3bMVvMrMqgwCnMWfdZbK28bn3pK6APT/Te/I8hjRPNu1uwORY9a1eEQoifXbKPQMfMTOA==",+ "dev": true,+ "license": "ISC",+ "dependencies": {+ "@npmcli/fs": "^5.0.0",+ "fs-minipass": "^3.0.0",+ "glob": "^13.0.0",+ "lru-cache": "^11.1.0",+ "minipass": "^7.0.3",+ "minipass-collect": "^2.0.1",+ "minipass-flush": "^1.0.5",+ "minipass-pipeline": "^1.2.4",+ "p-map": "^7.0.2",+ "ssri": "^13.0.0"+ },+ "engines": {+ "node": "^20.17.0 || >=22.9.0"+ }+ },+ "node_modules/cacache/node_modules/balanced-match": {+ "version": "4.0.4",+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": "18 || 20 || >=22"+ }+ },+ "node_modules/cacache/node_modules/brace-expansion": {+ "version": "5.0.5",+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz",+ "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "balanced-match": "^4.0.2"+ },+ "engines": {+ "node": "18 || 20 || >=22"+ }+ },+ "node_modules/cacache/node_modules/fs-minipass": {+ "version": "3.0.3",+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz",+ "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==",+ "dev": true,+ "license": "ISC",+ "dependencies": {+ "minipass": "^7.0.3"+ },+ "engines": {+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"+ }+ },+ "node_modules/cacache/node_modules/glob": {+ "version": "13.0.6",+ "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz",+ "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==",+ "dev": true,+ "license": "BlueOak-1.0.0",+ "dependencies": {+ "minimatch": "^10.2.2",+ "minipass": "^7.1.3",+ "path-scurry": "^2.0.2"+ },+ "engines": {+ "node": "18 || 20 || >=22"+ },+ "funding": {+ "url": "https://github.com/sponsors/isaacs"+ }+ },+ "node_modules/cacache/node_modules/minimatch": {+ "version": "10.2.5",+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",+ "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",+ "dev": true,+ "license": "BlueOak-1.0.0",+ "dependencies": {+ "brace-expansion": "^5.0.5"+ },+ "engines": {+ "node": "18 || 20 || >=22"+ },+ "funding": {+ "url": "https://github.com/sponsors/isaacs"+ }+ },+ "node_modules/call-js-from-async-worker-execute": {+ "resolved": "src/5-async-work/call-js-from-async-worker-execute/node-addon-api",+ "link": true+ },+ "node_modules/callbacks_nan": {+ "resolved": "src/1-getting-started/3_callbacks/nan",+ "link": true+ },+ "node_modules/callbacks_napi": {+ "resolved": "src/1-getting-started/3_callbacks/napi",+ "link": true+ },+ "node_modules/callbacks_node_addon_api": {+ "resolved": "src/1-getting-started/3_callbacks/node-addon-api",+ "link": true+ },+ "node_modules/callsites": {+ "version": "3.1.0",+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=6"+ }+ },+ "node_modules/chalk": {+ "version": "5.6.2",+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",+ "license": "MIT",+ "engines": {+ "node": "^12.17.0 || ^14.13 || >=16.0.0"+ },+ "funding": {+ "url": "https://github.com/chalk/chalk?sponsor=1"+ }+ },+ "node_modules/chownr": {+ "version": "3.0.0",+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",+ "license": "BlueOak-1.0.0",+ "engines": {+ "node": ">=18"+ }+ },+ "node_modules/ci-info": {+ "version": "2.0.0",+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/clang-format": {+ "version": "1.8.0",+ "resolved": "https://registry.npmjs.org/clang-format/-/clang-format-1.8.0.tgz",+ "integrity": "sha512-pK8gzfu55/lHzIpQ1givIbWfn3eXnU7SfxqIwVgnn5jEM6j4ZJYjpFqFs4iSBPNedzRMmfjYjuQhu657WAXHXw==",+ "dev": true,+ "license": "Apache-2.0",+ "dependencies": {+ "async": "^3.2.3",+ "glob": "^7.0.0",+ "resolve": "^1.1.6"+ },+ "bin": {+ "check-clang-format": "bin/check-clang-format.js",+ "clang-format": "index.js",+ "git-clang-format": "bin/git-clang-format"+ }+ },+ "node_modules/cli-cursor": {+ "version": "5.0.0",+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz",+ "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "restore-cursor": "^5.0.0"+ },+ "engines": {+ "node": ">=18"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/cli-truncate": {+ "version": "5.2.0",+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.2.0.tgz",+ "integrity": "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "slice-ansi": "^8.0.0",+ "string-width": "^8.2.0"+ },+ "engines": {+ "node": ">=20"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/cliui": {+ "version": "8.0.1",+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",+ "license": "ISC",+ "dependencies": {+ "string-width": "^4.2.0",+ "strip-ansi": "^6.0.1",+ "wrap-ansi": "^7.0.0"+ },+ "engines": {+ "node": ">=12"+ }+ },+ "node_modules/cliui/node_modules/ansi-regex": {+ "version": "5.0.1",+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",+ "license": "MIT",+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/cliui/node_modules/ansi-styles": {+ "version": "4.3.0",+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",+ "license": "MIT",+ "dependencies": {+ "color-convert": "^2.0.1"+ },+ "engines": {+ "node": ">=8"+ },+ "funding": {+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"+ }+ },+ "node_modules/cliui/node_modules/is-fullwidth-code-point": {+ "version": "3.0.0",+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",+ "license": "MIT",+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/cliui/node_modules/string-width": {+ "version": "4.2.3",+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",+ "license": "MIT",+ "dependencies": {+ "emoji-regex": "^8.0.0",+ "is-fullwidth-code-point": "^3.0.0",+ "strip-ansi": "^6.0.1"+ },+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/cliui/node_modules/strip-ansi": {+ "version": "6.0.1",+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",+ "license": "MIT",+ "dependencies": {+ "ansi-regex": "^5.0.1"+ },+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/cliui/node_modules/wrap-ansi": {+ "version": "7.0.0",+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",+ "license": "MIT",+ "dependencies": {+ "ansi-styles": "^4.0.0",+ "string-width": "^4.1.0",+ "strip-ansi": "^6.0.0"+ },+ "engines": {+ "node": ">=10"+ },+ "funding": {+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"+ }+ },+ "node_modules/cmake-js": {+ "version": "8.0.0",+ "resolved": "https://registry.npmjs.org/cmake-js/-/cmake-js-8.0.0.tgz",+ "integrity": "sha512-YbUP88RDwCvoQkZhRtGURYm9RIpWdtvZuhT87fKNoLjk8kIFIFeARpKfuZQGdwfH99GZpUmqSfcDrK62X7lTgg==",+ "license": "MIT",+ "dependencies": {+ "debug": "^4.4.3",+ "fs-extra": "^11.3.3",+ "node-api-headers": "^1.8.0",+ "rc": "1.2.8",+ "semver": "^7.7.3",+ "tar": "^7.5.6",+ "url-join": "^4.0.1",+ "which": "^6.0.0",+ "yargs": "^17.7.2"+ },+ "bin": {+ "cmake-js": "bin/cmake-js"+ },+ "engines": {+ "node": "^20.17.0 || >=22.9.0"+ }+ },+ "node_modules/color-convert": {+ "version": "2.0.1",+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",+ "license": "MIT",+ "dependencies": {+ "color-name": "~1.1.4"+ },+ "engines": {+ "node": ">=7.0.0"+ }+ },+ "node_modules/color-name": {+ "version": "1.1.4",+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",+ "license": "MIT"+ },+ "node_modules/colorette": {+ "version": "2.0.20",+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/commander": {+ "version": "14.0.3",+ "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz",+ "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=20"+ }+ },+ "node_modules/compare-versions": {+ "version": "3.6.0",+ "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz",+ "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/concat-map": {+ "version": "0.0.1",+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/cosmiconfig": {+ "version": "7.1.0",+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",+ "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "@types/parse-json": "^4.0.0",+ "import-fresh": "^3.2.1",+ "parse-json": "^5.0.0",+ "path-type": "^4.0.0",+ "yaml": "^1.10.0"+ },+ "engines": {+ "node": ">=10"+ }+ },+ "node_modules/create-require": {+ "version": "1.1.1",+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/debug": {+ "version": "4.4.3",+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",+ "license": "MIT",+ "dependencies": {+ "ms": "^2.1.3"+ },+ "engines": {+ "node": ">=6.0"+ },+ "peerDependenciesMeta": {+ "supports-color": {+ "optional": true+ }+ }+ },+ "node_modules/deep-extend": {+ "version": "0.6.0",+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",+ "license": "MIT",+ "engines": {+ "node": ">=4.0.0"+ }+ },+ "node_modules/diff": {+ "version": "4.0.4",+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz",+ "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==",+ "dev": true,+ "license": "BSD-3-Clause",+ "engines": {+ "node": ">=0.3.1"+ }+ },+ "node_modules/emit-event-from-cpp-example": {+ "resolved": "src/7-events/emit_event_from_cpp/node-addon-api",+ "link": true+ },+ "node_modules/emoji-regex": {+ "version": "8.0.0",+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",+ "license": "MIT"+ },+ "node_modules/env-paths": {+ "version": "2.2.1",+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=6"+ }+ },+ "node_modules/environment": {+ "version": "1.1.0",+ "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz",+ "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=18"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/error-ex": {+ "version": "1.3.4",+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",+ "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "is-arrayish": "^0.2.1"+ }+ },+ "node_modules/escalade": {+ "version": "3.2.0",+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",+ "license": "MIT",+ "engines": {+ "node": ">=6"+ }+ },+ "node_modules/eventemitter3": {+ "version": "5.0.4",+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz",+ "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/example-typedthreadsafefunction": {+ "resolved": "src/6-threadsafe-function/typed_threadsafe_function/node-addon-api",+ "link": true+ },+ "node_modules/exponential-backoff": {+ "version": "3.1.3",+ "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz",+ "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==",+ "dev": true,+ "license": "Apache-2.0"+ },+ "node_modules/factory_wrap_nan": {+ "resolved": "src/1-getting-started/7_factory_wrap/nan",+ "link": true+ },+ "node_modules/factory_wrap_napi": {+ "resolved": "src/1-getting-started/7_factory_wrap/napi",+ "link": true+ },+ "node_modules/factory_wrap_node_addon_api": {+ "resolved": "src/1-getting-started/7_factory_wrap/node-addon-api",+ "link": true+ },+ "node_modules/fdir": {+ "version": "6.5.0",+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=12.0.0"+ },+ "peerDependencies": {+ "picomatch": "^3 || ^4"+ },+ "peerDependenciesMeta": {+ "picomatch": {+ "optional": true+ }+ }+ },+ "node_modules/file-uri-to-path": {+ "version": "1.0.0",+ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",+ "license": "MIT"+ },+ "node_modules/find-up": {+ "version": "5.0.0",+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "locate-path": "^6.0.0",+ "path-exists": "^4.0.0"+ },+ "engines": {+ "node": ">=10"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/find-versions": {+ "version": "4.0.0",+ "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz",+ "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "semver-regex": "^3.1.2"+ },+ "engines": {+ "node": ">=10"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/fs-extra": {+ "version": "11.3.4",+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz",+ "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==",+ "license": "MIT",+ "dependencies": {+ "graceful-fs": "^4.2.0",+ "jsonfile": "^6.0.1",+ "universalify": "^2.0.0"+ },+ "engines": {+ "node": ">=14.14"+ }+ },+ "node_modules/fs.realpath": {+ "version": "1.0.0",+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",+ "dev": true,+ "license": "ISC"+ },+ "node_modules/function_arguments_nan": {+ "resolved": "src/1-getting-started/2_function_arguments/nan",+ "link": true+ },+ "node_modules/function_arguments_napi": {+ "resolved": "src/1-getting-started/2_function_arguments/napi",+ "link": true+ },+ "node_modules/function_arguments_node_addon_api": {+ "resolved": "src/1-getting-started/2_function_arguments/node-addon-api",+ "link": true+ },+ "node_modules/function_factory_nan": {+ "resolved": "src/1-getting-started/5_function_factory/nan",+ "link": true+ },+ "node_modules/function_factory_napi": {+ "resolved": "src/1-getting-started/5_function_factory/napi",+ "link": true+ },+ "node_modules/function_factory_node_addon_api": {+ "resolved": "src/1-getting-started/5_function_factory/node-addon-api",+ "link": true+ },+ "node_modules/function-bind": {+ "version": "1.1.2",+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",+ "dev": true,+ "license": "MIT",+ "funding": {+ "url": "https://github.com/sponsors/ljharb"+ }+ },+ "node_modules/get-caller-file": {+ "version": "2.0.5",+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",+ "license": "ISC",+ "engines": {+ "node": "6.* || 8.* || >= 10.*"+ }+ },+ "node_modules/get-east-asian-width": {+ "version": "1.5.0",+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz",+ "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=18"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/glob": {+ "version": "7.2.3",+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",+ "dev": true,+ "license": "ISC",+ "dependencies": {+ "fs.realpath": "^1.0.0",+ "inflight": "^1.0.4",+ "inherits": "2",+ "minimatch": "^3.1.1",+ "once": "^1.3.0",+ "path-is-absolute": "^1.0.0"+ },+ "engines": {+ "node": "*"+ },+ "funding": {+ "url": "https://github.com/sponsors/isaacs"+ }+ },+ "node_modules/graceful-fs": {+ "version": "4.2.11",+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",+ "license": "ISC"+ },+ "node_modules/has-flag": {+ "version": "4.0.0",+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/hasown": {+ "version": "2.0.2",+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "function-bind": "^1.1.2"+ },+ "engines": {+ "node": ">= 0.4"+ }+ },+ "node_modules/hello_world_nan": {+ "resolved": "src/1-getting-started/1_hello_world/nan",+ "link": true+ },+ "node_modules/hello_world_napi": {+ "resolved": "src/1-getting-started/1_hello_world/napi",+ "link": true+ },+ "node_modules/hello_world_node_addon_api": {+ "resolved": "src/1-getting-started/1_hello_world/node-addon-api",+ "link": true+ },+ "node_modules/hello_world_node_addon_api_addon_class": {+ "resolved": "src/1-getting-started/1_hello_world/node-addon-api-addon-class",+ "link": true+ },+ "node_modules/hello-world": {+ "resolved": "src/1-getting-started/a-first-project/node-addon-api",+ "link": true+ },+ "node_modules/http-cache-semantics": {+ "version": "4.2.0",+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",+ "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",+ "dev": true,+ "license": "BSD-2-Clause"+ },+ "node_modules/http-proxy-agent": {+ "version": "7.0.2",+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "agent-base": "^7.1.0",+ "debug": "^4.3.4"+ },+ "engines": {+ "node": ">= 14"+ }+ },+ "node_modules/https-proxy-agent": {+ "version": "7.0.6",+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "agent-base": "^7.1.2",+ "debug": "4"+ },+ "engines": {+ "node": ">= 14"+ }+ },+ "node_modules/husky": {+ "version": "4.3.8",+ "resolved": "https://registry.npmjs.org/husky/-/husky-4.3.8.tgz",+ "integrity": "sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow==",+ "dev": true,+ "hasInstallScript": true,+ "license": "MIT",+ "dependencies": {+ "chalk": "^4.0.0",+ "ci-info": "^2.0.0",+ "compare-versions": "^3.6.0",+ "cosmiconfig": "^7.0.0",+ "find-versions": "^4.0.0",+ "opencollective-postinstall": "^2.0.2",+ "pkg-dir": "^5.0.0",+ "please-upgrade-node": "^3.2.0",+ "slash": "^3.0.0",+ "which-pm-runs": "^1.0.0"+ },+ "bin": {+ "husky-run": "bin/run.js",+ "husky-upgrade": "lib/upgrader/bin.js"+ },+ "engines": {+ "node": ">=10"+ },+ "funding": {+ "type": "opencollective",+ "url": "https://opencollective.com/husky"+ }+ },+ "node_modules/husky/node_modules/ansi-styles": {+ "version": "4.3.0",+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "color-convert": "^2.0.1"+ },+ "engines": {+ "node": ">=8"+ },+ "funding": {+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"+ }+ },+ "node_modules/husky/node_modules/chalk": {+ "version": "4.1.2",+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "ansi-styles": "^4.1.0",+ "supports-color": "^7.1.0"+ },+ "engines": {+ "node": ">=10"+ },+ "funding": {+ "url": "https://github.com/chalk/chalk?sponsor=1"+ }+ },+ "node_modules/iconv-lite": {+ "version": "0.7.2",+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz",+ "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==",+ "dev": true,+ "license": "MIT",+ "optional": true,+ "dependencies": {+ "safer-buffer": ">= 2.1.2 < 3.0.0"+ },+ "engines": {+ "node": ">=0.10.0"+ },+ "funding": {+ "type": "opencollective",+ "url": "https://opencollective.com/express"+ }+ },+ "node_modules/import-fresh": {+ "version": "3.3.1",+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "parent-module": "^1.0.0",+ "resolve-from": "^4.0.0"+ },+ "engines": {+ "node": ">=6"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/inflight": {+ "version": "1.0.6",+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",+ "dev": true,+ "license": "ISC",+ "dependencies": {+ "once": "^1.3.0",+ "wrappy": "1"+ }+ },+ "node_modules/inherits": {+ "version": "2.0.4",+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",+ "dev": true,+ "license": "ISC"+ },+ "node_modules/inherits-from-event-emitter-example": {+ "resolved": "src/7-events/inherits_from_event_emitter/node-addon-api",+ "link": true+ },+ "node_modules/ini": {+ "version": "1.3.8",+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",+ "license": "ISC"+ },+ "node_modules/ip-address": {+ "version": "10.1.0",+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz",+ "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">= 12"+ }+ },+ "node_modules/is-arrayish": {+ "version": "0.2.1",+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/is-core-module": {+ "version": "2.16.1",+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "hasown": "^2.0.2"+ },+ "engines": {+ "node": ">= 0.4"+ },+ "funding": {+ "url": "https://github.com/sponsors/ljharb"+ }+ },+ "node_modules/is-fullwidth-code-point": {+ "version": "5.1.0",+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz",+ "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "get-east-asian-width": "^1.3.1"+ },+ "engines": {+ "node": ">=18"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/isexe": {+ "version": "4.0.0",+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz",+ "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==",+ "license": "BlueOak-1.0.0",+ "engines": {+ "node": ">=20"+ }+ },+ "node_modules/js-tokens": {+ "version": "4.0.0",+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/json-parse-even-better-errors": {+ "version": "2.3.1",+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/jsonfile": {+ "version": "6.2.0",+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",+ "license": "MIT",+ "dependencies": {+ "universalify": "^2.0.0"+ },+ "optionalDependencies": {+ "graceful-fs": "^4.1.6"+ }+ },+ "node_modules/lines-and-columns": {+ "version": "1.2.4",+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/lint-staged": {+ "version": "16.4.0",+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-16.4.0.tgz",+ "integrity": "sha512-lBWt8hujh/Cjysw5GYVmZpFHXDCgZzhrOm8vbcUdobADZNOK/bRshr2kM3DfgrrtR1DQhfupW9gnIXOfiFi+bw==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "commander": "^14.0.3",+ "listr2": "^9.0.5",+ "picomatch": "^4.0.3",+ "string-argv": "^0.3.2",+ "tinyexec": "^1.0.4",+ "yaml": "^2.8.2"+ },+ "bin": {+ "lint-staged": "bin/lint-staged.js"+ },+ "engines": {+ "node": ">=20.17"+ },+ "funding": {+ "url": "https://opencollective.com/lint-staged"+ }+ },+ "node_modules/lint-staged/node_modules/yaml": {+ "version": "2.8.3",+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz",+ "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",+ "dev": true,+ "license": "ISC",+ "bin": {+ "yaml": "bin.mjs"+ },+ "engines": {+ "node": ">= 14.6"+ },+ "funding": {+ "url": "https://github.com/sponsors/eemeli"+ }+ },+ "node_modules/listr2": {+ "version": "9.0.5",+ "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.5.tgz",+ "integrity": "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "cli-truncate": "^5.0.0",+ "colorette": "^2.0.20",+ "eventemitter3": "^5.0.1",+ "log-update": "^6.1.0",+ "rfdc": "^1.4.1",+ "wrap-ansi": "^9.0.0"+ },+ "engines": {+ "node": ">=20.0.0"+ }+ },+ "node_modules/locate-path": {+ "version": "6.0.0",+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "p-locate": "^5.0.0"+ },+ "engines": {+ "node": ">=10"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/log-update": {+ "version": "6.1.0",+ "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz",+ "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "ansi-escapes": "^7.0.0",+ "cli-cursor": "^5.0.0",+ "slice-ansi": "^7.1.0",+ "strip-ansi": "^7.1.0",+ "wrap-ansi": "^9.0.0"+ },+ "engines": {+ "node": ">=18"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/log-update/node_modules/slice-ansi": {+ "version": "7.1.2",+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz",+ "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "ansi-styles": "^6.2.1",+ "is-fullwidth-code-point": "^5.0.0"+ },+ "engines": {+ "node": ">=18"+ },+ "funding": {+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"+ }+ },+ "node_modules/lru-cache": {+ "version": "11.2.7",+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz",+ "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==",+ "dev": true,+ "license": "BlueOak-1.0.0",+ "engines": {+ "node": "20 || >=22"+ }+ },+ "node_modules/make-error": {+ "version": "1.3.6",+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",+ "dev": true,+ "license": "ISC"+ },+ "node_modules/make-fetch-happen": {+ "version": "15.0.5",+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.5.tgz",+ "integrity": "sha512-uCbIa8jWWmQZt4dSnEStkVC6gdakiinAm4PiGsywIkguF0eWMdcjDz0ECYhUolFU3pFLOev9VNPCEygydXnddg==",+ "dev": true,+ "license": "ISC",+ "dependencies": {+ "@gar/promise-retry": "^1.0.0",+ "@npmcli/agent": "^4.0.0",+ "@npmcli/redact": "^4.0.0",+ "cacache": "^20.0.1",+ "http-cache-semantics": "^4.1.1",+ "minipass": "^7.0.2",+ "minipass-fetch": "^5.0.0",+ "minipass-flush": "^1.0.5",+ "minipass-pipeline": "^1.2.4",+ "negotiator": "^1.0.0",+ "proc-log": "^6.0.0",+ "ssri": "^13.0.0"+ },+ "engines": {+ "node": "^20.17.0 || >=22.9.0"+ }+ },+ "node_modules/mimic-function": {+ "version": "5.0.1",+ "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz",+ "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=18"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/minimatch": {+ "version": "3.1.5",+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",+ "dev": true,+ "license": "ISC",+ "dependencies": {+ "brace-expansion": "^1.1.7"+ },+ "engines": {+ "node": "*"+ }+ },+ "node_modules/minimist": {+ "version": "1.2.8",+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",+ "license": "MIT",+ "funding": {+ "url": "https://github.com/sponsors/ljharb"+ }+ },+ "node_modules/minipass": {+ "version": "7.1.3",+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",+ "license": "BlueOak-1.0.0",+ "engines": {+ "node": ">=16 || 14 >=14.17"+ }+ },+ "node_modules/minipass-collect": {+ "version": "2.0.1",+ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz",+ "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==",+ "dev": true,+ "license": "ISC",+ "dependencies": {+ "minipass": "^7.0.3"+ },+ "engines": {+ "node": ">=16 || 14 >=14.17"+ }+ },+ "node_modules/minipass-fetch": {+ "version": "5.0.2",+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-5.0.2.tgz",+ "integrity": "sha512-2d0q2a8eCi2IRg/IGubCNRJoYbA1+YPXAzQVRFmB45gdGZafyivnZ5YSEfo3JikbjGxOdntGFvBQGqaSMXlAFQ==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "minipass": "^7.0.3",+ "minipass-sized": "^2.0.0",+ "minizlib": "^3.0.1"+ },+ "engines": {+ "node": "^20.17.0 || >=22.9.0"+ },+ "optionalDependencies": {+ "iconv-lite": "^0.7.2"+ }+ },+ "node_modules/minipass-flush": {+ "version": "1.0.7",+ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.7.tgz",+ "integrity": "sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==",+ "dev": true,+ "license": "BlueOak-1.0.0",+ "dependencies": {+ "minipass": "^3.0.0"+ },+ "engines": {+ "node": ">= 8"+ }+ },+ "node_modules/minipass-flush/node_modules/minipass": {+ "version": "3.3.6",+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",+ "dev": true,+ "license": "ISC",+ "dependencies": {+ "yallist": "^4.0.0"+ },+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/minipass-pipeline": {+ "version": "1.2.4",+ "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",+ "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",+ "dev": true,+ "license": "ISC",+ "dependencies": {+ "minipass": "^3.0.0"+ },+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/minipass-pipeline/node_modules/minipass": {+ "version": "3.3.6",+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",+ "dev": true,+ "license": "ISC",+ "dependencies": {+ "yallist": "^4.0.0"+ },+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/minipass-sized": {+ "version": "2.0.0",+ "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-2.0.0.tgz",+ "integrity": "sha512-zSsHhto5BcUVM2m1LurnXY6M//cGhVaegT71OfOXoprxT6o780GZd792ea6FfrQkuU4usHZIUczAQMRUE2plzA==",+ "dev": true,+ "license": "ISC",+ "dependencies": {+ "minipass": "^7.1.2"+ },+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/minizlib": {+ "version": "3.1.0",+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz",+ "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==",+ "license": "MIT",+ "dependencies": {+ "minipass": "^7.1.2"+ },+ "engines": {+ "node": ">= 18"+ }+ },+ "node_modules/ms": {+ "version": "2.1.3",+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",+ "license": "MIT"+ },+ "node_modules/multiple_load_napi": {+ "resolved": "src/3-context-awareness/napi",+ "link": true+ },+ "node_modules/multiple_load_node_10": {+ "resolved": "src/3-context-awareness/node_10",+ "link": true+ },+ "node_modules/nan": {+ "version": "2.26.2",+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.26.2.tgz",+ "integrity": "sha512-0tTvBTYkt3tdGw22nrAy50x7gpbGCCFH3AFcyS5WiUu7Eu4vWlri1woE6qHBSfy11vksDqkiwjOnlR7WV8G1Hw==",+ "license": "MIT"+ },+ "node_modules/napi-asyncworker-example": {+ "resolved": "src/5-async-work/napi-asyncworker-example/node-addon-api",+ "link": true+ },+ "node_modules/negotiator": {+ "version": "1.0.0",+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",+ "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">= 0.6"+ }+ },+ "node_modules/node-addon-api": {+ "version": "8.7.0",+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.7.0.tgz",+ "integrity": "sha512-9MdFxmkKaOYVTV+XVRG8ArDwwQ77XIgIPyKASB1k3JPq3M8fGQQQE3YpMOrKm6g//Ktx8ivZr8xo1Qmtqub+GA==",+ "license": "MIT",+ "engines": {+ "node": "^18 || ^20 || >= 21"+ }+ },+ "node_modules/node-api-headers": {+ "version": "1.8.0",+ "resolved": "https://registry.npmjs.org/node-api-headers/-/node-api-headers-1.8.0.tgz",+ "integrity": "sha512-jfnmiKWjRAGbdD1yQS28bknFM1tbHC1oucyuMPjmkEs+kpiu76aRs40WlTmBmyEgzDM76ge1DQ7XJ3R5deiVjQ==",+ "license": "MIT"+ },+ "node_modules/node-gyp": {+ "version": "12.2.0",+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-12.2.0.tgz",+ "integrity": "sha512-q23WdzrQv48KozXlr0U1v9dwO/k59NHeSzn6loGcasyf0UnSrtzs8kRxM+mfwJSf0DkX0s43hcqgnSO4/VNthQ==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "env-paths": "^2.2.0",+ "exponential-backoff": "^3.1.1",+ "graceful-fs": "^4.2.6",+ "make-fetch-happen": "^15.0.0",+ "nopt": "^9.0.0",+ "proc-log": "^6.0.0",+ "semver": "^7.3.5",+ "tar": "^7.5.4",+ "tinyglobby": "^0.2.12",+ "which": "^6.0.0"+ },+ "bin": {+ "node-gyp": "bin/node-gyp.js"+ },+ "engines": {+ "node": "^20.17.0 || >=22.9.0"+ }+ },+ "node_modules/nopt": {+ "version": "9.0.0",+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-9.0.0.tgz",+ "integrity": "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==",+ "dev": true,+ "license": "ISC",+ "dependencies": {+ "abbrev": "^4.0.0"+ },+ "bin": {+ "nopt": "bin/nopt.js"+ },+ "engines": {+ "node": "^20.17.0 || >=22.9.0"+ }+ },+ "node_modules/object_factory_nan": {+ "resolved": "src/1-getting-started/4_object_factory/nan",+ "link": true+ },+ "node_modules/object_factory_napi": {+ "resolved": "src/1-getting-started/4_object_factory/napi",+ "link": true+ },+ "node_modules/object_factory_node_addon_api": {+ "resolved": "src/1-getting-started/4_object_factory/node-addon-api",+ "link": true+ },+ "node_modules/object_wrap_nan": {+ "resolved": "src/1-getting-started/6_object_wrap/nan",+ "link": true+ },+ "node_modules/object_wrap_napi": {+ "resolved": "src/1-getting-started/6_object_wrap/napi",+ "link": true+ },+ "node_modules/object_wrap_node_addon_api": {+ "resolved": "src/1-getting-started/6_object_wrap/node-addon-api",+ "link": true+ },+ "node_modules/once": {+ "version": "1.4.0",+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",+ "dev": true,+ "license": "ISC",+ "dependencies": {+ "wrappy": "1"+ }+ },+ "node_modules/onetime": {+ "version": "7.0.0",+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz",+ "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "mimic-function": "^5.0.0"+ },+ "engines": {+ "node": ">=18"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/opencollective-postinstall": {+ "version": "2.0.3",+ "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz",+ "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==",+ "dev": true,+ "license": "MIT",+ "bin": {+ "opencollective-postinstall": "index.js"+ }+ },+ "node_modules/p-limit": {+ "version": "3.1.0",+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "yocto-queue": "^0.1.0"+ },+ "engines": {+ "node": ">=10"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/p-locate": {+ "version": "5.0.0",+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "p-limit": "^3.0.2"+ },+ "engines": {+ "node": ">=10"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/p-map": {+ "version": "7.0.4",+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz",+ "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=18"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/parent-module": {+ "version": "1.0.1",+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "callsites": "^3.0.0"+ },+ "engines": {+ "node": ">=6"+ }+ },+ "node_modules/parse-json": {+ "version": "5.2.0",+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "@babel/code-frame": "^7.0.0",+ "error-ex": "^1.3.1",+ "json-parse-even-better-errors": "^2.3.0",+ "lines-and-columns": "^1.1.6"+ },+ "engines": {+ "node": ">=8"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/path-exists": {+ "version": "4.0.0",+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/path-is-absolute": {+ "version": "1.0.1",+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=0.10.0"+ }+ },+ "node_modules/path-parse": {+ "version": "1.0.7",+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/path-scurry": {+ "version": "2.0.2",+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz",+ "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==",+ "dev": true,+ "license": "BlueOak-1.0.0",+ "dependencies": {+ "lru-cache": "^11.0.0",+ "minipass": "^7.1.2"+ },+ "engines": {+ "node": "18 || 20 || >=22"+ },+ "funding": {+ "url": "https://github.com/sponsors/isaacs"+ }+ },+ "node_modules/path-type": {+ "version": "4.0.0",+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/picocolors": {+ "version": "1.1.1",+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",+ "dev": true,+ "license": "ISC"+ },+ "node_modules/picomatch": {+ "version": "4.0.4",+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",+ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=12"+ },+ "funding": {+ "url": "https://github.com/sponsors/jonschlinkert"+ }+ },+ "node_modules/pkg-dir": {+ "version": "5.0.0",+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz",+ "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "find-up": "^5.0.0"+ },+ "engines": {+ "node": ">=10"+ }+ },+ "node_modules/please-upgrade-node": {+ "version": "3.2.0",+ "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",+ "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "semver-compare": "^1.0.0"+ }+ },+ "node_modules/proc-log": {+ "version": "6.1.0",+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz",+ "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==",+ "dev": true,+ "license": "ISC",+ "engines": {+ "node": "^20.17.0 || >=22.9.0"+ }+ },+ "node_modules/promise-callback-demo": {+ "resolved": "src/6-threadsafe-function/promise-callback-demo/node-addon-api",+ "link": true+ },+ "node_modules/rc": {+ "version": "1.2.8",+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",+ "dependencies": {+ "deep-extend": "^0.6.0",+ "ini": "~1.3.0",+ "minimist": "^1.2.0",+ "strip-json-comments": "~2.0.1"+ },+ "bin": {+ "rc": "cli.js"+ }+ },+ "node_modules/require-directory": {+ "version": "2.1.1",+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",+ "license": "MIT",+ "engines": {+ "node": ">=0.10.0"+ }+ },+ "node_modules/resolve": {+ "version": "1.22.11",+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",+ "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "is-core-module": "^2.16.1",+ "path-parse": "^1.0.7",+ "supports-preserve-symlinks-flag": "^1.0.0"+ },+ "bin": {+ "resolve": "bin/resolve"+ },+ "engines": {+ "node": ">= 0.4"+ },+ "funding": {+ "url": "https://github.com/sponsors/ljharb"+ }+ },+ "node_modules/resolve-from": {+ "version": "4.0.0",+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=4"+ }+ },+ "node_modules/restore-cursor": {+ "version": "5.1.0",+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz",+ "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "onetime": "^7.0.0",+ "signal-exit": "^4.1.0"+ },+ "engines": {+ "node": ">=18"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/restore-cursor/node_modules/signal-exit": {+ "version": "4.1.0",+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",+ "dev": true,+ "license": "ISC",+ "engines": {+ "node": ">=14"+ },+ "funding": {+ "url": "https://github.com/sponsors/isaacs"+ }+ },+ "node_modules/rfdc": {+ "version": "1.4.1",+ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",+ "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/safer-buffer": {+ "version": "2.1.2",+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",+ "dev": true,+ "license": "MIT",+ "optional": true+ },+ "node_modules/semver": {+ "version": "7.7.4",+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",+ "license": "ISC",+ "bin": {+ "semver": "bin/semver.js"+ },+ "engines": {+ "node": ">=10"+ }+ },+ "node_modules/semver-compare": {+ "version": "1.0.0",+ "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",+ "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/semver-regex": {+ "version": "3.1.4",+ "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz",+ "integrity": "sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=8"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/slash": {+ "version": "3.0.0",+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/slice-ansi": {+ "version": "8.0.0",+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz",+ "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "ansi-styles": "^6.2.3",+ "is-fullwidth-code-point": "^5.1.0"+ },+ "engines": {+ "node": ">=20"+ },+ "funding": {+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"+ }+ },+ "node_modules/smart-buffer": {+ "version": "4.2.0",+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">= 6.0.0",+ "npm": ">= 3.0.0"+ }+ },+ "node_modules/socks": {+ "version": "2.8.7",+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz",+ "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "ip-address": "^10.0.1",+ "smart-buffer": "^4.2.0"+ },+ "engines": {+ "node": ">= 10.0.0",+ "npm": ">= 3.0.0"+ }+ },+ "node_modules/socks-proxy-agent": {+ "version": "8.0.5",+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz",+ "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "agent-base": "^7.1.2",+ "debug": "^4.3.4",+ "socks": "^2.8.3"+ },+ "engines": {+ "node": ">= 14"+ }+ },+ "node_modules/ssri": {+ "version": "13.0.1",+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.1.tgz",+ "integrity": "sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==",+ "dev": true,+ "license": "ISC",+ "dependencies": {+ "minipass": "^7.0.3"+ },+ "engines": {+ "node": "^20.17.0 || >=22.9.0"+ }+ },+ "node_modules/string-argv": {+ "version": "0.3.2",+ "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz",+ "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=0.6.19"+ }+ },+ "node_modules/string-width": {+ "version": "8.2.0",+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz",+ "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "get-east-asian-width": "^1.5.0",+ "strip-ansi": "^7.1.2"+ },+ "engines": {+ "node": ">=20"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/strip-ansi": {+ "version": "7.2.0",+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",+ "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "ansi-regex": "^6.2.2"+ },+ "engines": {+ "node": ">=12"+ },+ "funding": {+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"+ }+ },+ "node_modules/strip-json-comments": {+ "version": "2.0.1",+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",+ "license": "MIT",+ "engines": {+ "node": ">=0.10.0"+ }+ },+ "node_modules/supports-color": {+ "version": "7.2.0",+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "has-flag": "^4.0.0"+ },+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/supports-preserve-symlinks-flag": {+ "version": "1.0.0",+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">= 0.4"+ },+ "funding": {+ "url": "https://github.com/sponsors/ljharb"+ }+ },+ "node_modules/tar": {+ "version": "7.5.13",+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz",+ "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==",+ "license": "BlueOak-1.0.0",+ "dependencies": {+ "@isaacs/fs-minipass": "^4.0.0",+ "chownr": "^3.0.0",+ "minipass": "^7.1.2",+ "minizlib": "^3.1.0",+ "yallist": "^5.0.0"+ },+ "engines": {+ "node": ">=18"+ }+ },+ "node_modules/tar/node_modules/yallist": {+ "version": "5.0.0",+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",+ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",+ "license": "BlueOak-1.0.0",+ "engines": {+ "node": ">=18"+ }+ },+ "node_modules/thread_safe_function_round_trip": {+ "resolved": "src/6-threadsafe-function/thread_safe_function_round_trip/napi",+ "link": true+ },+ "node_modules/threadsafe-async-iterator-example": {+ "resolved": "src/6-threadsafe-function/threadsafe-async-iterator/node-addon-api",+ "link": true+ },+ "node_modules/tinyexec": {+ "version": "1.0.4",+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz",+ "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=18"+ }+ },+ "node_modules/tinyglobby": {+ "version": "0.2.15",+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",+ "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "fdir": "^6.5.0",+ "picomatch": "^4.0.3"+ },+ "engines": {+ "node": ">=12.0.0"+ },+ "funding": {+ "url": "https://github.com/sponsors/SuperchupuDev"+ }+ },+ "node_modules/ts-node": {+ "version": "10.9.2",+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",+ "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "@cspotcode/source-map-support": "^0.8.0",+ "@tsconfig/node10": "^1.0.7",+ "@tsconfig/node12": "^1.0.7",+ "@tsconfig/node14": "^1.0.0",+ "@tsconfig/node16": "^1.0.2",+ "acorn": "^8.4.1",+ "acorn-walk": "^8.1.1",+ "arg": "^4.1.0",+ "create-require": "^1.1.0",+ "diff": "^4.0.1",+ "make-error": "^1.1.1",+ "v8-compile-cache-lib": "^3.0.1",+ "yn": "3.1.1"+ },+ "bin": {+ "ts-node": "dist/bin.js",+ "ts-node-cwd": "dist/bin-cwd.js",+ "ts-node-esm": "dist/bin-esm.js",+ "ts-node-script": "dist/bin-script.js",+ "ts-node-transpile-only": "dist/bin-transpile.js",+ "ts-script": "dist/bin-script-deprecated.js"+ },+ "peerDependencies": {+ "@swc/core": ">=1.2.50",+ "@swc/wasm": ">=1.2.50",+ "@types/node": "*",+ "typescript": ">=2.7"+ },+ "peerDependenciesMeta": {+ "@swc/core": {+ "optional": true+ },+ "@swc/wasm": {+ "optional": true+ }+ }+ },+ "node_modules/tsfn-counting": {+ "resolved": "src/6-threadsafe-function/thread_safe_function_counting/node-addon-api",+ "link": true+ },+ "node_modules/tsfn-test": {+ "resolved": "src/6-threadsafe-function/thread_safe_function_with_object_wrap/node-addon-api",+ "link": true+ },+ "node_modules/typescript": {+ "version": "6.0.2",+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz",+ "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==",+ "dev": true,+ "license": "Apache-2.0",+ "bin": {+ "tsc": "bin/tsc",+ "tsserver": "bin/tsserver"+ },+ "engines": {+ "node": ">=14.17"+ }+ },+ "node_modules/typescript_with_addon": {+ "resolved": "src/8-tooling/typescript_with_addon/node-addon-api",+ "link": true+ },+ "node_modules/undici-types": {+ "version": "7.18.2",+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz",+ "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==",+ "dev": true,+ "license": "MIT",+ "peer": true+ },+ "node_modules/universalify": {+ "version": "2.0.1",+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",+ "license": "MIT",+ "engines": {+ "node": ">= 10.0.0"+ }+ },+ "node_modules/url-join": {+ "version": "4.0.1",+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",+ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==",+ "license": "MIT"+ },+ "node_modules/v8-compile-cache-lib": {+ "version": "3.0.1",+ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",+ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/which": {+ "version": "6.0.1",+ "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz",+ "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==",+ "license": "ISC",+ "dependencies": {+ "isexe": "^4.0.0"+ },+ "bin": {+ "node-which": "bin/which.js"+ },+ "engines": {+ "node": "^20.17.0 || >=22.9.0"+ }+ },+ "node_modules/which-pm-runs": {+ "version": "1.1.0",+ "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz",+ "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=4"+ }+ },+ "node_modules/wrap-ansi": {+ "version": "9.0.2",+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "ansi-styles": "^6.2.1",+ "string-width": "^7.0.0",+ "strip-ansi": "^7.1.0"+ },+ "engines": {+ "node": ">=18"+ },+ "funding": {+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"+ }+ },+ "node_modules/wrap-ansi/node_modules/emoji-regex": {+ "version": "10.6.0",+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",+ "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",+ "dev": true,+ "license": "MIT"+ },+ "node_modules/wrap-ansi/node_modules/string-width": {+ "version": "7.2.0",+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "emoji-regex": "^10.3.0",+ "get-east-asian-width": "^1.0.0",+ "strip-ansi": "^7.1.0"+ },+ "engines": {+ "node": ">=18"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/wrappy": {+ "version": "1.0.2",+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",+ "dev": true,+ "license": "ISC"+ },+ "node_modules/y18n": {+ "version": "5.0.8",+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",+ "license": "ISC",+ "engines": {+ "node": ">=10"+ }+ },+ "node_modules/yallist": {+ "version": "4.0.0",+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",+ "dev": true,+ "license": "ISC"+ },+ "node_modules/yaml": {+ "version": "1.10.3",+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz",+ "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==",+ "dev": true,+ "license": "ISC",+ "engines": {+ "node": ">= 6"+ }+ },+ "node_modules/yargs": {+ "version": "17.7.2",+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",+ "license": "MIT",+ "dependencies": {+ "cliui": "^8.0.1",+ "escalade": "^3.1.1",+ "get-caller-file": "^2.0.5",+ "require-directory": "^2.1.1",+ "string-width": "^4.2.3",+ "y18n": "^5.0.5",+ "yargs-parser": "^21.1.1"+ },+ "engines": {+ "node": ">=12"+ }+ },+ "node_modules/yargs-parser": {+ "version": "21.1.1",+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",+ "license": "ISC",+ "engines": {+ "node": ">=12"+ }+ },+ "node_modules/yargs/node_modules/ansi-regex": {+ "version": "5.0.1",+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",+ "license": "MIT",+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/yargs/node_modules/is-fullwidth-code-point": {+ "version": "3.0.0",+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",+ "license": "MIT",+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/yargs/node_modules/string-width": {+ "version": "4.2.3",+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",+ "license": "MIT",+ "dependencies": {+ "emoji-regex": "^8.0.0",+ "is-fullwidth-code-point": "^3.0.0",+ "strip-ansi": "^6.0.1"+ },+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/yargs/node_modules/strip-ansi": {+ "version": "6.0.1",+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",+ "license": "MIT",+ "dependencies": {+ "ansi-regex": "^5.0.1"+ },+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/yn": {+ "version": "3.1.1",+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=6"+ }+ },+ "node_modules/yocto-queue": {+ "version": "0.1.0",+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",+ "dev": true,+ "license": "MIT",+ "engines": {+ "node": ">=10"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "src/1-getting-started/1_hello_world/nan": {+ "name": "hello_world_nan",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "~1.5.0",+ "nan": "^2.0.0"+ }+ },+ "src/1-getting-started/1_hello_world/napi": {+ "name": "hello_world_napi",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "~1.5.0"+ }+ },+ "src/1-getting-started/1_hello_world/node-addon-api": {+ "name": "hello_world_node_addon_api",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "~1.5.0",+ "node-addon-api": "^8.1.0"+ }+ },+ "src/1-getting-started/1_hello_world/node-addon-api-addon-class": {+ "name": "hello_world_node_addon_api_addon_class",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "~1.5.0",+ "node-addon-api": "^8.1.0"+ }+ },+ "src/1-getting-started/2_function_arguments/nan": {+ "name": "function_arguments_nan",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "~1.5.0",+ "nan": "^2.0.0"+ }+ },+ "src/1-getting-started/2_function_arguments/napi": {+ "name": "function_arguments_napi",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "~1.5.0"+ }+ },+ "src/1-getting-started/2_function_arguments/node-addon-api": {+ "name": "function_arguments_node_addon_api",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "~1.5.0",+ "node-addon-api": "^8.1.0"+ }+ },+ "src/1-getting-started/3_callbacks/nan": {+ "name": "callbacks_nan",+ "version": "0.0.0",+ "dependencies": {+ "bindings": "~1.5.0",+ "nan": "^2.14.0"+ }+ },+ "src/1-getting-started/3_callbacks/napi": {+ "name": "callbacks_napi",+ "version": "0.0.0",+ "dependencies": {+ "bindings": "~1.5.0"+ }+ },+ "src/1-getting-started/3_callbacks/node-addon-api": {+ "name": "callbacks_node_addon_api",+ "version": "0.0.0",+ "dependencies": {+ "bindings": "~1.5.0",+ "node-addon-api": "^8.1.0"+ }+ },+ "src/1-getting-started/4_object_factory/nan": {+ "name": "object_factory_nan",+ "version": "0.0.0",+ "dependencies": {+ "bindings": "~1.5.0",+ "nan": "^2.14.0"+ }+ },+ "src/1-getting-started/4_object_factory/napi": {+ "name": "object_factory_napi",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "~1.5.0"+ }+ },+ "src/1-getting-started/4_object_factory/node-addon-api": {+ "name": "object_factory_node_addon_api",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "~1.5.0",+ "node-addon-api": "^8.0.0"+ }+ },+ "src/1-getting-started/5_function_factory/nan": {+ "name": "function_factory_nan",+ "version": "0.0.0",+ "dependencies": {+ "bindings": "~1.5.0",+ "nan": "^2.0.0"+ }+ },+ "src/1-getting-started/5_function_factory/napi": {+ "name": "function_factory_napi",+ "version": "0.0.0",+ "dependencies": {+ "bindings": "~1.5.0"+ }+ },+ "src/1-getting-started/5_function_factory/node-addon-api": {+ "name": "function_factory_node_addon_api",+ "version": "0.0.0",+ "dependencies": {+ "bindings": "~1.5.0",+ "node-addon-api": "^8.1.0"+ }+ },+ "src/1-getting-started/6_object_wrap/nan": {+ "name": "object_wrap_nan",+ "version": "0.0.0",+ "dependencies": {+ "bindings": "~1.5.0",+ "nan": "^2.14.0"+ }+ },+ "src/1-getting-started/6_object_wrap/napi": {+ "name": "object_wrap_napi",+ "version": "0.0.0",+ "dependencies": {+ "bindings": "~1.5.0"+ }+ },+ "src/1-getting-started/6_object_wrap/node-addon-api": {+ "name": "object_wrap_node_addon_api",+ "version": "0.0.0",+ "dependencies": {+ "bindings": "~1.5.0",+ "node-addon-api": "^8.1.0"+ },+ "engines": {+ "node": "~10 >=10.20 || >=12.17"+ }+ },+ "src/1-getting-started/7_factory_wrap/nan": {+ "name": "factory_wrap_nan",+ "version": "0.0.0",+ "dependencies": {+ "bindings": "~1.5.0",+ "nan": "^2.0.0"+ }+ },+ "src/1-getting-started/7_factory_wrap/napi": {+ "name": "factory_wrap_napi",+ "version": "0.0.0",+ "dependencies": {+ "bindings": "~1.5.0"+ }+ },+ "src/1-getting-started/7_factory_wrap/node-addon-api": {+ "name": "factory_wrap_node_addon_api",+ "version": "0.0.0",+ "dependencies": {+ "bindings": "~1.5.0",+ "node-addon-api": "^8.1.0"+ },+ "engines": {+ "node": "~10 >=10.20 || >=12.17"+ }+ },+ "src/1-getting-started/a-first-project/node-addon-api": {+ "name": "hello-world",+ "version": "1.0.0",+ "hasInstallScript": true,+ "license": "ISC",+ "dependencies": {+ "node-addon-api": "^8.1.0"+ }+ },+ "src/3-context-awareness/napi": {+ "name": "multiple_load_napi",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "~1.5.0"+ },+ "engines": {+ "node": ">= 10.10.0"+ }+ },+ "src/3-context-awareness/node_10": {+ "name": "multiple_load_node_10",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "~1.5.0"+ },+ "engines": {+ "node": ">= 10.10.0"+ }+ },+ "src/5-async-work/async_pi_estimate/nan": {+ "name": "async_work_nan",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "nan": "*"+ }+ },+ "src/5-async-work/async_pi_estimate/node-addon-api": {+ "name": "async_work_node_addon_api",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "*",+ "node-addon-api": "*"+ }+ },+ "src/5-async-work/async_work_promise/napi": {+ "name": "async_work_promise",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "~1.5.0"+ },+ "engines": {+ "node": ">= 10.6.0"+ }+ },+ "src/5-async-work/async_work_promise/node-addon-api": {+ "name": "async_worker_promise",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "^1.5.0",+ "node-addon-api": "^8.0.0"+ }+ },+ "src/5-async-work/async_work_thread_safe_function/napi": {+ "name": "async_work_thread_safe_function",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "~1.5.0"+ },+ "engines": {+ "node": ">= 10.6.0"+ }+ },+ "src/5-async-work/async-iterator/node-addon-api": {+ "name": "async-iterator-example",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "^1.5.0",+ "cmake-js": "^8.0.0",+ "node-addon-api": "^8.1.0"+ }+ },+ "src/5-async-work/call-js-from-async-worker-execute/node-addon-api": {+ "name": "call-js-from-async-worker-execute",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "*",+ "node-addon-api": "*"+ }+ },+ "src/5-async-work/napi-asyncworker-example/node-addon-api": {+ "name": "napi-asyncworker-example",+ "version": "1.0.0",+ "hasInstallScript": true,+ "license": "MIT",+ "dependencies": {+ "node-addon-api": "^8.1.0"+ }+ },+ "src/6-threadsafe-function/promise-callback-demo/node-addon-api": {+ "name": "promise-callback-demo",+ "version": "1.0.0",+ "hasInstallScript": true,+ "license": "ISC",+ "dependencies": {+ "node-addon-api": "^8.1.0"+ },+ "engines": {+ "node": ">= 10.16.0"+ }+ },+ "src/6-threadsafe-function/thread_safe_function_counting/node-addon-api": {+ "name": "tsfn-counting",+ "version": "0.0.0",+ "dependencies": {+ "bindings": "*",+ "node-addon-api": "*"+ },+ "engines": {+ "node": ">= 10.16.0"+ }+ },+ "src/6-threadsafe-function/thread_safe_function_round_trip/napi": {+ "name": "thread_safe_function_round_trip",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "~1.5.0"+ },+ "engines": {+ "node": ">= 10.6.0"+ }+ },+ "src/6-threadsafe-function/thread_safe_function_with_object_wrap/node-addon-api": {+ "name": "tsfn-test",+ "version": "1.0.0",+ "dependencies": {+ "bindings": "*",+ "node-addon-api": "^8.1.0"+ }+ },+ "src/6-threadsafe-function/threadsafe-async-iterator/node-addon-api": {+ "name": "threadsafe-async-iterator-example",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "^1.5.0",+ "cmake-js": "^8.0.0",+ "node-addon-api": "^8.1.0"+ }+ },+ "src/6-threadsafe-function/typed_threadsafe_function/node-addon-api": {+ "name": "example-typedthreadsafefunction",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "~1.5.0",+ "cmake-js": "^8.0.0",+ "node-addon-api": "^8.1.0"+ }+ },+ "src/7-events/emit_event_from_cpp/node-addon-api": {+ "name": "emit-event-from-cpp-example",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "*",+ "node-addon-api": "*"+ }+ },+ "src/7-events/inherits_from_event_emitter/node-addon-api": {+ "name": "inherits-from-event-emitter-example",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "*",+ "node-addon-api": "*"+ }+ },+ "src/8-tooling/build_with_cmake/napi": {+ "name": "build-napi-with-cmake",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "~1.5.0"+ },+ "devDependencies": {+ "cmake-js": "^8.0.0"+ }+ },+ "src/8-tooling/build_with_cmake/node-addon-api": {+ "name": "build-node-addon-api-with-cmake",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "~1.5.0",+ "node-addon-api": "^8.1.0"+ },+ "devDependencies": {+ "cmake-js": "^8.0.0"+ }+ },+ "src/8-tooling/typescript_with_addon/node-addon-api": {+ "name": "typescript_with_addon",+ "version": "0.0.0",+ "hasInstallScript": true,+ "dependencies": {+ "bindings": "^1.5.0",+ "node-addon-api": "^8.1.0"+ },+ "devDependencies": {+ "cmake-js": "^8.0.0",+ "ts-node": "^10.9.2",+ "typescript": "^6.0.2"+ }+ }+ }+}
@@ -20,12 +20,22 @@ }, "dependencies": { "chalk": "^5.4.1",- "cmake-js": "^7.1.1", "semver": "^7.1.3" }, "devDependencies": { "clang-format": "^1.4.0",+ "node-gyp": "^12.2.0", "husky": "^4.3.0", "lint-staged": "^16.1.0"- }+ },+ "workspaces": [+ "src/1-getting-started/*/*",+ "src/2-js-to-native/*/*",+ "src/3-context-awareness/*",+ "src/4-references-and-handle-scope/*",+ "src/5-async-work/*/*",+ "src/6-threadsafe-function/*/*",+ "src/7-events/*/*",+ "src/8-tooling/*/*"+ ] }
src/1-getting-started/1_hello_world/nan/package.json
@@ -1,5 +1,5 @@ {- "name": "hello_world",+ "name": "hello_world_nan", "version": "0.0.0", "description": "Node.js Addons Example #1", "main": "hello.js",
src/1-getting-started/1_hello_world/napi/package.json
@@ -1,5 +1,5 @@ {- "name": "hello_world",+ "name": "hello_world_napi", "version": "0.0.0", "description": "Node.js Addons Example #1", "main": "hello.js",
src/1-getting-started/1_hello_world/node-addon-api-addon-class/package.json
@@ -1,5 +1,5 @@ {- "name": "hello_world",+ "name": "hello_world_node_addon_api_addon_class", "version": "0.0.0", "description": "Node.js Addons Example #1", "main": "hello.js",
src/1-getting-started/1_hello_world/node-addon-api/package.json
@@ -1,5 +1,5 @@ {- "name": "hello_world",+ "name": "hello_world_node_addon_api", "version": "0.0.0", "description": "Node.js Addons Example #1", "main": "hello.js",
src/1-getting-started/2_function_arguments/nan/package.json
@@ -1,5 +1,5 @@ {- "name": "function_arguments",+ "name": "function_arguments_nan", "version": "0.0.0", "description": "Node.js Addons Example #2", "main": "addon.js",
src/1-getting-started/2_function_arguments/napi/package.json
@@ -1,5 +1,5 @@ {- "name": "function_arguments",+ "name": "function_arguments_napi", "version": "0.0.0", "description": "Node.js Addons Example #2", "main": "addon.js",
src/1-getting-started/2_function_arguments/node-addon-api/package.json
@@ -1,5 +1,5 @@ {- "name": "function_arguments",+ "name": "function_arguments_node_addon_api", "version": "0.0.0", "description": "Node.js Addons Example #2", "main": "addon.js",
src/1-getting-started/3_callbacks/nan/package.json
@@ -1,5 +1,5 @@ {- "name": "callbacks",+ "name": "callbacks_nan", "version": "0.0.0", "description": "Node.js Addons Example #3", "main": "addon.js",
src/1-getting-started/3_callbacks/napi/package.json
@@ -1,5 +1,5 @@ {- "name": "napi_callbacks",+ "name": "callbacks_napi", "version": "0.0.0", "description": "Node.js Addons Example #3", "main": "addon.js",
src/1-getting-started/3_callbacks/node-addon-api/package.json
@@ -1,5 +1,5 @@ {- "name": "callbacks",+ "name": "callbacks_node_addon_api", "version": "0.0.0", "description": "Node.js Addons Example #3", "main": "addon.js",
src/1-getting-started/4_object_factory/nan/package.json
@@ -1,5 +1,5 @@ {- "name": "object_factory",+ "name": "object_factory_nan", "version": "0.0.0", "description": "Node.js Addons Example #4", "main": "addon.js",
src/1-getting-started/4_object_factory/napi/package.json
@@ -1,5 +1,5 @@ {- "name": "object_factory",+ "name": "object_factory_napi", "version": "0.0.0", "description": "Node.js Addons Example #4", "main": "addon.js",
src/1-getting-started/4_object_factory/node-addon-api/package.json
@@ -1,5 +1,5 @@ {- "name": "object_factory",+ "name": "object_factory_node_addon_api", "version": "0.0.0", "description": "Node.js Addons Example #4", "main": "addon.js",
src/1-getting-started/5_function_factory/nan/package.json
@@ -1,5 +1,5 @@ {- "name": "function_factory",+ "name": "function_factory_nan", "version": "0.0.0", "description": "Node.js Addons Example #5", "main": "addon.js",
src/1-getting-started/5_function_factory/napi/package.json
@@ -1,5 +1,5 @@ {- "name": "function_factory",+ "name": "function_factory_napi", "version": "0.0.0", "description": "Node.js Addons Example #5", "main": "addon.js",
src/1-getting-started/5_function_factory/node-addon-api/package.json
@@ -1,5 +1,5 @@ {- "name": "function_factory",+ "name": "function_factory_node_addon_api", "version": "0.0.0", "description": "Node.js Addons Example #5", "main": "addon.js",
src/1-getting-started/6_object_wrap/nan/package.json
@@ -1,5 +1,5 @@ {- "name": "object_wrap",+ "name": "object_wrap_nan", "version": "0.0.0", "description": "Node.js Addons Example #6", "main": "addon.js",
src/1-getting-started/6_object_wrap/napi/package.json
@@ -1,5 +1,5 @@ {- "name": "object_wrap",+ "name": "object_wrap_napi", "version": "0.0.0", "description": "Node.js Addons Example #6", "main": "addon.js",
src/1-getting-started/6_object_wrap/node-addon-api/package.json
@@ -1,5 +1,5 @@ {- "name": "object_wrap",+ "name": "object_wrap_node_addon_api", "version": "0.0.0", "description": "Node.js Addons Example #6", "main": "addon.js",
src/1-getting-started/7_factory_wrap/nan/package.json
@@ -1,5 +1,5 @@ {- "name": "factory_wrap",+ "name": "factory_wrap_nan", "version": "0.0.0", "description": "Node.js Addons Example #7", "main": "addon.js",
src/1-getting-started/7_factory_wrap/napi/package.json
@@ -1,5 +1,5 @@ {- "name": "factory_wrap",+ "name": "factory_wrap_napi", "version": "0.0.0", "description": "Node.js Addons Example #7", "main": "addon.js",
src/1-getting-started/7_factory_wrap/node-addon-api/package.json
@@ -1,5 +1,5 @@ {- "name": "factory_wrap",+ "name": "factory_wrap_node_addon_api", "version": "0.0.0", "description": "Node.js Addons Example #7", "main": "addon.js",
src/2-js-to-native-conversion/object-template-demo/nan/object-template-demo.cc
@@ -108,10 +108,10 @@ NAN_PROPERTY_DELETER(NamedInterceptor::PropertyDeleter) { NAN_PROPERTY_QUERY(NamedInterceptor::PropertyQuery) { Nan::Utf8String s(property); if (!std::strcmp(*s, "thing")) {- return info.GetReturnValue().Set(Nan::New<v8::Integer>(v8::DontEnum));+ info.GetReturnValue().Set(Nan::New<v8::Integer>(v8::DontEnum)); } if (!std::strcmp(*s, "value")) {- return info.GetReturnValue().Set(Nan::New(0));+ info.GetReturnValue().Set(Nan::New(0)); } }
src/3-context-awareness/napi/package.json
@@ -1,5 +1,5 @@ {- "name": "multiple_load",+ "name": "multiple_load_napi", "version": "0.0.0", "description": "Multiple load example", "main": "index.js",
src/3-context-awareness/node_10/package.json
@@ -1,5 +1,5 @@ {- "name": "multiple_load",+ "name": "multiple_load_node_10", "version": "0.0.0", "description": "Multiple load example", "main": "index.js",
src/5-async-work/async_pi_estimate/nan/package.json
@@ -1,5 +1,5 @@ {- "name": "async_work",+ "name": "async_work_nan", "version": "0.0.0", "description": "Node.js Addons Example #9", "main": "addon.js",
src/5-async-work/async_pi_estimate/node-addon-api/package.json
@@ -1,5 +1,5 @@ {- "name": "async_work",+ "name": "async_work_node_addon_api", "version": "0.0.0", "description": "Node.js Addons Example #9", "main": "addon.js",
src/5-async-work/async_work_thread_safe_function/napi/binding.c
@@ -1,6 +1,5 @@ #include <assert.h> #include <stdlib.h>-#define NAPI_EXPERIMENTAL #include <node_api.h> // Limit ourselves to this many primes, starting at 2
src/6-threadsafe-function/promise-callback-demo/node-addon-api/package.json
@@ -5,9 +5,7 @@ "dependencies": { "node-addon-api": "^8.1.0" },- "scripts": {- "install": "node-gyp rebuild && node test"- },+ "scripts": {}, "engines": { "node": ">= 10.16.0" },
src/6-threadsafe-function/thread_safe_function_round_trip/napi/round_trip.c
@@ -2,7 +2,6 @@ #include <stdlib.h> #include <string.h> #include <uv.h>-#define NAPI_EXPERIMENTAL #include <node_api.h> #define CHECK(expr) \
src/6-threadsafe-function/thread_safe_function_with_object_wrap/node-addon-api/package.json
@@ -2,7 +2,7 @@ "name": "tsfn-test", "version": "1.0.0", "description": "",- "main": "index.js",+ "main": "tsfn_object_wrap.js", "author": "", "dependencies": { "bindings": "*",
src/6-threadsafe-function/thread_safe_function_with_object_wrap/node-addon-api/tsfn_object_wrap.cc
@@ -24,7 +24,6 @@ class TsfnObjectWrap : public Napi::ObjectWrap<TsfnObjectWrap> { } ~TsfnObjectWrap() {- _tsfn.Abort(); _thread.join(); } @@ -44,7 +43,7 @@ class TsfnObjectWrap : public Napi::ObjectWrap<TsfnObjectWrap> { idx = (idx + 1) % 3; int64_t* value_ref = &buffer[idx]; napi_status status = tsfn.BlockingCall(- value_ref, [](Napi::Env env, Napi::Function fn, int64_t* data) {+ value_ref, [tsfn](Napi::Env env, Napi::Function fn, int64_t* data) { int64_t native_value = *data; Napi::Value result = fn.Call({Napi::Number::New(env, native_value)});@@ -55,6 +54,9 @@ class TsfnObjectWrap : public Napi::ObjectWrap<TsfnObjectWrap> { printf("main with %" PRId64 ": Done!\n", result.As<Napi::Number>().Int64Value()); }+ if (native_value == 10) {+ tsfn.Abort();+ } }); // We break out of the infinite loop when we're informed that the thread- // safe function is being torn down.
src/8-tooling/build_with_cmake/napi/package.json
@@ -7,6 +7,9 @@ "dependencies": { "bindings": "~1.5.0" },+ "devDependencies": {+ "cmake-js": "^8.0.0"+ }, "scripts": { "install": "cmake-js compile", "test": "node hello.js"
src/8-tooling/build_with_cmake/node-addon-api/package.json
@@ -8,6 +8,9 @@ "bindings": "~1.5.0", "node-addon-api": "^8.1.0" },+ "devDependencies": {+ "cmake-js": "^8.0.0"+ }, "scripts": { "install": "cmake-js compile", "test": "node hello.js"
src/8-tooling/typescript_with_addon/node-addon-api/package.json
@@ -7,10 +7,11 @@ "node-addon-api": "^8.1.0" }, "scripts": {- "install": "npx cmake-js compile",+ "install": "cmake-js compile", "test": "ts-node index.ts" }, "devDependencies": {+ "cmake-js": "^8.0.0", "ts-node": "^10.9.2", "typescript": "^6.0.2" }
@@ -23,7 +23,7 @@ function getAllExamples(pathToCheck) { const main = async () => { const { default: chalk } = await import("chalk"); const passed = [];- const failedInstalls = [];+ const failedBuilds = []; const noTest = []; const failedTests = []; for (directoryToTest of getAllExamples(examplesFolder)) {@@ -43,12 +43,16 @@ const main = async () => { } } + let buildCommand = "npx node-gyp rebuild";+ if ("scripts" in pkgJson && "install" in pkgJson.scripts) {+ buildCommand = "npm run install";+ } try {- const stdout = execSync("npm install", { cwd: directoryToTest });+ const stdout = execSync(buildCommand, { cwd: directoryToTest }); console.log(stdout.toString()); } catch (err) { console.log(err);- failedInstalls.push(directoryToTest);+ failedBuilds.push(directoryToTest); continue; } @@ -81,9 +85,9 @@ const main = async () => { noTest.map((dir) => console.warn(chalk.yellow(` ${dir}`))); } - if (failedInstalls.length > 0) {- console.error(chalk.red("failed to install:"));- failedInstalls.map((dir) => console.warn(chalk.red(` ${dir}`)));+ if (failedBuilds.length > 0) {+ console.error(chalk.red("failed to build:"));+ failedBuilds.map((dir) => console.warn(chalk.red(` ${dir}`))); } if (failedTests.length > 0) { console.error(chalk.red("failed tests:"));