├── .github └── workflows │ ├── node.js.yml │ └── release-please.yml ├── .gitignore ├── .prettierignore ├── .yarn └── releases │ └── yarn-4.6.0.cjs ├── .yarnrc.yml ├── LICENSE ├── README.md ├── esbuild-node-externals ├── CHANGELOG.md ├── README.md ├── package.json ├── src │ ├── index.ts │ └── utils.ts ├── test │ ├── fixtures │ │ ├── index.mjs │ │ └── package.json │ └── unit │ │ └── index.test.mjs └── tsconfig.json ├── examples └── basic │ ├── bundle.js │ ├── package.json │ └── src │ ├── index.js │ └── koa │ └── koa.js ├── package.json └── yarn.lock /.github/workflows/node.js.yml: -------------------------------------------------------------------------------- 1 | # This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions 3 | 4 | name: Node.js CI 5 | 6 | on: 7 | push: 8 | branches: [main] 9 | pull_request: 10 | branches: [main] 11 | 12 | jobs: 13 | test: 14 | runs-on: ubuntu-latest 15 | 16 | strategy: 17 | matrix: 18 | node-version: [18.x, 20.x, 22.x] 19 | 20 | steps: 21 | - uses: actions/checkout@v4 22 | 23 | - name: Use Node.js ${{ matrix.node-version }} 24 | uses: actions/setup-node@v4 25 | with: 26 | node-version: ${{ matrix.node-version }} 27 | cache: 'yarn' 28 | 29 | - name: Install dependencies 30 | run: yarn install --immutable 31 | 32 | - name: Build 33 | run: yarn workspace esbuild-node-externals build 34 | 35 | - name: Test unit 36 | run: yarn workspace esbuild-node-externals test 37 | 38 | - name: Test integration esbuild@default 39 | run: yarn workspace example-basic build 40 | 41 | - name: Test integration esbuild@0.12 (minimal) 42 | run: | 43 | yarn workspace example-basic add esbuild@0.12 44 | yarn workspace example-basic build 45 | -------------------------------------------------------------------------------- /.github/workflows/release-please.yml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | branches: 4 | - main 5 | 6 | name: release-please 7 | jobs: 8 | release-please: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: googleapis/release-please-action@v3.7.13 12 | id: release 13 | with: 14 | token: ${{ secrets.GITHUB_TOKEN }} 15 | release-type: node 16 | package-name: esbuild-node-externals 17 | changelog-types: '[{"type":"feat","section":"Features","hidden":false},{"type":"fix","section":"Bug Fixes","hidden":false},{"type":"chore","section":"Miscellaneous","hidden":false},{"type":"docs","section":"Documentation","hidden":false},{"type":"test","section":"Tests","hidden":false}]' 18 | path: esbuild-node-externals 19 | 20 | - uses: actions/checkout@v4 21 | if: ${{ steps.release.outputs.release_created }} 22 | 23 | - name: Use Node 22 24 | uses: actions/setup-node@v4 25 | with: 26 | node-version: 22.x 27 | cache: 'yarn' 28 | if: ${{ steps.release.outputs.release_created }} 29 | 30 | - name: Install dependencies 31 | run: yarn install --immutable 32 | if: ${{ steps.release.outputs.release_created }} 33 | 34 | - name: Build esbuild-node-externals 35 | run: yarn workspace esbuild-node-externals build 36 | if: ${{ steps.release.outputs.release_created }} 37 | 38 | - name: Publish esbuild-node-externals npm package 39 | run: yarn workspace esbuild-node-externals npm publish 40 | env: 41 | NPM_TOKEN: ${{secrets.NPM_TOKEN}} 42 | if: ${{ steps.release.outputs.release_created }} 43 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .yarn/* 2 | !.yarn/releases 3 | !.yarn/plugins 4 | .pnp.* 5 | node_modules 6 | 7 | # Build artefacts 8 | dist 9 | temp 10 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | dist 2 | esbuild-node-externals/CHANGELOG.md 3 | -------------------------------------------------------------------------------- /.yarnrc.yml: -------------------------------------------------------------------------------- 1 | compressionLevel: mixed 2 | 3 | enableGlobalCache: false 4 | 5 | nodeLinker: node-modules 6 | 7 | npmAuthToken: "${NPM_TOKEN-''}" 8 | 9 | yarnPath: .yarn/releases/yarn-4.6.0.cjs 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Léo Pradel 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ./esbuild-node-externals/README.md -------------------------------------------------------------------------------- /esbuild-node-externals/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## [1.18.0](https://github.com/pradel/esbuild-node-externals/compare/v1.17.0...v1.18.0) (2025-02-11) 4 | 5 | 6 | ### Features 7 | 8 | * remove tslib from dependencies ([#75](https://github.com/pradel/esbuild-node-externals/issues/75)) ([fa5ce53](https://github.com/pradel/esbuild-node-externals/commit/fa5ce536723f00fcc34855a563f61bbb61d2c7df)) 9 | * upgrade yarn and dependencies ([#73](https://github.com/pradel/esbuild-node-externals/issues/73)) ([0eebcc4](https://github.com/pradel/esbuild-node-externals/commit/0eebcc443d5e8fd788c13349bcfbe0ec35097b2b)) 10 | 11 | ## [1.17.0](https://github.com/pradel/esbuild-node-externals/compare/v1.16.0...v1.17.0) (2025-02-11) 12 | 13 | 14 | ### Features 15 | 16 | * add esbuild 0.25 to the allowed range ([#71](https://github.com/pradel/esbuild-node-externals/issues/71)) ([0ba03bc](https://github.com/pradel/esbuild-node-externals/commit/0ba03bc836d6e2344c6f6054baea0e8838cdd09c)) 17 | 18 | ## [1.16.0](https://github.com/pradel/esbuild-node-externals/compare/v1.15.0...v1.16.0) (2024-12-17) 19 | 20 | 21 | ### Features 22 | 23 | * add forceExternalList option ([555ca9b](https://github.com/pradel/esbuild-node-externals/commit/555ca9bebbe423884e8171bb3b69a7077cbf1219)) 24 | 25 | ## [1.15.0](https://github.com/pradel/esbuild-node-externals/compare/v1.14.0...v1.15.0) (2024-09-26) 26 | 27 | 28 | ### Features 29 | 30 | * add esbuild 0.24 to allowed range, extend integration test ([#65](https://github.com/pradel/esbuild-node-externals/issues/65)) ([9c86592](https://github.com/pradel/esbuild-node-externals/commit/9c865925874cb960163bda777ae030a13af962ff)) 31 | 32 | ## [1.14.0](https://github.com/pradel/esbuild-node-externals/compare/v1.13.1...v1.14.0) (2024-07-09) 33 | 34 | 35 | ### Features 36 | 37 | * add esbuild 0.23.0 to allowed range ([#62](https://github.com/pradel/esbuild-node-externals/issues/62)) ([081519b](https://github.com/pradel/esbuild-node-externals/commit/081519b2dec603c7214ba4058acd4afd9ef4f7d7)) 38 | 39 | 40 | ### Tests 41 | 42 | * fix unit test assert ([#60](https://github.com/pradel/esbuild-node-externals/issues/60)) ([0f3f818](https://github.com/pradel/esbuild-node-externals/commit/0f3f818537d26b4d58fc8ba5924c29debfd647ae)) 43 | 44 | ### [1.13.1](https://www.github.com/pradel/esbuild-node-externals/compare/v1.13.0...v1.13.1) (2024-05-07) 45 | 46 | 47 | ### Bug Fixes 48 | 49 | * add esbuild 0.21 to allowed range ([#58](https://www.github.com/pradel/esbuild-node-externals/issues/58)) ([0409b3f](https://www.github.com/pradel/esbuild-node-externals/commit/0409b3f9fa4d89d858abc0d3a67621a76f314b94)) 50 | 51 | ## [1.13.0](https://www.github.com/pradel/esbuild-node-externals/compare/v1.12.0...v1.13.0) (2024-02-12) 52 | 53 | 54 | ### Features 55 | 56 | * allow esbuild 0.20 ([#56](https://www.github.com/pradel/esbuild-node-externals/issues/56)) ([b1540d1](https://www.github.com/pradel/esbuild-node-externals/commit/b1540d1b1f45567cb57b6c0629451a66fb82a5c9)) 57 | 58 | ## [1.12.0](https://www.github.com/pradel/esbuild-node-externals/compare/v1.11.0...v1.12.0) (2023-12-20) 59 | 60 | 61 | ### Features 62 | 63 | * handle esbuild `absWorkingDir` option ([#52](https://www.github.com/pradel/esbuild-node-externals/issues/52)) ([8e6e809](https://www.github.com/pradel/esbuild-node-externals/commit/8e6e809d4d643e97991d58df3e14c7d56f2c73e0)) 64 | 65 | 66 | ### Bug Fixes 67 | 68 | * enhance workspaced deps filter ([#53](https://www.github.com/pradel/esbuild-node-externals/issues/53)) ([83ed85a](https://www.github.com/pradel/esbuild-node-externals/commit/83ed85a9ba1a3670551bdb9bdba525d219a56065)) 69 | 70 | ## [1.11.0](https://www.github.com/pradel/esbuild-node-externals/compare/v1.10.0...v1.11.0) (2023-11-20) 71 | 72 | 73 | ### Features 74 | 75 | * support same allowList options as webpack-node-externals ([#50](https://www.github.com/pradel/esbuild-node-externals/issues/50)) ([2dde999](https://www.github.com/pradel/esbuild-node-externals/commit/2dde999f71e317ff412d079290a63712ad2eb34e)) 76 | 77 | ## [1.10.0](https://www.github.com/pradel/esbuild-node-externals/compare/v1.9.0...v1.10.0) (2023-11-20) 78 | 79 | 80 | ### Features 81 | 82 | * add flag to support workspaces dependencies ([#41](https://www.github.com/pradel/esbuild-node-externals/issues/41)) ([50b01b0](https://www.github.com/pradel/esbuild-node-externals/commit/50b01b0e106c3427b72b3366d47df6876b4ddcc5)) 83 | 84 | ## [1.9.0](https://www.github.com/pradel/esbuild-node-externals/compare/v1.8.0...v1.9.0) (2023-08-30) 85 | 86 | 87 | ### Features 88 | 89 | * allow esbuild 0.19 ([#46](https://www.github.com/pradel/esbuild-node-externals/issues/46)) ([325b726](https://www.github.com/pradel/esbuild-node-externals/commit/325b726022720d98e7e60393fb79a645134070c4)) 90 | 91 | ## [1.8.0](https://www.github.com/pradel/esbuild-node-externals/compare/v1.7.0...v1.8.0) (2023-06-22) 92 | 93 | 94 | ### Features 95 | 96 | * allow esbuild 0.18 ([#43](https://www.github.com/pradel/esbuild-node-externals/issues/43)) ([f5db9a8](https://www.github.com/pradel/esbuild-node-externals/commit/f5db9a88cfec3c35a0f8e916d8e6271c98981c65)) 97 | 98 | ## [1.7.0](https://www.github.com/pradel/esbuild-node-externals/compare/v1.6.0...v1.7.0) (2023-03-29) 99 | 100 | 101 | ### Features 102 | 103 | * allow esbuild 0.17 ([#39](https://www.github.com/pradel/esbuild-node-externals/issues/39)) ([a50339d](https://www.github.com/pradel/esbuild-node-externals/commit/a50339d0873e0bb19c86c153f569d8b88890a021)) 104 | 105 | ## [1.6.0](https://www.github.com/pradel/esbuild-node-externals/compare/v1.5.0...v1.6.0) (2022-12-12) 106 | 107 | 108 | ### Features 109 | 110 | * allow esbuild 0.16 ([#35](https://www.github.com/pradel/esbuild-node-externals/issues/35)) ([881f75b](https://www.github.com/pradel/esbuild-node-externals/commit/881f75ba61a18b888c54d1dafb0ac5d11d05c65c)) 111 | 112 | ## [1.5.0](https://www.github.com/pradel/esbuild-node-externals/compare/v1.4.1...v1.5.0) (2022-08-29) 113 | 114 | 115 | ### Features 116 | 117 | * allow esbuild 0.15 ([#32](https://www.github.com/pradel/esbuild-node-externals/issues/32)) ([94d9120](https://www.github.com/pradel/esbuild-node-externals/commit/94d9120959725eca020e66aa308f15c866e63bda)) 118 | 119 | ### [1.4.1](https://www.github.com/pradel/esbuild-node-externals/compare/v1.4.0...v1.4.1) (2021-12-08) 120 | 121 | 122 | ### Bug Fixes 123 | 124 | * adjust the necessary esbuild peer dependency version ([#27](https://www.github.com/pradel/esbuild-node-externals/issues/27)) ([e1c6e78](https://www.github.com/pradel/esbuild-node-externals/commit/e1c6e786ee6e917f0d7c885b97b91ee93cbb30d5)) 125 | 126 | ## [1.4.0](https://www.github.com/pradel/esbuild-node-externals/compare/v1.3.0...v1.4.0) (2021-11-17) 127 | 128 | 129 | ### Features 130 | 131 | * allow allowList to target sub imports ([#20](https://www.github.com/pradel/esbuild-node-externals/issues/20)) ([d7eb235](https://www.github.com/pradel/esbuild-node-externals/commit/d7eb23522424e26fe849c0ce1b51985e358053fd)) 132 | * upgrade esbuild to ^0.13.0 ([#22](https://www.github.com/pradel/esbuild-node-externals/issues/22)) ([52bd661](https://www.github.com/pradel/esbuild-node-externals/commit/52bd661e54891cab5581028fdec51a7040bc2ac6)) 133 | 134 | 135 | ### Miscellaneous 136 | 137 | * upgrade dependencies ([#24](https://www.github.com/pradel/esbuild-node-externals/issues/24)) ([ddac31f](https://www.github.com/pradel/esbuild-node-externals/commit/ddac31fef609d9ac41f9e084bb1202a50820c16c)) 138 | 139 | ## [1.3.0](https://www.github.com/pradel/esbuild-node-externals/compare/v1.2.0...v1.3.0) (2021-06-22) 140 | 141 | 142 | ### Features 143 | 144 | * upgrade esbuild to ^0.12.0 ([#18](https://www.github.com/pradel/esbuild-node-externals/issues/18)) ([4d189f1](https://www.github.com/pradel/esbuild-node-externals/commit/4d189f18f649b1c5bfc0c2713a4ceb1ed455bf8b)) 145 | 146 | ## [1.2.0](https://www.github.com/pradel/esbuild-node-externals/compare/v1.1.0...v1.2.0) (2021-04-15) 147 | 148 | 149 | ### Features 150 | 151 | * upgrade esbuild to ^0.11.0 ([#16](https://www.github.com/pradel/esbuild-node-externals/issues/16)) ([aae134d](https://www.github.com/pradel/esbuild-node-externals/commit/aae134d7b1fa36f528eddf4f6b4c0595fa321525)) 152 | 153 | ## [1.1.0](https://www.github.com/pradel/esbuild-node-externals/compare/v1.0.3...v1.1.0) (2021-04-08) 154 | 155 | 156 | ### Features 157 | 158 | * add allowList option ([#14](https://www.github.com/pradel/esbuild-node-externals/issues/14)) ([4d8ace0](https://www.github.com/pradel/esbuild-node-externals/commit/4d8ace040851a5acd72c980985706754a9f559bc)) 159 | 160 | ### [1.0.3](https://www.github.com/pradel/esbuild-node-externals/compare/v1.0.2...v1.0.3) (2021-03-17) 161 | 162 | 163 | ### Miscellaneous 164 | 165 | * upgrade deps and set esbuild peer dependency to `^0.9.0` ([#11](https://www.github.com/pradel/esbuild-node-externals/issues/11)) ([69689a6](https://www.github.com/pradel/esbuild-node-externals/commit/69689a601a7cb1d317e29279d4800b328c5993b7)) 166 | 167 | ### [1.0.2](https://www.github.com/pradel/esbuild-node-externals/compare/v1.0.1...v1.0.2) (2021-01-31) 168 | 169 | 170 | ### Bug Fixes 171 | 172 | * scoped packages are now marked as externals ([#10](https://www.github.com/pradel/esbuild-node-externals/issues/10)) ([85cb23c](https://www.github.com/pradel/esbuild-node-externals/commit/85cb23c231e3073c7347020636aca4a01df1af5e)) 173 | 174 | 175 | ### Miscellaneous 176 | 177 | * upgrade deps ([#8](https://www.github.com/pradel/esbuild-node-externals/issues/8)) ([d1a283f](https://www.github.com/pradel/esbuild-node-externals/commit/d1a283f3ab2ca2d13952af1b1e1ab387f7015083)) 178 | 179 | ### [1.0.1](https://www.github.com/pradel/esbuild-node-externals/compare/v1.0.0...v1.0.1) (2020-11-18) 180 | 181 | 182 | ### Bug Fixes 183 | 184 | * **ci:** fix release script ([c546396](https://www.github.com/pradel/esbuild-node-externals/commit/c546396eecda193c98e2949b0d9d4764e76facff)) 185 | 186 | ## 1.0.0 (2020-11-18) 187 | 188 | 189 | ### Features 190 | 191 | * first version of the package ([#5](https://www.github.com/pradel/esbuild-node-externals/issues/5)) ([f141a8b](https://www.github.com/pradel/esbuild-node-externals/commit/f141a8b0661e4603f565bab3be9c189c37c1d299)) 192 | * setup repository ([fe40f24](https://www.github.com/pradel/esbuild-node-externals/commit/fe40f243a8eabd7c12e0360858d8cd84cd2720b3)) 193 | -------------------------------------------------------------------------------- /esbuild-node-externals/README.md: -------------------------------------------------------------------------------- 1 | # esbuild-node-externals 2 | 3 | [![npm version](https://img.shields.io/npm/v/esbuild-node-externals.svg)](https://www.npmjs.com/package/esbuild-node-externals) 4 | [![npm downloads per month](https://img.shields.io/npm/dm/esbuild-node-externals.svg)](https://www.npmjs.com/package/esbuild-node-externals) 5 | 6 | [Esbuild](https://github.com/evanw/esbuild) plugin to easily exclude node modules during builds. 7 | 8 | When bundling with Esbuild for the backend by default it will try to bundle all the dependencies. However it's a good idea to not bundle all the `node_modules` dependencies. This plugin will scan the dependencies included in your project and will exclude them from the final bundle. 9 | 10 | ## Installation 11 | 12 | This plugin requires minimum **Node.js 12**, and **Esbuild 0.12+**. 13 | 14 | ```sh 15 | # with npm 16 | npm install --save-dev esbuild-node-externals 17 | 18 | # with yarn 19 | yarn add --dev esbuild-node-externals 20 | ``` 21 | 22 | ## Usage 23 | 24 | When you call the esbuild build API, add the esbuild-node-externals plugin. 25 | 26 | ```js 27 | // Your bundler file 28 | const esbuild = require('esbuild'); 29 | const { nodeExternalsPlugin } = require('esbuild-node-externals'); 30 | 31 | esbuild.build({ 32 | entryPoints: ['src/index.js'], 33 | bundle: true, 34 | platform: 'node', 35 | outfile: 'dist/index.js', 36 | plugins: [nodeExternalsPlugin()], 37 | }); 38 | ``` 39 | 40 | ## Options 41 | 42 | When calling this package, you can pass an `options` object. 43 | 44 | ```js 45 | // Your bundler file 46 | const esbuild = require('esbuild'); 47 | const { nodeExternalsPlugin } = require('esbuild-node-externals'); 48 | 49 | esbuild.build({ 50 | // ... 51 | plugins: [ 52 | nodeExternalsPlugin({ 53 | packagePath: 'path/to/package.json', 54 | }), 55 | ], 56 | }); 57 | ``` 58 | 59 | #### `options.packagePath` 60 | 61 | Path to your `package.json`. Can be a string or an array of strings. If you are using a monorepo you can provide a list of all the `package.json` to check. 62 | 63 | If this option is not specified the default behavior is to start with the current directory's package.json then go up scan for all package.json files in parent directories recursively until either the root git directory is reached or until no other package.json can be found. 64 | 65 | #### `options.dependencies` (default to `true`) 66 | 67 | Make package.json `dependencies` external. 68 | 69 | #### `options.devDependencies` (default to `true`) 70 | 71 | Make package.json `devDependencies` external. 72 | 73 | #### `options.peerDependencies` (default to `true`) 74 | 75 | Make package.json `peerDependencies` external. 76 | 77 | #### `options.optionalDependencies` (default to `true`) 78 | 79 | Make package.json `optionalDependencies` external. 80 | 81 | #### `options.allowList` (default to `[]`) 82 | 83 | An array for the externals to allow, so they will be included in the bundle. Can accept exact strings ('module_name'), regex patterns (/^module_name/), or a function that accepts the module name and returns whether it should be included. 84 | 85 | #### `options.forceExternalList` (default to `[]`) 86 | 87 | An array that forces packages to be treated as external, even if not in `package.json`, so they will be excluded from the bundle. Can accept exact strings ('module_name'), regex patterns (/^module_name/), or a function that accepts the module name and returns whether it should be externalized. 88 | 89 | #### `options.allowWorkspaces` (default to `false`) 90 | 91 | Automatically exclude all packages defined as workspaces (`workspace:*`) in a monorepo. 92 | 93 | #### `options.cwd` (default to `buildOptions.absWorkingDir || process.cwd()`) 94 | 95 | Sets the current working directory for the plugin. 96 | 97 | ## Inspiration 98 | 99 | This package and the implementation are inspired by the work of @liady on [webpack-node-externals](https://github.com/liady/webpack-node-externals) for webpack and @Septh on [rollup-plugin-node-externals](https://github.com/Septh/rollup-plugin-node-externals) for rollup. 100 | 101 | ## License 102 | 103 | MIT © [Léo Pradel](https://www.leopradel.com/) 104 | -------------------------------------------------------------------------------- /esbuild-node-externals/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "esbuild-node-externals", 3 | "version": "1.18.0", 4 | "main": "dist/index.js", 5 | "typings": "dist/index.d.ts", 6 | "scripts": { 7 | "typecheck": "tsc --noEmit", 8 | "prebuild": "rimraf ./dist", 9 | "build": "tsc", 10 | "watch": "tsc --watch", 11 | "test": "node ./test/unit/index.test.mjs" 12 | }, 13 | "repository": "pradel/esbuild-node-externals", 14 | "author": "Leo Pradel ", 15 | "license": "MIT", 16 | "keywords": [ 17 | "esbuild", 18 | "node_modules", 19 | "esbuild-plugin", 20 | "bundle" 21 | ], 22 | "files": [ 23 | "dist", 24 | "src" 25 | ], 26 | "engines": { 27 | "node": ">=12" 28 | }, 29 | "dependencies": { 30 | "find-up": "^5.0.0" 31 | }, 32 | "peerDependencies": { 33 | "esbuild": "0.12 - 0.25" 34 | }, 35 | "devDependencies": { 36 | "@types/node": "^22.13.1", 37 | "esbuild": "^0.25.0", 38 | "rimraf": "^4.4.1", 39 | "tslib": "^2.8.1", 40 | "typescript": "^5.7.3" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /esbuild-node-externals/src/index.ts: -------------------------------------------------------------------------------- 1 | import type { Plugin } from 'esbuild'; 2 | 3 | import { 4 | findPackagePaths, 5 | findDependencies, 6 | type AllowList, 7 | createAllowPredicate, 8 | } from './utils'; 9 | 10 | export interface Options { 11 | packagePath?: string | string[]; 12 | dependencies?: boolean; 13 | devDependencies?: boolean; 14 | peerDependencies?: boolean; 15 | optionalDependencies?: boolean; 16 | allowList?: AllowList; 17 | forceExternalList?: AllowList; 18 | allowWorkspaces?: boolean; 19 | cwd?: string; 20 | } 21 | 22 | const foundPackagePaths: Map = new Map(); 23 | const findPackagePathsMemoized = (cwd: string): string[] => { 24 | if (foundPackagePaths.has(cwd)) { 25 | return foundPackagePaths.get(cwd)!; 26 | } 27 | 28 | foundPackagePaths.set(cwd, findPackagePaths(cwd)); 29 | return findPackagePathsMemoized(cwd); 30 | }; 31 | 32 | export const nodeExternalsPlugin = (paramsOptions: Options = {}): Plugin => { 33 | const options = { 34 | dependencies: true, 35 | devDependencies: true, 36 | peerDependencies: true, 37 | optionalDependencies: true, 38 | allowWorkspaces: false, 39 | ...paramsOptions, 40 | packagePath: 41 | paramsOptions.packagePath && typeof paramsOptions.packagePath === 'string' 42 | ? [paramsOptions.packagePath] 43 | : (paramsOptions.packagePath as string[] | undefined), 44 | }; 45 | 46 | const allowPredicate = 47 | options.allowList && createAllowPredicate(options.allowList); 48 | const externalPredicate = 49 | options.forceExternalList && 50 | createAllowPredicate(options.forceExternalList); 51 | 52 | return { 53 | name: 'node-externals', 54 | setup(build) { 55 | const cwd = 56 | options.cwd || build.initialOptions.absWorkingDir || process.cwd(); 57 | const nodeModules = findDependencies({ 58 | packagePaths: options.packagePath 59 | ? options.packagePath 60 | : findPackagePathsMemoized(cwd), 61 | dependencies: options.dependencies, 62 | devDependencies: options.devDependencies, 63 | peerDependencies: options.peerDependencies, 64 | optionalDependencies: options.optionalDependencies, 65 | allowPredicate, 66 | allowWorkspaces: options.allowWorkspaces, 67 | }); 68 | // On every module resolved, we check if the module name should be an external 69 | build.onResolve({ namespace: 'file', filter: /.*/ }, (args) => { 70 | // To allow allowList to target sub imports 71 | if (allowPredicate?.(args.path)) { 72 | return null; 73 | } 74 | 75 | // To allow sub imports from packages we take only the first path to deduct the name 76 | let moduleName = args.path.split('/')[0]; 77 | 78 | // In case of scoped package 79 | if (args.path.startsWith('@')) { 80 | const split = args.path.split('/'); 81 | moduleName = `${split[0]}/${split[1]}`; 82 | } 83 | 84 | // Mark the module as external so it is not resolved 85 | if (moduleName && nodeModules.includes(moduleName)) { 86 | return { path: args.path, external: true }; 87 | } 88 | 89 | // Allow one last override to force a path/package to be treated as external 90 | if (externalPredicate?.(args.path)) { 91 | return { path: args.path, external: true }; 92 | } 93 | 94 | return null; 95 | }); 96 | }, 97 | }; 98 | }; 99 | 100 | export default nodeExternalsPlugin; 101 | -------------------------------------------------------------------------------- /esbuild-node-externals/src/utils.ts: -------------------------------------------------------------------------------- 1 | import path from 'node:path'; 2 | import fs from 'node:fs'; 3 | import findUp from 'find-up'; 4 | 5 | export type AllowPredicate = (path: string) => boolean; 6 | export type AllowList = (string | RegExp)[] | AllowPredicate; 7 | 8 | export const createAllowPredicate = (allowList: AllowList): AllowPredicate => { 9 | return typeof allowList === 'function' 10 | ? allowList 11 | : (path: string) => 12 | Boolean( 13 | allowList.find((pattern) => 14 | typeof pattern === 'string' ? path === pattern : pattern.test(path), 15 | ), 16 | ); 17 | }; 18 | 19 | /** 20 | * Determines if the `child` path is under the `parent` path. 21 | */ 22 | const isInDirectory = (parent: string, child: string): boolean => { 23 | const relativePath = path.relative(parent, child); 24 | return !relativePath.startsWith('..') && !path.isAbsolute(relativePath); 25 | }; 26 | 27 | const isInGitDirectory = (path: string, gitRootPath?: string): boolean => { 28 | return gitRootPath === undefined || isInDirectory(gitRootPath, path); 29 | }; 30 | 31 | /** 32 | * Iterates over package.json file paths recursively found in parent directories, starting from the 33 | * current working directory. If the current working directory is in a git repository, then package.json 34 | * files outside of the git repository will not be yielded. 35 | * Inspired by https://github.com/Septh/rollup-plugin-node-externals/blob/f13ee95c6f1f01d8ba2276bf491aac399adc5482/src/dependencies.ts#L18 36 | */ 37 | export const findPackagePaths = (_cwd: string = process.cwd()): string[] => { 38 | // Find git root if in git repository 39 | const gitDirectoryPath = findUp.sync('.git', { 40 | type: 'directory', 41 | cwd: _cwd, 42 | }); 43 | const gitRootPath: string | undefined = 44 | gitDirectoryPath === undefined ? undefined : path.dirname(gitDirectoryPath); 45 | 46 | let cwd: string = _cwd; 47 | let packagePath: string | undefined; 48 | const packagePaths: string[] = []; 49 | 50 | while ( 51 | (packagePath = findUp.sync('package.json', { type: 'file', cwd })) && 52 | isInGitDirectory(packagePath, gitRootPath) 53 | ) { 54 | packagePaths.push(packagePath); 55 | cwd = path.dirname(path.dirname(packagePath)); 56 | } 57 | 58 | return packagePaths; 59 | }; 60 | 61 | function getDependencyKeys( 62 | map: Record = {}, 63 | allowWorkspaces: boolean = false, 64 | ): string[] { 65 | if (!map) { 66 | return []; 67 | } 68 | if (!allowWorkspaces) { 69 | return Object.keys(map); 70 | } 71 | // Filter out shared workspaces 72 | return Object.keys(map).filter( 73 | (depKey) => !map[depKey]?.startsWith('workspace:'), 74 | ); 75 | } 76 | 77 | /** 78 | * Return an array of the package.json dependencies that should be excluded from the build. 79 | */ 80 | export const findDependencies = (options: { 81 | packagePaths: string[]; 82 | dependencies: boolean; 83 | devDependencies: boolean; 84 | peerDependencies: boolean; 85 | optionalDependencies: boolean; 86 | allowPredicate?: AllowPredicate | undefined; 87 | allowWorkspaces: boolean; 88 | }): string[] => { 89 | const packageJsonKeys = [ 90 | options.dependencies && 'dependencies', 91 | options.devDependencies && 'devDependencies', 92 | options.peerDependencies && 'peerDependencies', 93 | options.optionalDependencies && 'optionalDependencies', 94 | ].filter(Boolean) as string[]; 95 | 96 | const data = options.packagePaths.map((packagePath) => { 97 | let packageJson: any; 98 | try { 99 | const packageJsonString = fs.readFileSync(packagePath, 'utf8'); 100 | packageJson = JSON.parse(packageJsonString); 101 | } catch (error) { 102 | console.error(error); 103 | throw new Error( 104 | `Couldn't process ${packagePath}". Make sure it's a valid JSON.`, 105 | ); 106 | } 107 | 108 | const packageNames = packageJsonKeys 109 | .map((key) => 110 | getDependencyKeys(packageJson[key], options.allowWorkspaces), 111 | ) 112 | .flat(1); 113 | const { allowPredicate } = options; 114 | return allowPredicate 115 | ? packageNames.filter((packageName) => !allowPredicate(packageName)) 116 | : packageNames; 117 | }); 118 | 119 | return data.flat(1); 120 | }; 121 | -------------------------------------------------------------------------------- /esbuild-node-externals/test/fixtures/index.mjs: -------------------------------------------------------------------------------- 1 | import { __extends } from 'tslib' 2 | 3 | console.log(__extends) 4 | -------------------------------------------------------------------------------- /esbuild-node-externals/test/fixtures/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fixture-pkg", 3 | "private": true, 4 | "dependencies": { 5 | "tslib": "*" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /esbuild-node-externals/test/unit/index.test.mjs: -------------------------------------------------------------------------------- 1 | import assert from 'node:assert' 2 | import fs from 'node:fs/promises' 3 | import path from 'node:path' 4 | import { describe, it } from 'node:test' 5 | import { fileURLToPath } from 'node:url' 6 | import { build } from 'esbuild' 7 | import { nodeExternalsPlugin } from 'esbuild-node-externals' 8 | 9 | const __dirname = path.dirname(fileURLToPath(import.meta.url)) 10 | 11 | describe('nodeExternalsPlugin', () => { 12 | it('should exclude node_modules from bundle', async () => { 13 | const plugin = nodeExternalsPlugin() 14 | const config = { 15 | absWorkingDir: path.resolve(__dirname, '../fixtures'), 16 | entryPoints: ['index.mjs'], 17 | outdir: '../temp', 18 | bundle: true, 19 | } 20 | await build(config) 21 | const result1 = await fs.readFile(path.resolve(__dirname, '../temp/index.js'), 'utf8') 22 | assert.equal(result1.includes('node_modules/tslib/tslib.es6.mjs'), true) 23 | 24 | await build({ 25 | ...config, 26 | plugins: [plugin] 27 | }) 28 | const result2 = await fs.readFile(path.resolve(__dirname, '../temp/index.js'), 'utf8') 29 | assert.equal(result2.includes('node_modules/tslib/tslib.es6.mjs'), false) 30 | }) 31 | }) 32 | -------------------------------------------------------------------------------- /esbuild-node-externals/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "rootDir": "./src", 4 | "outDir": "dist", 5 | "esModuleInterop": true, 6 | "skipLibCheck": true, 7 | "target": "es2022", 8 | "allowJs": true, 9 | "resolveJsonModule": true, 10 | "moduleDetection": "force", 11 | "isolatedModules": true, 12 | "strict": true, 13 | "noUncheckedIndexedAccess": true, 14 | "noImplicitOverride": true, 15 | "module": "NodeNext", 16 | "sourceMap": true, 17 | "declaration": true, 18 | "lib": ["es2022"] 19 | }, 20 | "include": ["src/**/*"], 21 | "exclude": ["node_modules"] 22 | } 23 | -------------------------------------------------------------------------------- /examples/basic/bundle.js: -------------------------------------------------------------------------------- 1 | const esbuild = require('esbuild'); 2 | const { nodeExternalsPlugin } = require('esbuild-node-externals'); 3 | 4 | (async () => { 5 | try { 6 | await esbuild.build({ 7 | entryPoints: ['src/index.js'], 8 | bundle: true, 9 | platform: 'node', 10 | outfile: 'dist/index.js', 11 | plugins: [nodeExternalsPlugin()], 12 | }); 13 | console.log(`Built with ${esbuild.version}`); 14 | process.exit(0); 15 | } catch (e) { 16 | console.error(e); 17 | process.exit(1); 18 | } 19 | })(); 20 | -------------------------------------------------------------------------------- /examples/basic/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example-basic", 3 | "private": true, 4 | "scripts": { 5 | "start": "node dist/index.js", 6 | "build": "node bundle.js" 7 | }, 8 | "dependencies": { 9 | "@accounts/rest-client": "0.33.1", 10 | "koa": "2.15.3" 11 | }, 12 | "devDependencies": { 13 | "esbuild": "^0.25.0", 14 | "esbuild-node-externals": "workspace:*" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /examples/basic/src/index.js: -------------------------------------------------------------------------------- 1 | const Koa = require('koa'); 2 | const test = require('koa/lib/context'); 3 | const restClient = require('@accounts/rest-client'); 4 | const test2 = require('./koa/koa'); 5 | 6 | console.log(test, test2, restClient); 7 | 8 | const app = new Koa(); 9 | 10 | app.use(async (ctx) => { 11 | ctx.body = 'Hello World'; 12 | }); 13 | 14 | app.listen(3000, () => { 15 | console.log('Server listening on port 3000'); 16 | }); 17 | -------------------------------------------------------------------------------- /examples/basic/src/koa/koa.js: -------------------------------------------------------------------------------- 1 | export const koa = 'koa'; 2 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "packageManager": "yarn@4.6.0", 4 | "workspaces": [ 5 | "esbuild-node-externals", 6 | "examples/*" 7 | ], 8 | "scripts": { 9 | "format": "prettier --write '**/*.{js,ts,tsx,json,md,graphql,yml}'" 10 | }, 11 | "prettier": { 12 | "singleQuote": true 13 | }, 14 | "devDependencies": { 15 | "prettier": "3.5.0" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # This file is generated by running "yarn install" inside your project. 2 | # Manual changes might be lost - proceed with caution! 3 | 4 | __metadata: 5 | version: 8 6 | cacheKey: 10 7 | 8 | "@accounts/rest-client@npm:0.33.1": 9 | version: 0.33.1 10 | resolution: "@accounts/rest-client@npm:0.33.1" 11 | dependencies: 12 | "@accounts/types": "npm:^0.33.1" 13 | tslib: "npm:2.3.0" 14 | peerDependencies: 15 | "@accounts/client": ^0.32.0 || ^0.33.0 16 | checksum: 10/92a742d3a0d0b1e89e6f0067b4cbb44404fe8d4148adddd958041a6916af16c7e7004c3053f6661884732ba5072bc35a1374047276a61bbd1d5867dd9f8dfa00 17 | languageName: node 18 | linkType: hard 19 | 20 | "@accounts/types@npm:^0.33.1": 21 | version: 0.33.2 22 | resolution: "@accounts/types@npm:0.33.2" 23 | dependencies: 24 | tslib: "npm:2.3.1" 25 | checksum: 10/e346d195a621b23113da0145a51c28b946f44b45dfbc87c885310b0b4de15920b90690f66866532d9713af0f83c93f6eb38519b7c7425010f4188b00fe50f2c8 26 | languageName: node 27 | linkType: hard 28 | 29 | "@esbuild/aix-ppc64@npm:0.25.0": 30 | version: 0.25.0 31 | resolution: "@esbuild/aix-ppc64@npm:0.25.0" 32 | conditions: os=aix & cpu=ppc64 33 | languageName: node 34 | linkType: hard 35 | 36 | "@esbuild/android-arm64@npm:0.25.0": 37 | version: 0.25.0 38 | resolution: "@esbuild/android-arm64@npm:0.25.0" 39 | conditions: os=android & cpu=arm64 40 | languageName: node 41 | linkType: hard 42 | 43 | "@esbuild/android-arm@npm:0.25.0": 44 | version: 0.25.0 45 | resolution: "@esbuild/android-arm@npm:0.25.0" 46 | conditions: os=android & cpu=arm 47 | languageName: node 48 | linkType: hard 49 | 50 | "@esbuild/android-x64@npm:0.25.0": 51 | version: 0.25.0 52 | resolution: "@esbuild/android-x64@npm:0.25.0" 53 | conditions: os=android & cpu=x64 54 | languageName: node 55 | linkType: hard 56 | 57 | "@esbuild/darwin-arm64@npm:0.25.0": 58 | version: 0.25.0 59 | resolution: "@esbuild/darwin-arm64@npm:0.25.0" 60 | conditions: os=darwin & cpu=arm64 61 | languageName: node 62 | linkType: hard 63 | 64 | "@esbuild/darwin-x64@npm:0.25.0": 65 | version: 0.25.0 66 | resolution: "@esbuild/darwin-x64@npm:0.25.0" 67 | conditions: os=darwin & cpu=x64 68 | languageName: node 69 | linkType: hard 70 | 71 | "@esbuild/freebsd-arm64@npm:0.25.0": 72 | version: 0.25.0 73 | resolution: "@esbuild/freebsd-arm64@npm:0.25.0" 74 | conditions: os=freebsd & cpu=arm64 75 | languageName: node 76 | linkType: hard 77 | 78 | "@esbuild/freebsd-x64@npm:0.25.0": 79 | version: 0.25.0 80 | resolution: "@esbuild/freebsd-x64@npm:0.25.0" 81 | conditions: os=freebsd & cpu=x64 82 | languageName: node 83 | linkType: hard 84 | 85 | "@esbuild/linux-arm64@npm:0.25.0": 86 | version: 0.25.0 87 | resolution: "@esbuild/linux-arm64@npm:0.25.0" 88 | conditions: os=linux & cpu=arm64 89 | languageName: node 90 | linkType: hard 91 | 92 | "@esbuild/linux-arm@npm:0.25.0": 93 | version: 0.25.0 94 | resolution: "@esbuild/linux-arm@npm:0.25.0" 95 | conditions: os=linux & cpu=arm 96 | languageName: node 97 | linkType: hard 98 | 99 | "@esbuild/linux-ia32@npm:0.25.0": 100 | version: 0.25.0 101 | resolution: "@esbuild/linux-ia32@npm:0.25.0" 102 | conditions: os=linux & cpu=ia32 103 | languageName: node 104 | linkType: hard 105 | 106 | "@esbuild/linux-loong64@npm:0.25.0": 107 | version: 0.25.0 108 | resolution: "@esbuild/linux-loong64@npm:0.25.0" 109 | conditions: os=linux & cpu=loong64 110 | languageName: node 111 | linkType: hard 112 | 113 | "@esbuild/linux-mips64el@npm:0.25.0": 114 | version: 0.25.0 115 | resolution: "@esbuild/linux-mips64el@npm:0.25.0" 116 | conditions: os=linux & cpu=mips64el 117 | languageName: node 118 | linkType: hard 119 | 120 | "@esbuild/linux-ppc64@npm:0.25.0": 121 | version: 0.25.0 122 | resolution: "@esbuild/linux-ppc64@npm:0.25.0" 123 | conditions: os=linux & cpu=ppc64 124 | languageName: node 125 | linkType: hard 126 | 127 | "@esbuild/linux-riscv64@npm:0.25.0": 128 | version: 0.25.0 129 | resolution: "@esbuild/linux-riscv64@npm:0.25.0" 130 | conditions: os=linux & cpu=riscv64 131 | languageName: node 132 | linkType: hard 133 | 134 | "@esbuild/linux-s390x@npm:0.25.0": 135 | version: 0.25.0 136 | resolution: "@esbuild/linux-s390x@npm:0.25.0" 137 | conditions: os=linux & cpu=s390x 138 | languageName: node 139 | linkType: hard 140 | 141 | "@esbuild/linux-x64@npm:0.25.0": 142 | version: 0.25.0 143 | resolution: "@esbuild/linux-x64@npm:0.25.0" 144 | conditions: os=linux & cpu=x64 145 | languageName: node 146 | linkType: hard 147 | 148 | "@esbuild/netbsd-arm64@npm:0.25.0": 149 | version: 0.25.0 150 | resolution: "@esbuild/netbsd-arm64@npm:0.25.0" 151 | conditions: os=netbsd & cpu=arm64 152 | languageName: node 153 | linkType: hard 154 | 155 | "@esbuild/netbsd-x64@npm:0.25.0": 156 | version: 0.25.0 157 | resolution: "@esbuild/netbsd-x64@npm:0.25.0" 158 | conditions: os=netbsd & cpu=x64 159 | languageName: node 160 | linkType: hard 161 | 162 | "@esbuild/openbsd-arm64@npm:0.25.0": 163 | version: 0.25.0 164 | resolution: "@esbuild/openbsd-arm64@npm:0.25.0" 165 | conditions: os=openbsd & cpu=arm64 166 | languageName: node 167 | linkType: hard 168 | 169 | "@esbuild/openbsd-x64@npm:0.25.0": 170 | version: 0.25.0 171 | resolution: "@esbuild/openbsd-x64@npm:0.25.0" 172 | conditions: os=openbsd & cpu=x64 173 | languageName: node 174 | linkType: hard 175 | 176 | "@esbuild/sunos-x64@npm:0.25.0": 177 | version: 0.25.0 178 | resolution: "@esbuild/sunos-x64@npm:0.25.0" 179 | conditions: os=sunos & cpu=x64 180 | languageName: node 181 | linkType: hard 182 | 183 | "@esbuild/win32-arm64@npm:0.25.0": 184 | version: 0.25.0 185 | resolution: "@esbuild/win32-arm64@npm:0.25.0" 186 | conditions: os=win32 & cpu=arm64 187 | languageName: node 188 | linkType: hard 189 | 190 | "@esbuild/win32-ia32@npm:0.25.0": 191 | version: 0.25.0 192 | resolution: "@esbuild/win32-ia32@npm:0.25.0" 193 | conditions: os=win32 & cpu=ia32 194 | languageName: node 195 | linkType: hard 196 | 197 | "@esbuild/win32-x64@npm:0.25.0": 198 | version: 0.25.0 199 | resolution: "@esbuild/win32-x64@npm:0.25.0" 200 | conditions: os=win32 & cpu=x64 201 | languageName: node 202 | linkType: hard 203 | 204 | "@types/node@npm:^22.13.1": 205 | version: 22.13.1 206 | resolution: "@types/node@npm:22.13.1" 207 | dependencies: 208 | undici-types: "npm:~6.20.0" 209 | checksum: 10/d8ba7068b0445643c0fa6e4917cdb7a90e8756a9daff8c8a332689cd5b2eaa01e4cd07de42e3cd7e6a6f465eeda803d5a1363d00b5ab3f6cea7950350a159497 210 | languageName: node 211 | linkType: hard 212 | 213 | "accepts@npm:^1.3.5": 214 | version: 1.3.8 215 | resolution: "accepts@npm:1.3.8" 216 | dependencies: 217 | mime-types: "npm:~2.1.34" 218 | negotiator: "npm:0.6.3" 219 | checksum: 10/67eaaa90e2917c58418e7a9b89392002d2b1ccd69bcca4799135d0c632f3b082f23f4ae4ddeedbced5aa59bcc7bdf4699c69ebed4593696c922462b7bc5744d6 220 | languageName: node 221 | linkType: hard 222 | 223 | "balanced-match@npm:^1.0.0": 224 | version: 1.0.2 225 | resolution: "balanced-match@npm:1.0.2" 226 | checksum: 10/9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 227 | languageName: node 228 | linkType: hard 229 | 230 | "brace-expansion@npm:^2.0.1": 231 | version: 2.0.1 232 | resolution: "brace-expansion@npm:2.0.1" 233 | dependencies: 234 | balanced-match: "npm:^1.0.0" 235 | checksum: 10/a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 236 | languageName: node 237 | linkType: hard 238 | 239 | "cache-content-type@npm:^1.0.0": 240 | version: 1.0.1 241 | resolution: "cache-content-type@npm:1.0.1" 242 | dependencies: 243 | mime-types: "npm:^2.1.18" 244 | ylru: "npm:^1.2.0" 245 | checksum: 10/18db4d59452669ccbfd7146a1510a37eb28e9eccf18ca7a4eb603dff2edc5cccdca7498fc3042a2978f76f11151fba486eb9eb69d9afa3fb124957870aef4fd3 246 | languageName: node 247 | linkType: hard 248 | 249 | "co@npm:^4.6.0": 250 | version: 4.6.0 251 | resolution: "co@npm:4.6.0" 252 | checksum: 10/a5d9f37091c70398a269e625cedff5622f200ed0aa0cff22ee7b55ed74a123834b58711776eb0f1dc58eb6ebbc1185aa7567b57bd5979a948c6e4f85073e2c05 253 | languageName: node 254 | linkType: hard 255 | 256 | "content-disposition@npm:~0.5.2": 257 | version: 0.5.4 258 | resolution: "content-disposition@npm:0.5.4" 259 | dependencies: 260 | safe-buffer: "npm:5.2.1" 261 | checksum: 10/b7f4ce176e324f19324be69b05bf6f6e411160ac94bc523b782248129eb1ef3be006f6cff431aaea5e337fe5d176ce8830b8c2a1b721626ead8933f0cbe78720 262 | languageName: node 263 | linkType: hard 264 | 265 | "content-type@npm:^1.0.4": 266 | version: 1.0.5 267 | resolution: "content-type@npm:1.0.5" 268 | checksum: 10/585847d98dc7fb8035c02ae2cb76c7a9bd7b25f84c447e5ed55c45c2175e83617c8813871b4ee22f368126af6b2b167df655829007b21aa10302873ea9c62662 269 | languageName: node 270 | linkType: hard 271 | 272 | "cookies@npm:~0.9.0": 273 | version: 0.9.1 274 | resolution: "cookies@npm:0.9.1" 275 | dependencies: 276 | depd: "npm:~2.0.0" 277 | keygrip: "npm:~1.1.0" 278 | checksum: 10/4816461a38d907b20f3fb7a2bc4741fe580e7a195f3e248ef7025cb3be56a07638a0f4e72553a5f535554ca30172c8a3245c63ac72c9737cec034e9a47773392 279 | languageName: node 280 | linkType: hard 281 | 282 | "debug@npm:^4.3.2": 283 | version: 4.3.4 284 | resolution: "debug@npm:4.3.4" 285 | dependencies: 286 | ms: "npm:2.1.2" 287 | peerDependenciesMeta: 288 | supports-color: 289 | optional: true 290 | checksum: 10/0073c3bcbd9cb7d71dd5f6b55be8701af42df3e56e911186dfa46fac3a5b9eb7ce7f377dd1d3be6db8977221f8eb333d945216f645cf56f6b688cd484837d255 291 | languageName: node 292 | linkType: hard 293 | 294 | "deep-equal@npm:~1.0.1": 295 | version: 1.0.1 296 | resolution: "deep-equal@npm:1.0.1" 297 | checksum: 10/cbecc071afb2891334ced9e9de5834889b9a9992ae8d8369b7eb74c513529eb6d1f6c04d4e2b5f34d8386f7816cd7a6cda45edff847695faea45e43c23973f45 298 | languageName: node 299 | linkType: hard 300 | 301 | "delegates@npm:^1.0.0": 302 | version: 1.0.0 303 | resolution: "delegates@npm:1.0.0" 304 | checksum: 10/a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd 305 | languageName: node 306 | linkType: hard 307 | 308 | "depd@npm:^2.0.0, depd@npm:~2.0.0": 309 | version: 2.0.0 310 | resolution: "depd@npm:2.0.0" 311 | checksum: 10/c0c8ff36079ce5ada64f46cc9d6fd47ebcf38241105b6e0c98f412e8ad91f084bcf906ff644cc3a4bd876ca27a62accb8b0fff72ea6ed1a414b89d8506f4a5ca 312 | languageName: node 313 | linkType: hard 314 | 315 | "depd@npm:~1.1.2": 316 | version: 1.1.2 317 | resolution: "depd@npm:1.1.2" 318 | checksum: 10/2ed6966fc14463a9e85451db330ab8ba041efed0b9a1a472dbfc6fbf2f82bab66491915f996b25d8517dddc36c8c74e24c30879b34877f3c4410733444a51d1d 319 | languageName: node 320 | linkType: hard 321 | 322 | "destroy@npm:^1.0.4": 323 | version: 1.2.0 324 | resolution: "destroy@npm:1.2.0" 325 | checksum: 10/0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 326 | languageName: node 327 | linkType: hard 328 | 329 | "ee-first@npm:1.1.1": 330 | version: 1.1.1 331 | resolution: "ee-first@npm:1.1.1" 332 | checksum: 10/1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f 333 | languageName: node 334 | linkType: hard 335 | 336 | "encodeurl@npm:^1.0.2": 337 | version: 1.0.2 338 | resolution: "encodeurl@npm:1.0.2" 339 | checksum: 10/e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c 340 | languageName: node 341 | linkType: hard 342 | 343 | "esbuild-node-externals@workspace:*, esbuild-node-externals@workspace:esbuild-node-externals": 344 | version: 0.0.0-use.local 345 | resolution: "esbuild-node-externals@workspace:esbuild-node-externals" 346 | dependencies: 347 | "@types/node": "npm:^22.13.1" 348 | esbuild: "npm:^0.25.0" 349 | find-up: "npm:^5.0.0" 350 | rimraf: "npm:^4.4.1" 351 | tslib: "npm:^2.8.1" 352 | typescript: "npm:^5.7.3" 353 | peerDependencies: 354 | esbuild: 0.12 - 0.25 355 | languageName: unknown 356 | linkType: soft 357 | 358 | "esbuild@npm:^0.25.0": 359 | version: 0.25.0 360 | resolution: "esbuild@npm:0.25.0" 361 | dependencies: 362 | "@esbuild/aix-ppc64": "npm:0.25.0" 363 | "@esbuild/android-arm": "npm:0.25.0" 364 | "@esbuild/android-arm64": "npm:0.25.0" 365 | "@esbuild/android-x64": "npm:0.25.0" 366 | "@esbuild/darwin-arm64": "npm:0.25.0" 367 | "@esbuild/darwin-x64": "npm:0.25.0" 368 | "@esbuild/freebsd-arm64": "npm:0.25.0" 369 | "@esbuild/freebsd-x64": "npm:0.25.0" 370 | "@esbuild/linux-arm": "npm:0.25.0" 371 | "@esbuild/linux-arm64": "npm:0.25.0" 372 | "@esbuild/linux-ia32": "npm:0.25.0" 373 | "@esbuild/linux-loong64": "npm:0.25.0" 374 | "@esbuild/linux-mips64el": "npm:0.25.0" 375 | "@esbuild/linux-ppc64": "npm:0.25.0" 376 | "@esbuild/linux-riscv64": "npm:0.25.0" 377 | "@esbuild/linux-s390x": "npm:0.25.0" 378 | "@esbuild/linux-x64": "npm:0.25.0" 379 | "@esbuild/netbsd-arm64": "npm:0.25.0" 380 | "@esbuild/netbsd-x64": "npm:0.25.0" 381 | "@esbuild/openbsd-arm64": "npm:0.25.0" 382 | "@esbuild/openbsd-x64": "npm:0.25.0" 383 | "@esbuild/sunos-x64": "npm:0.25.0" 384 | "@esbuild/win32-arm64": "npm:0.25.0" 385 | "@esbuild/win32-ia32": "npm:0.25.0" 386 | "@esbuild/win32-x64": "npm:0.25.0" 387 | dependenciesMeta: 388 | "@esbuild/aix-ppc64": 389 | optional: true 390 | "@esbuild/android-arm": 391 | optional: true 392 | "@esbuild/android-arm64": 393 | optional: true 394 | "@esbuild/android-x64": 395 | optional: true 396 | "@esbuild/darwin-arm64": 397 | optional: true 398 | "@esbuild/darwin-x64": 399 | optional: true 400 | "@esbuild/freebsd-arm64": 401 | optional: true 402 | "@esbuild/freebsd-x64": 403 | optional: true 404 | "@esbuild/linux-arm": 405 | optional: true 406 | "@esbuild/linux-arm64": 407 | optional: true 408 | "@esbuild/linux-ia32": 409 | optional: true 410 | "@esbuild/linux-loong64": 411 | optional: true 412 | "@esbuild/linux-mips64el": 413 | optional: true 414 | "@esbuild/linux-ppc64": 415 | optional: true 416 | "@esbuild/linux-riscv64": 417 | optional: true 418 | "@esbuild/linux-s390x": 419 | optional: true 420 | "@esbuild/linux-x64": 421 | optional: true 422 | "@esbuild/netbsd-arm64": 423 | optional: true 424 | "@esbuild/netbsd-x64": 425 | optional: true 426 | "@esbuild/openbsd-arm64": 427 | optional: true 428 | "@esbuild/openbsd-x64": 429 | optional: true 430 | "@esbuild/sunos-x64": 431 | optional: true 432 | "@esbuild/win32-arm64": 433 | optional: true 434 | "@esbuild/win32-ia32": 435 | optional: true 436 | "@esbuild/win32-x64": 437 | optional: true 438 | bin: 439 | esbuild: bin/esbuild 440 | checksum: 10/451daf6a442df29ec5d528587caa4ce783d41ff4acb93252da5a852b8d36c22e9f84d17f6721d4fbef9a1ba9855bc9fe1f167dd732c11665fe53032f2b89f114 441 | languageName: node 442 | linkType: hard 443 | 444 | "escape-html@npm:^1.0.3": 445 | version: 1.0.3 446 | resolution: "escape-html@npm:1.0.3" 447 | checksum: 10/6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 448 | languageName: node 449 | linkType: hard 450 | 451 | "example-basic@workspace:examples/basic": 452 | version: 0.0.0-use.local 453 | resolution: "example-basic@workspace:examples/basic" 454 | dependencies: 455 | "@accounts/rest-client": "npm:0.33.1" 456 | esbuild: "npm:^0.25.0" 457 | esbuild-node-externals: "workspace:*" 458 | koa: "npm:2.15.3" 459 | languageName: unknown 460 | linkType: soft 461 | 462 | "find-up@npm:^5.0.0": 463 | version: 5.0.0 464 | resolution: "find-up@npm:5.0.0" 465 | dependencies: 466 | locate-path: "npm:^6.0.0" 467 | path-exists: "npm:^4.0.0" 468 | checksum: 10/07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 469 | languageName: node 470 | linkType: hard 471 | 472 | "fresh@npm:~0.5.2": 473 | version: 0.5.2 474 | resolution: "fresh@npm:0.5.2" 475 | checksum: 10/64c88e489b5d08e2f29664eb3c79c705ff9a8eb15d3e597198ef76546d4ade295897a44abb0abd2700e7ef784b2e3cbf1161e4fbf16f59129193fd1030d16da1 476 | languageName: node 477 | linkType: hard 478 | 479 | "fs.realpath@npm:^1.0.0": 480 | version: 1.0.0 481 | resolution: "fs.realpath@npm:1.0.0" 482 | checksum: 10/e703107c28e362d8d7b910bbcbfd371e640a3bb45ae157a362b5952c0030c0b6d4981140ec319b347bce7adc025dd7813da1ff908a945ac214d64f5402a51b96 483 | languageName: node 484 | linkType: hard 485 | 486 | "glob@npm:^9.2.0": 487 | version: 9.3.5 488 | resolution: "glob@npm:9.3.5" 489 | dependencies: 490 | fs.realpath: "npm:^1.0.0" 491 | minimatch: "npm:^8.0.2" 492 | minipass: "npm:^4.2.4" 493 | path-scurry: "npm:^1.6.1" 494 | checksum: 10/e5fa8a58adf53525bca42d82a1fad9e6800032b7e4d372209b80cfdca524dd9a7dbe7d01a92d7ed20d89c572457f12c250092bc8817cb4f1c63efefdf9b658c0 495 | languageName: node 496 | linkType: hard 497 | 498 | "has-symbols@npm:^1.0.3": 499 | version: 1.0.3 500 | resolution: "has-symbols@npm:1.0.3" 501 | checksum: 10/464f97a8202a7690dadd026e6d73b1ceeddd60fe6acfd06151106f050303eaa75855aaa94969df8015c11ff7c505f196114d22f7386b4a471038da5874cf5e9b 502 | languageName: node 503 | linkType: hard 504 | 505 | "has-tostringtag@npm:^1.0.0": 506 | version: 1.0.2 507 | resolution: "has-tostringtag@npm:1.0.2" 508 | dependencies: 509 | has-symbols: "npm:^1.0.3" 510 | checksum: 10/c74c5f5ceee3c8a5b8bc37719840dc3749f5b0306d818974141dda2471a1a2ca6c8e46b9d6ac222c5345df7a901c9b6f350b1e6d62763fec877e26609a401bfe 511 | languageName: node 512 | linkType: hard 513 | 514 | "http-assert@npm:^1.3.0": 515 | version: 1.5.0 516 | resolution: "http-assert@npm:1.5.0" 517 | dependencies: 518 | deep-equal: "npm:~1.0.1" 519 | http-errors: "npm:~1.8.0" 520 | checksum: 10/69c9b3c14cf8b2822916360a365089ce936c883c49068f91c365eccba5c141a9964d19fdda589150a480013bf503bf37d8936c732e9635819339e730ab0e7527 521 | languageName: node 522 | linkType: hard 523 | 524 | "http-errors@npm:^1.6.3, http-errors@npm:~1.8.0": 525 | version: 1.8.1 526 | resolution: "http-errors@npm:1.8.1" 527 | dependencies: 528 | depd: "npm:~1.1.2" 529 | inherits: "npm:2.0.4" 530 | setprototypeof: "npm:1.2.0" 531 | statuses: "npm:>= 1.5.0 < 2" 532 | toidentifier: "npm:1.0.1" 533 | checksum: 10/76fc491bd8df2251e21978e080d5dae20d9736cfb29bb72b5b76ec1bcebb1c14f0f58a3a128dd89288934379d2173cfb0421c571d54103e93dd65ef6243d64d8 534 | languageName: node 535 | linkType: hard 536 | 537 | "inherits@npm:2.0.4": 538 | version: 2.0.4 539 | resolution: "inherits@npm:2.0.4" 540 | checksum: 10/cd45e923bee15186c07fa4c89db0aace24824c482fb887b528304694b2aa6ff8a898da8657046a5dcf3e46cd6db6c61629551f9215f208d7c3f157cf9b290521 541 | languageName: node 542 | linkType: hard 543 | 544 | "is-generator-function@npm:^1.0.7": 545 | version: 1.0.10 546 | resolution: "is-generator-function@npm:1.0.10" 547 | dependencies: 548 | has-tostringtag: "npm:^1.0.0" 549 | checksum: 10/499a3ce6361064c3bd27fbff5c8000212d48506ebe1977842bbd7b3e708832d0deb1f4cc69186ece3640770e8c4f1287b24d99588a0b8058b2dbdd344bc1f47f 550 | languageName: node 551 | linkType: hard 552 | 553 | "keygrip@npm:~1.1.0": 554 | version: 1.1.0 555 | resolution: "keygrip@npm:1.1.0" 556 | dependencies: 557 | tsscmp: "npm:1.0.6" 558 | checksum: 10/078cd16a463d187121f0a27c1c9c95c52ad392b620f823431689f345a0501132cee60f6e96914b07d570105af470b96960402accd6c48a0b1f3cd8fac4fa2cae 559 | languageName: node 560 | linkType: hard 561 | 562 | "koa-compose@npm:^4.1.0": 563 | version: 4.1.0 564 | resolution: "koa-compose@npm:4.1.0" 565 | checksum: 10/46cb16792d96425e977c2ae4e5cb04930280740e907242ec9c25e3fb8b4a1d7b54451d7432bc24f40ec62255edea71894d2ceeb8238501842b4e48014f2e83db 566 | languageName: node 567 | linkType: hard 568 | 569 | "koa-convert@npm:^2.0.0": 570 | version: 2.0.0 571 | resolution: "koa-convert@npm:2.0.0" 572 | dependencies: 573 | co: "npm:^4.6.0" 574 | koa-compose: "npm:^4.1.0" 575 | checksum: 10/7385b3391995f59c1312142e110d5dff677f9850dbfbcf387cd36a7b0af03b5d26e82b811eb9bb008b4f3e661cdab1f8817596e46b1929da2cf6e97a2f7456ed 576 | languageName: node 577 | linkType: hard 578 | 579 | "koa@npm:2.15.3": 580 | version: 2.15.3 581 | resolution: "koa@npm:2.15.3" 582 | dependencies: 583 | accepts: "npm:^1.3.5" 584 | cache-content-type: "npm:^1.0.0" 585 | content-disposition: "npm:~0.5.2" 586 | content-type: "npm:^1.0.4" 587 | cookies: "npm:~0.9.0" 588 | debug: "npm:^4.3.2" 589 | delegates: "npm:^1.0.0" 590 | depd: "npm:^2.0.0" 591 | destroy: "npm:^1.0.4" 592 | encodeurl: "npm:^1.0.2" 593 | escape-html: "npm:^1.0.3" 594 | fresh: "npm:~0.5.2" 595 | http-assert: "npm:^1.3.0" 596 | http-errors: "npm:^1.6.3" 597 | is-generator-function: "npm:^1.0.7" 598 | koa-compose: "npm:^4.1.0" 599 | koa-convert: "npm:^2.0.0" 600 | on-finished: "npm:^2.3.0" 601 | only: "npm:~0.0.2" 602 | parseurl: "npm:^1.3.2" 603 | statuses: "npm:^1.5.0" 604 | type-is: "npm:^1.6.16" 605 | vary: "npm:^1.1.2" 606 | checksum: 10/b2c2771a4ee5268f9d039ce025b9c3798a0baba8c3cf3895a6fc2d286363e0cd2c98c02a5b87f14100baa2bc17d854eed6ed80f9bd41afda1d056f803b206514 607 | languageName: node 608 | linkType: hard 609 | 610 | "locate-path@npm:^6.0.0": 611 | version: 6.0.0 612 | resolution: "locate-path@npm:6.0.0" 613 | dependencies: 614 | p-locate: "npm:^5.0.0" 615 | checksum: 10/72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a 616 | languageName: node 617 | linkType: hard 618 | 619 | "lru-cache@npm:^10.2.0": 620 | version: 10.2.2 621 | resolution: "lru-cache@npm:10.2.2" 622 | checksum: 10/ff1a496d30b5eaec2c9079080965bb0cede203cf878371f7033a007f1e54cd4aa13cc8abf7ccec4c994a83a22ed5476e83a55bb57cc07e6c1547a42937e42c37 623 | languageName: node 624 | linkType: hard 625 | 626 | "media-typer@npm:0.3.0": 627 | version: 0.3.0 628 | resolution: "media-typer@npm:0.3.0" 629 | checksum: 10/38e0984db39139604756903a01397e29e17dcb04207bb3e081412ce725ab17338ecc47220c1b186b6bbe79a658aad1b0d41142884f5a481f36290cdefbe6aa46 630 | languageName: node 631 | linkType: hard 632 | 633 | "mime-db@npm:1.52.0": 634 | version: 1.52.0 635 | resolution: "mime-db@npm:1.52.0" 636 | checksum: 10/54bb60bf39e6f8689f6622784e668a3d7f8bed6b0d886f5c3c446cb3284be28b30bf707ed05d0fe44a036f8469976b2629bbea182684977b084de9da274694d7 637 | languageName: node 638 | linkType: hard 639 | 640 | "mime-types@npm:^2.1.18, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": 641 | version: 2.1.35 642 | resolution: "mime-types@npm:2.1.35" 643 | dependencies: 644 | mime-db: "npm:1.52.0" 645 | checksum: 10/89aa9651b67644035de2784a6e665fc685d79aba61857e02b9c8758da874a754aed4a9aced9265f5ed1171fd934331e5516b84a7f0218031b6fa0270eca1e51a 646 | languageName: node 647 | linkType: hard 648 | 649 | "minimatch@npm:^8.0.2": 650 | version: 8.0.4 651 | resolution: "minimatch@npm:8.0.4" 652 | dependencies: 653 | brace-expansion: "npm:^2.0.1" 654 | checksum: 10/aef05598ee565e1013bc8a10f53410ac681561f901c1a084b8ecfd016c9ed919f58f4bbd5b63e05643189dfb26e8106a84f0e1ff12e4a263aa37e1cae7ce9828 655 | languageName: node 656 | linkType: hard 657 | 658 | "minipass@npm:^4.2.4": 659 | version: 4.2.8 660 | resolution: "minipass@npm:4.2.8" 661 | checksum: 10/e148eb6dcb85c980234cad889139ef8ddf9d5bdac534f4f0268446c8792dd4c74f4502479be48de3c1cce2f6450f6da4d0d4a86405a8a12be04c1c36b339569a 662 | languageName: node 663 | linkType: hard 664 | 665 | "minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0": 666 | version: 7.1.0 667 | resolution: "minipass@npm:7.1.0" 668 | checksum: 10/0cfc1bc95bfce2a0cf69fcb5e7b92f62ee7159f2787356e66b5804dba73546e1653bbc70bf9bb32acb031e6d0d4b6249628a014644a597a7e4a14b441a510ba5 669 | languageName: node 670 | linkType: hard 671 | 672 | "ms@npm:2.1.2": 673 | version: 2.1.2 674 | resolution: "ms@npm:2.1.2" 675 | checksum: 10/673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f 676 | languageName: node 677 | linkType: hard 678 | 679 | "negotiator@npm:0.6.3": 680 | version: 0.6.3 681 | resolution: "negotiator@npm:0.6.3" 682 | checksum: 10/2723fb822a17ad55c93a588a4bc44d53b22855bf4be5499916ca0cab1e7165409d0b288ba2577d7b029f10ce18cf2ed8e703e5af31c984e1e2304277ef979837 683 | languageName: node 684 | linkType: hard 685 | 686 | "on-finished@npm:^2.3.0": 687 | version: 2.4.1 688 | resolution: "on-finished@npm:2.4.1" 689 | dependencies: 690 | ee-first: "npm:1.1.1" 691 | checksum: 10/8e81472c5028125c8c39044ac4ab8ba51a7cdc19a9fbd4710f5d524a74c6d8c9ded4dd0eed83f28d3d33ac1d7a6a439ba948ccb765ac6ce87f30450a26bfe2ea 692 | languageName: node 693 | linkType: hard 694 | 695 | "only@npm:~0.0.2": 696 | version: 0.0.2 697 | resolution: "only@npm:0.0.2" 698 | checksum: 10/e2ad03e486534dc6bfb983393be83125a4669052b4a19a353eb00475b46971fb238a18223f2b609fe0d1bcb61ff8373964ccac64d05cbf970865299f655ed0ba 699 | languageName: node 700 | linkType: hard 701 | 702 | "p-limit@npm:^3.0.2": 703 | version: 3.1.0 704 | resolution: "p-limit@npm:3.1.0" 705 | dependencies: 706 | yocto-queue: "npm:^0.1.0" 707 | checksum: 10/7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 708 | languageName: node 709 | linkType: hard 710 | 711 | "p-locate@npm:^5.0.0": 712 | version: 5.0.0 713 | resolution: "p-locate@npm:5.0.0" 714 | dependencies: 715 | p-limit: "npm:^3.0.2" 716 | checksum: 10/1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 717 | languageName: node 718 | linkType: hard 719 | 720 | "parseurl@npm:^1.3.2": 721 | version: 1.3.3 722 | resolution: "parseurl@npm:1.3.3" 723 | checksum: 10/407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 724 | languageName: node 725 | linkType: hard 726 | 727 | "path-exists@npm:^4.0.0": 728 | version: 4.0.0 729 | resolution: "path-exists@npm:4.0.0" 730 | checksum: 10/505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 731 | languageName: node 732 | linkType: hard 733 | 734 | "path-scurry@npm:^1.6.1": 735 | version: 1.10.2 736 | resolution: "path-scurry@npm:1.10.2" 737 | dependencies: 738 | lru-cache: "npm:^10.2.0" 739 | minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" 740 | checksum: 10/a2bbbe8dc284c49dd9be78ca25f3a8b89300e0acc24a77e6c74824d353ef50efbf163e64a69f4330b301afca42d0e2229be0560d6d616ac4e99d48b4062016b1 741 | languageName: node 742 | linkType: hard 743 | 744 | "prettier@npm:3.5.0": 745 | version: 3.5.0 746 | resolution: "prettier@npm:3.5.0" 747 | bin: 748 | prettier: bin/prettier.cjs 749 | checksum: 10/fc26c74bd317282f2a49ffe3ac0ffa79adbe6b2d7a1cdcadd96acf7fec77d3fa45b15f3728c1a2f281f4beccb35d97207187452a581d4919d18b460d0c37e480 750 | languageName: node 751 | linkType: hard 752 | 753 | "rimraf@npm:^4.4.1": 754 | version: 4.4.1 755 | resolution: "rimraf@npm:4.4.1" 756 | dependencies: 757 | glob: "npm:^9.2.0" 758 | bin: 759 | rimraf: dist/cjs/src/bin.js 760 | checksum: 10/218ef9122145ccce9d0a71124d36a3894537de46600b37fae7dba26ccff973251eaa98aa63c2c5855a05fa04bca7cbbd7a92d4b29f2875d2203e72530ecf6ede 761 | languageName: node 762 | linkType: hard 763 | 764 | "root-workspace-0b6124@workspace:.": 765 | version: 0.0.0-use.local 766 | resolution: "root-workspace-0b6124@workspace:." 767 | dependencies: 768 | prettier: "npm:3.5.0" 769 | languageName: unknown 770 | linkType: soft 771 | 772 | "safe-buffer@npm:5.2.1": 773 | version: 5.2.1 774 | resolution: "safe-buffer@npm:5.2.1" 775 | checksum: 10/32872cd0ff68a3ddade7a7617b8f4c2ae8764d8b7d884c651b74457967a9e0e886267d3ecc781220629c44a865167b61c375d2da6c720c840ecd73f45d5d9451 776 | languageName: node 777 | linkType: hard 778 | 779 | "setprototypeof@npm:1.2.0": 780 | version: 1.2.0 781 | resolution: "setprototypeof@npm:1.2.0" 782 | checksum: 10/fde1630422502fbbc19e6844346778f99d449986b2f9cdcceb8326730d2f3d9964dbcb03c02aaadaefffecd0f2c063315ebea8b3ad895914bf1afc1747fc172e 783 | languageName: node 784 | linkType: hard 785 | 786 | "statuses@npm:>= 1.5.0 < 2, statuses@npm:^1.5.0": 787 | version: 1.5.0 788 | resolution: "statuses@npm:1.5.0" 789 | checksum: 10/c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c 790 | languageName: node 791 | linkType: hard 792 | 793 | "toidentifier@npm:1.0.1": 794 | version: 1.0.1 795 | resolution: "toidentifier@npm:1.0.1" 796 | checksum: 10/952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 797 | languageName: node 798 | linkType: hard 799 | 800 | "tslib@npm:2.3.0": 801 | version: 2.3.0 802 | resolution: "tslib@npm:2.3.0" 803 | checksum: 10/9c55c9abd5ecd94e5fd37573db27e26933fb6c33506431403fb4627dcb8aa9a45b772afa6d05dd2c25dc1de22a213193251e6303742f3bcdc179e523a9295bfd 804 | languageName: node 805 | linkType: hard 806 | 807 | "tslib@npm:2.3.1": 808 | version: 2.3.1 809 | resolution: "tslib@npm:2.3.1" 810 | checksum: 10/5e7de59ed9f2b705b399bda28326b7c3e7526deb48bbe1716e2e17fbd4cecbb610253d09c7b8fd0a6e76cfed9304e2e608cdb81bb1ee812d69e5089d1a94c71a 811 | languageName: node 812 | linkType: hard 813 | 814 | "tslib@npm:^2.8.1": 815 | version: 2.8.1 816 | resolution: "tslib@npm:2.8.1" 817 | checksum: 10/3e2e043d5c2316461cb54e5c7fe02c30ef6dccb3384717ca22ae5c6b5bc95232a6241df19c622d9c73b809bea33b187f6dbc73030963e29950c2141bc32a79f7 818 | languageName: node 819 | linkType: hard 820 | 821 | "tsscmp@npm:1.0.6": 822 | version: 1.0.6 823 | resolution: "tsscmp@npm:1.0.6" 824 | checksum: 10/850405080ea3ecb158e9e01bc4e87c9edb94a829d8ad8747f30ba103fcc41a287d7949ab84d7b27c36294036a2c9878f050db15b73a1a1961abfb7688b82ac53 825 | languageName: node 826 | linkType: hard 827 | 828 | "type-is@npm:^1.6.16": 829 | version: 1.6.18 830 | resolution: "type-is@npm:1.6.18" 831 | dependencies: 832 | media-typer: "npm:0.3.0" 833 | mime-types: "npm:~2.1.24" 834 | checksum: 10/0bd9eeae5efd27d98fd63519f999908c009e148039d8e7179a074f105362d4fcc214c38b24f6cda79c87e563cbd12083a4691381ed28559220d4a10c2047bed4 835 | languageName: node 836 | linkType: hard 837 | 838 | "typescript@npm:^5.7.3": 839 | version: 5.7.3 840 | resolution: "typescript@npm:5.7.3" 841 | bin: 842 | tsc: bin/tsc 843 | tsserver: bin/tsserver 844 | checksum: 10/6a7e556de91db3d34dc51cd2600e8e91f4c312acd8e52792f243c7818dfadb27bae677175fad6947f9c81efb6c57eb6b2d0c736f196a6ee2f1f7d57b74fc92fa 845 | languageName: node 846 | linkType: hard 847 | 848 | "typescript@patch:typescript@npm%3A^5.7.3#optional!builtin": 849 | version: 5.7.3 850 | resolution: "typescript@patch:typescript@npm%3A5.7.3#optional!builtin::version=5.7.3&hash=5786d5" 851 | bin: 852 | tsc: bin/tsc 853 | tsserver: bin/tsserver 854 | checksum: 10/dc58d777eb4c01973f7fbf1fd808aad49a0efdf545528dab9b07d94fdcb65b8751742804c3057e9619a4627f2d9cc85547fdd49d9f4326992ad0181b49e61d81 855 | languageName: node 856 | linkType: hard 857 | 858 | "undici-types@npm:~6.20.0": 859 | version: 6.20.0 860 | resolution: "undici-types@npm:6.20.0" 861 | checksum: 10/583ac7bbf4ff69931d3985f4762cde2690bb607844c16a5e2fbb92ed312fe4fa1b365e953032d469fa28ba8b224e88a595f0b10a449332f83fa77c695e567dbe 862 | languageName: node 863 | linkType: hard 864 | 865 | "vary@npm:^1.1.2": 866 | version: 1.1.2 867 | resolution: "vary@npm:1.1.2" 868 | checksum: 10/31389debef15a480849b8331b220782230b9815a8e0dbb7b9a8369559aed2e9a7800cd904d4371ea74f4c3527db456dc8e7ac5befce5f0d289014dbdf47b2242 869 | languageName: node 870 | linkType: hard 871 | 872 | "ylru@npm:^1.2.0": 873 | version: 1.4.0 874 | resolution: "ylru@npm:1.4.0" 875 | checksum: 10/5437f8eb2fb5dd515845c657dde3cecaa9f6bd4c6386d2a5212d3fafe02189c7d8ebfdfc84940a7811607cb3524eb362ce95d3180d355cd5deb610aa8c82c9bc 876 | languageName: node 877 | linkType: hard 878 | 879 | "yocto-queue@npm:^0.1.0": 880 | version: 0.1.0 881 | resolution: "yocto-queue@npm:0.1.0" 882 | checksum: 10/f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 883 | languageName: node 884 | linkType: hard 885 | --------------------------------------------------------------------------------