├── .editorconfig
├── .gitattributes
├── .github
└── workflows
│ └── release.yml
├── .gitignore
├── CHANGELOG.md
├── LICENSE
├── README.md
├── package.json
├── pnpm-lock.yaml
├── renovate.json
├── src
└── index.ts
├── test
├── __snapshots__
│ └── index.test.ts.snap
├── fixture
│ ├── chunks
│ │ ├── bar.js
│ │ └── foo.js
│ ├── hashbang.js
│ └── no-hashbang.js
└── index.test.ts
├── tsconfig.json
└── types.d.ts
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | indent_style = space
5 | indent_size = 2
6 | end_of_line = lf
7 | charset = utf-8
8 | trim_trailing_whitespace = true
9 | insert_final_newline = true
10 |
11 | [*.md]
12 | trim_trailing_whitespace = false
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 |
--------------------------------------------------------------------------------
/.github/workflows/release.yml:
--------------------------------------------------------------------------------
1 | name: Release
2 |
3 | on:
4 | push:
5 | tags:
6 | - "v*"
7 |
8 | jobs:
9 | release:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - uses: actions/checkout@v2
13 | - uses: actions/setup-node@v2
14 | with:
15 | node-version: 16
16 | registry-url: https://registry.npmjs.org/
17 | - name: Cache pnpm modules
18 | uses: actions/cache@v2
19 | with:
20 | path: ~/.pnpm-store
21 | key: ${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}
22 | restore-keys: |
23 | ${{ runner.os }}-
24 | - uses: pnpm/action-setup@v2.1.0
25 | with:
26 | version: 6.24.0
27 | run_install: true
28 | - run: |
29 | pnpm run build
30 | pnpx kanpai release
31 | env:
32 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
33 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
34 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | output
3 | dist
4 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | ## Unreleased
4 |
5 | No unreleased changes.
6 |
7 | ## 3.0.0
8 |
9 | - Migrated to TypeScript
10 | - Require node 14 or above
11 | - Require rollup 2 or above
12 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) EGOIST <0x142857@gmail.com> (https://egoist.moe)
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
13 | all 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
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # rollup-plugin-hashbang
2 |
3 | [](https://npmjs.com/package/rollup-plugin-hashbang) [](https://npmjs.com/package/rollup-plugin-hashbang)
4 |
5 | ## Install
6 |
7 | ```bash
8 | npm i rollup-plugin-hashbang -D
9 | ```
10 |
11 | ## Usage
12 |
13 | With `rollup.config.js`:
14 |
15 | ```js
16 | import hashbang from "rollup-plugin-hashbang";
17 |
18 | export default {
19 | plugins: [hashbang()],
20 | };
21 | ```
22 |
23 | In:
24 |
25 | ```js
26 | #!/usr/bin/env node
27 |
28 | console.log("hi");
29 | ```
30 |
31 | Output:
32 |
33 | ```js
34 | #!/usr/bin/env node
35 | "use strict";
36 |
37 | console.log("hi");
38 | ```
39 |
40 | Hashbang is preserved and the output file will be executable you don't need to `chmod +x FILE` to run it.
41 |
42 | ## Contributing
43 |
44 | 1. Fork it!
45 | 2. Create your feature branch: `git checkout -b my-new-feature`
46 | 3. Commit your changes: `git commit -am 'Add some feature'`
47 | 4. Push to the branch: `git push origin my-new-feature`
48 | 5. Submit a pull request :D
49 |
50 | ## Author
51 |
52 | **rollup-plugin-hashbang** © [EGOIST](https://github.com/egoist), Released under the [MIT](./LICENSE) License.
53 | Authored and maintained by EGOIST with help from contributors ([list](https://github.com/egoist/rollup-plugin-hashbang/contributors)).
54 |
55 | > [egoist.moe](https://egoist.moe) · GitHub [@EGOIST](https://github.com/egoist) · Twitter [@\_egoistlily](https://twitter.com/_egoistlily)
56 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "rollup-plugin-hashbang",
3 | "version": "3.0.0",
4 | "description": "Preserve hashbang and make output file executable.",
5 | "repository": {
6 | "url": "egoist/rollup-plugin-hashbang",
7 | "type": "git"
8 | },
9 | "main": "dist/index.js",
10 | "types": "dist/index.d.ts",
11 | "files": [
12 | "dist"
13 | ],
14 | "scripts": {
15 | "test": "vitest run",
16 | "build": "tsup src/index.ts --dts",
17 | "prepublishOnly": "npm run build"
18 | },
19 | "author": "egoist <0x142857@gmail.com>",
20 | "license": "MIT",
21 | "dependencies": {
22 | "magic-string": "^0.25.7"
23 | },
24 | "devDependencies": {
25 | "@types/fs-extra": "^9.0.13",
26 | "executable": "^4.1.1",
27 | "fs-extra": "^10.0.0",
28 | "kanpai": "^0.10.1",
29 | "rollup": "^2.63.0",
30 | "tsup": "^5.11.11",
31 | "typescript": "^4.5.4",
32 | "vitest": "0.4.2"
33 | },
34 | "peerDependencies": {
35 | "rollup": ">=2"
36 | },
37 | "engines": {
38 | "node": ">=14"
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.3
2 |
3 | specifiers:
4 | '@types/fs-extra': ^9.0.13
5 | executable: ^4.1.1
6 | fs-extra: ^10.0.0
7 | kanpai: ^0.10.1
8 | magic-string: ^0.25.7
9 | rollup: ^2.63.0
10 | tsup: ^5.11.11
11 | typescript: ^4.5.4
12 | vitest: 0.4.2
13 |
14 | dependencies:
15 | magic-string: 0.25.7
16 |
17 | devDependencies:
18 | '@types/fs-extra': 9.0.13
19 | executable: 4.1.1
20 | fs-extra: 10.0.0
21 | kanpai: 0.10.1
22 | rollup: 2.63.0
23 | tsup: 5.11.11_typescript@4.5.4
24 | typescript: 4.5.4
25 | vitest: 0.4.2
26 |
27 | packages:
28 |
29 | /@nodelib/fs.scandir/2.1.5:
30 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
31 | engines: {node: '>= 8'}
32 | dependencies:
33 | '@nodelib/fs.stat': 2.0.5
34 | run-parallel: 1.2.0
35 | dev: true
36 |
37 | /@nodelib/fs.stat/2.0.5:
38 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
39 | engines: {node: '>= 8'}
40 | dev: true
41 |
42 | /@nodelib/fs.walk/1.2.8:
43 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
44 | engines: {node: '>= 8'}
45 | dependencies:
46 | '@nodelib/fs.scandir': 2.1.5
47 | fastq: 1.13.0
48 | dev: true
49 |
50 | /@types/chai-subset/1.3.3:
51 | resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==}
52 | dependencies:
53 | '@types/chai': 4.3.0
54 | dev: true
55 |
56 | /@types/chai/4.3.0:
57 | resolution: {integrity: sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==}
58 | dev: true
59 |
60 | /@types/fs-extra/9.0.13:
61 | resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==}
62 | dependencies:
63 | '@types/node': 17.0.8
64 | dev: true
65 |
66 | /@types/node/17.0.8:
67 | resolution: {integrity: sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==}
68 | dev: true
69 |
70 | /any-promise/1.3.0:
71 | resolution: {integrity: sha1-q8av7tzqUugJzcA3au0845Y10X8=}
72 | dev: true
73 |
74 | /anymatch/3.1.2:
75 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
76 | engines: {node: '>= 8'}
77 | dependencies:
78 | normalize-path: 3.0.0
79 | picomatch: 2.3.1
80 | dev: true
81 |
82 | /array-union/2.1.0:
83 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
84 | engines: {node: '>=8'}
85 | dev: true
86 |
87 | /assertion-error/1.1.0:
88 | resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
89 | dev: true
90 |
91 | /balanced-match/1.0.2:
92 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
93 | dev: true
94 |
95 | /binary-extensions/2.2.0:
96 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
97 | engines: {node: '>=8'}
98 | dev: true
99 |
100 | /brace-expansion/1.1.11:
101 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
102 | dependencies:
103 | balanced-match: 1.0.2
104 | concat-map: 0.0.1
105 | dev: true
106 |
107 | /braces/3.0.2:
108 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
109 | engines: {node: '>=8'}
110 | dependencies:
111 | fill-range: 7.0.1
112 | dev: true
113 |
114 | /bundle-require/2.2.0_esbuild@0.14.11:
115 | resolution: {integrity: sha512-JDVxYEAxEX1g8AWtadiIkCkFf42RulEl5AOIvUa4cpuEL/VKpK2lJwogyswHnp+qizNQxM0Ylamw7CjPRaJZuA==}
116 | peerDependencies:
117 | esbuild: '>=0.13'
118 | dependencies:
119 | esbuild: 0.14.11
120 | dev: true
121 |
122 | /cac/6.7.12:
123 | resolution: {integrity: sha512-rM7E2ygtMkJqD9c7WnFU6fruFcN3xe4FM5yUmgxhZzIKJk4uHl9U/fhwdajGFQbQuv43FAUo1Fe8gX/oIKDeSA==}
124 | engines: {node: '>=8'}
125 | dev: true
126 |
127 | /chai/4.3.6:
128 | resolution: {integrity: sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==}
129 | engines: {node: '>=4'}
130 | dependencies:
131 | assertion-error: 1.1.0
132 | check-error: 1.0.2
133 | deep-eql: 3.0.1
134 | get-func-name: 2.0.0
135 | loupe: 2.3.4
136 | pathval: 1.1.1
137 | type-detect: 4.0.8
138 | dev: true
139 |
140 | /check-error/1.0.2:
141 | resolution: {integrity: sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=}
142 | dev: true
143 |
144 | /chokidar/3.5.2:
145 | resolution: {integrity: sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==}
146 | engines: {node: '>= 8.10.0'}
147 | dependencies:
148 | anymatch: 3.1.2
149 | braces: 3.0.2
150 | glob-parent: 5.1.2
151 | is-binary-path: 2.1.0
152 | is-glob: 4.0.3
153 | normalize-path: 3.0.0
154 | readdirp: 3.6.0
155 | optionalDependencies:
156 | fsevents: 2.3.2
157 | dev: true
158 |
159 | /commander/4.1.1:
160 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
161 | engines: {node: '>= 6'}
162 | dev: true
163 |
164 | /concat-map/0.0.1:
165 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
166 | dev: true
167 |
168 | /cross-spawn/7.0.3:
169 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
170 | engines: {node: '>= 8'}
171 | dependencies:
172 | path-key: 3.1.1
173 | shebang-command: 2.0.0
174 | which: 2.0.2
175 | dev: true
176 |
177 | /debug/4.3.3:
178 | resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==}
179 | engines: {node: '>=6.0'}
180 | peerDependencies:
181 | supports-color: '*'
182 | peerDependenciesMeta:
183 | supports-color:
184 | optional: true
185 | dependencies:
186 | ms: 2.1.2
187 | dev: true
188 |
189 | /deep-eql/3.0.1:
190 | resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==}
191 | engines: {node: '>=0.12'}
192 | dependencies:
193 | type-detect: 4.0.8
194 | dev: true
195 |
196 | /dir-glob/3.0.1:
197 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
198 | engines: {node: '>=8'}
199 | dependencies:
200 | path-type: 4.0.0
201 | dev: true
202 |
203 | /esbuild-android-arm64/0.14.11:
204 | resolution: {integrity: sha512-6iHjgvMnC/SzDH8TefL+/3lgCjYWwAd1LixYfmz/TBPbDQlxcuSkX0yiQgcJB9k+ibZ54yjVXziIwGdlc+6WNw==}
205 | cpu: [arm64]
206 | os: [android]
207 | requiresBuild: true
208 | dev: true
209 | optional: true
210 |
211 | /esbuild-android-arm64/0.14.23:
212 | resolution: {integrity: sha512-k9sXem++mINrZty1v4FVt6nC5BQCFG4K2geCIUUqHNlTdFnuvcqsY7prcKZLFhqVC1rbcJAr9VSUGFL/vD4vsw==}
213 | engines: {node: '>=12'}
214 | cpu: [arm64]
215 | os: [android]
216 | requiresBuild: true
217 | dev: true
218 | optional: true
219 |
220 | /esbuild-darwin-64/0.14.11:
221 | resolution: {integrity: sha512-olq84ikh6TiBcrs3FnM4eR5VPPlcJcdW8BnUz/lNoEWYifYQ+Po5DuYV1oz1CTFMw4k6bQIZl8T3yxL+ZT2uvQ==}
222 | cpu: [x64]
223 | os: [darwin]
224 | requiresBuild: true
225 | dev: true
226 | optional: true
227 |
228 | /esbuild-darwin-64/0.14.23:
229 | resolution: {integrity: sha512-lB0XRbtOYYL1tLcYw8BoBaYsFYiR48RPrA0KfA/7RFTr4MV7Bwy/J4+7nLsVnv9FGuQummM3uJ93J3ptaTqFug==}
230 | engines: {node: '>=12'}
231 | cpu: [x64]
232 | os: [darwin]
233 | requiresBuild: true
234 | dev: true
235 | optional: true
236 |
237 | /esbuild-darwin-arm64/0.14.11:
238 | resolution: {integrity: sha512-Jj0ieWLREPBYr/TZJrb2GFH8PVzDqiQWavo1pOFFShrcmHWDBDrlDxPzEZ67NF/Un3t6sNNmeI1TUS/fe1xARg==}
239 | cpu: [arm64]
240 | os: [darwin]
241 | requiresBuild: true
242 | dev: true
243 | optional: true
244 |
245 | /esbuild-darwin-arm64/0.14.23:
246 | resolution: {integrity: sha512-yat73Z/uJ5tRcfRiI4CCTv0FSnwErm3BJQeZAh+1tIP0TUNh6o+mXg338Zl5EKChD+YGp6PN+Dbhs7qa34RxSw==}
247 | engines: {node: '>=12'}
248 | cpu: [arm64]
249 | os: [darwin]
250 | requiresBuild: true
251 | dev: true
252 | optional: true
253 |
254 | /esbuild-freebsd-64/0.14.11:
255 | resolution: {integrity: sha512-C5sT3/XIztxxz/zwDjPRHyzj/NJFOnakAanXuyfLDwhwupKPd76/PPHHyJx6Po6NI6PomgVp/zi6GRB8PfrOTA==}
256 | cpu: [x64]
257 | os: [freebsd]
258 | requiresBuild: true
259 | dev: true
260 | optional: true
261 |
262 | /esbuild-freebsd-64/0.14.23:
263 | resolution: {integrity: sha512-/1xiTjoLuQ+LlbfjJdKkX45qK/M7ARrbLmyf7x3JhyQGMjcxRYVR6Dw81uH3qlMHwT4cfLW4aEVBhP1aNV7VsA==}
264 | engines: {node: '>=12'}
265 | cpu: [x64]
266 | os: [freebsd]
267 | requiresBuild: true
268 | dev: true
269 | optional: true
270 |
271 | /esbuild-freebsd-arm64/0.14.11:
272 | resolution: {integrity: sha512-y3Llu4wbs0bk4cwjsdAtVOesXb6JkdfZDLKMt+v1U3tOEPBdSu6w8796VTksJgPfqvpX22JmPLClls0h5p+L9w==}
273 | cpu: [arm64]
274 | os: [freebsd]
275 | requiresBuild: true
276 | dev: true
277 | optional: true
278 |
279 | /esbuild-freebsd-arm64/0.14.23:
280 | resolution: {integrity: sha512-uyPqBU/Zcp6yEAZS4LKj5jEE0q2s4HmlMBIPzbW6cTunZ8cyvjG6YWpIZXb1KK3KTJDe62ltCrk3VzmWHp+iLg==}
281 | engines: {node: '>=12'}
282 | cpu: [arm64]
283 | os: [freebsd]
284 | requiresBuild: true
285 | dev: true
286 | optional: true
287 |
288 | /esbuild-linux-32/0.14.11:
289 | resolution: {integrity: sha512-Cg3nVsxArjyLke9EuwictFF3Sva+UlDTwHIuIyx8qpxRYAOUTmxr2LzYrhHyTcGOleLGXUXYsnUVwKqnKAgkcg==}
290 | cpu: [ia32]
291 | os: [linux]
292 | requiresBuild: true
293 | dev: true
294 | optional: true
295 |
296 | /esbuild-linux-32/0.14.23:
297 | resolution: {integrity: sha512-37R/WMkQyUfNhbH7aJrr1uCjDVdnPeTHGeDhZPUNhfoHV0lQuZNCKuNnDvlH/u/nwIYZNdVvz1Igv5rY/zfrzQ==}
298 | engines: {node: '>=12'}
299 | cpu: [ia32]
300 | os: [linux]
301 | requiresBuild: true
302 | dev: true
303 | optional: true
304 |
305 | /esbuild-linux-64/0.14.11:
306 | resolution: {integrity: sha512-oeR6dIrrojr8DKVrxtH3xl4eencmjsgI6kPkDCRIIFwv4p+K7ySviM85K66BN01oLjzthpUMvBVfWSJkBLeRbg==}
307 | cpu: [x64]
308 | os: [linux]
309 | requiresBuild: true
310 | dev: true
311 | optional: true
312 |
313 | /esbuild-linux-64/0.14.23:
314 | resolution: {integrity: sha512-H0gztDP60qqr8zoFhAO64waoN5yBXkmYCElFklpd6LPoobtNGNnDe99xOQm28+fuD75YJ7GKHzp/MLCLhw2+vQ==}
315 | engines: {node: '>=12'}
316 | cpu: [x64]
317 | os: [linux]
318 | requiresBuild: true
319 | dev: true
320 | optional: true
321 |
322 | /esbuild-linux-arm/0.14.11:
323 | resolution: {integrity: sha512-vcwskfD9g0tojux/ZaTJptJQU3a7YgTYsptK1y6LQ/rJmw7U5QJvboNawqM98Ca3ToYEucfCRGbl66OTNtp6KQ==}
324 | cpu: [arm]
325 | os: [linux]
326 | requiresBuild: true
327 | dev: true
328 | optional: true
329 |
330 | /esbuild-linux-arm/0.14.23:
331 | resolution: {integrity: sha512-x64CEUxi8+EzOAIpCUeuni0bZfzPw/65r8tC5cy5zOq9dY7ysOi5EVQHnzaxS+1NmV+/RVRpmrzGw1QgY2Xpmw==}
332 | engines: {node: '>=12'}
333 | cpu: [arm]
334 | os: [linux]
335 | requiresBuild: true
336 | dev: true
337 | optional: true
338 |
339 | /esbuild-linux-arm64/0.14.11:
340 | resolution: {integrity: sha512-+e6ZCgTFQYZlmg2OqLkg1jHLYtkNDksxWDBWNtI4XG4WxuOCUErLqfEt9qWjvzK3XBcCzHImrajkUjO+rRkbMg==}
341 | cpu: [arm64]
342 | os: [linux]
343 | requiresBuild: true
344 | dev: true
345 | optional: true
346 |
347 | /esbuild-linux-arm64/0.14.23:
348 | resolution: {integrity: sha512-c4MLOIByNHR55n3KoYf9hYDfBRghMjOiHLaoYLhkQkIabb452RWi+HsNgB41sUpSlOAqfpqKPFNg7VrxL3UX9g==}
349 | engines: {node: '>=12'}
350 | cpu: [arm64]
351 | os: [linux]
352 | requiresBuild: true
353 | dev: true
354 | optional: true
355 |
356 | /esbuild-linux-mips64le/0.14.11:
357 | resolution: {integrity: sha512-Rrs99L+p54vepmXIb87xTG6ukrQv+CzrM8eoeR+r/OFL2Rg8RlyEtCeshXJ2+Q66MXZOgPJaokXJZb9snq28bw==}
358 | cpu: [mips64el]
359 | os: [linux]
360 | requiresBuild: true
361 | dev: true
362 | optional: true
363 |
364 | /esbuild-linux-mips64le/0.14.23:
365 | resolution: {integrity: sha512-kHKyKRIAedYhKug2EJpyJxOUj3VYuamOVA1pY7EimoFPzaF3NeY7e4cFBAISC/Av0/tiV0xlFCt9q0HJ68IBIw==}
366 | engines: {node: '>=12'}
367 | cpu: [mips64el]
368 | os: [linux]
369 | requiresBuild: true
370 | dev: true
371 | optional: true
372 |
373 | /esbuild-linux-ppc64le/0.14.11:
374 | resolution: {integrity: sha512-JyzziGAI0D30Vyzt0HDihp4s1IUtJ3ssV2zx9O/c+U/dhUHVP2TmlYjzCfCr2Q6mwXTeloDcLS4qkyvJtYptdQ==}
375 | cpu: [ppc64]
376 | os: [linux]
377 | requiresBuild: true
378 | dev: true
379 | optional: true
380 |
381 | /esbuild-linux-ppc64le/0.14.23:
382 | resolution: {integrity: sha512-7ilAiJEPuJJnJp/LiDO0oJm5ygbBPzhchJJh9HsHZzeqO+3PUzItXi+8PuicY08r0AaaOe25LA7sGJ0MzbfBag==}
383 | engines: {node: '>=12'}
384 | cpu: [ppc64]
385 | os: [linux]
386 | requiresBuild: true
387 | dev: true
388 | optional: true
389 |
390 | /esbuild-linux-riscv64/0.14.23:
391 | resolution: {integrity: sha512-fbL3ggK2wY0D8I5raPIMPhpCvODFE+Bhb5QGtNP3r5aUsRR6TQV+ZBXIaw84iyvKC8vlXiA4fWLGhghAd/h/Zg==}
392 | engines: {node: '>=12'}
393 | cpu: [riscv64]
394 | os: [linux]
395 | requiresBuild: true
396 | dev: true
397 | optional: true
398 |
399 | /esbuild-linux-s390x/0.14.11:
400 | resolution: {integrity: sha512-DoThrkzunZ1nfRGoDN6REwmo8ZZWHd2ztniPVIR5RMw/Il9wiWEYBahb8jnMzQaSOxBsGp0PbyJeVLTUatnlcw==}
401 | cpu: [s390x]
402 | os: [linux]
403 | requiresBuild: true
404 | dev: true
405 | optional: true
406 |
407 | /esbuild-linux-s390x/0.14.23:
408 | resolution: {integrity: sha512-GHMDCyfy7+FaNSO8RJ8KCFsnax8fLUsOrj9q5Gi2JmZMY0Zhp75keb5abTFCq2/Oy6KVcT0Dcbyo/bFb4rIFJA==}
409 | engines: {node: '>=12'}
410 | cpu: [s390x]
411 | os: [linux]
412 | requiresBuild: true
413 | dev: true
414 | optional: true
415 |
416 | /esbuild-netbsd-64/0.14.11:
417 | resolution: {integrity: sha512-12luoRQz+6eihKYh1zjrw0CBa2aw3twIiHV/FAfjh2NEBDgJQOY4WCEUEN+Rgon7xmLh4XUxCQjnwrvf8zhACw==}
418 | cpu: [x64]
419 | os: [netbsd]
420 | requiresBuild: true
421 | dev: true
422 | optional: true
423 |
424 | /esbuild-netbsd-64/0.14.23:
425 | resolution: {integrity: sha512-ovk2EX+3rrO1M2lowJfgMb/JPN1VwVYrx0QPUyudxkxLYrWeBxDKQvc6ffO+kB4QlDyTfdtAURrVzu3JeNdA2g==}
426 | engines: {node: '>=12'}
427 | cpu: [x64]
428 | os: [netbsd]
429 | requiresBuild: true
430 | dev: true
431 | optional: true
432 |
433 | /esbuild-openbsd-64/0.14.11:
434 | resolution: {integrity: sha512-l18TZDjmvwW6cDeR4fmizNoxndyDHamGOOAenwI4SOJbzlJmwfr0jUgjbaXCUuYVOA964siw+Ix+A+bhALWg8Q==}
435 | cpu: [x64]
436 | os: [openbsd]
437 | requiresBuild: true
438 | dev: true
439 | optional: true
440 |
441 | /esbuild-openbsd-64/0.14.23:
442 | resolution: {integrity: sha512-uYYNqbVR+i7k8ojP/oIROAHO9lATLN7H2QeXKt2H310Fc8FJj4y3Wce6hx0VgnJ4k1JDrgbbiXM8rbEgQyg8KA==}
443 | engines: {node: '>=12'}
444 | cpu: [x64]
445 | os: [openbsd]
446 | requiresBuild: true
447 | dev: true
448 | optional: true
449 |
450 | /esbuild-sunos-64/0.14.11:
451 | resolution: {integrity: sha512-bmYzDtwASBB8c+0/HVOAiE9diR7+8zLm/i3kEojUH2z0aIs6x/S4KiTuT5/0VKJ4zk69kXel1cNWlHBMkmavQg==}
452 | cpu: [x64]
453 | os: [sunos]
454 | requiresBuild: true
455 | dev: true
456 | optional: true
457 |
458 | /esbuild-sunos-64/0.14.23:
459 | resolution: {integrity: sha512-hAzeBeET0+SbScknPzS2LBY6FVDpgE+CsHSpe6CEoR51PApdn2IB0SyJX7vGelXzlyrnorM4CAsRyb9Qev4h9g==}
460 | engines: {node: '>=12'}
461 | cpu: [x64]
462 | os: [sunos]
463 | requiresBuild: true
464 | dev: true
465 | optional: true
466 |
467 | /esbuild-windows-32/0.14.11:
468 | resolution: {integrity: sha512-J1Ys5hMid8QgdY00OBvIolXgCQn1ARhYtxPnG6ESWNTty3ashtc4+As5nTrsErnv8ZGUcWZe4WzTP/DmEVX1UQ==}
469 | cpu: [ia32]
470 | os: [win32]
471 | requiresBuild: true
472 | dev: true
473 | optional: true
474 |
475 | /esbuild-windows-32/0.14.23:
476 | resolution: {integrity: sha512-Kttmi3JnohdaREbk6o9e25kieJR379TsEWF0l39PQVHXq3FR6sFKtVPgY8wk055o6IB+rllrzLnbqOw/UV60EA==}
477 | engines: {node: '>=12'}
478 | cpu: [ia32]
479 | os: [win32]
480 | requiresBuild: true
481 | dev: true
482 | optional: true
483 |
484 | /esbuild-windows-64/0.14.11:
485 | resolution: {integrity: sha512-h9FmMskMuGeN/9G9+LlHPAoiQk9jlKDUn9yA0MpiGzwLa82E7r1b1u+h2a+InprbSnSLxDq/7p5YGtYVO85Mlg==}
486 | cpu: [x64]
487 | os: [win32]
488 | requiresBuild: true
489 | dev: true
490 | optional: true
491 |
492 | /esbuild-windows-64/0.14.23:
493 | resolution: {integrity: sha512-JtIT0t8ymkpl6YlmOl6zoSWL5cnCgyLaBdf/SiU/Eg3C13r0NbHZWNT/RDEMKK91Y6t79kTs3vyRcNZbfu5a8g==}
494 | engines: {node: '>=12'}
495 | cpu: [x64]
496 | os: [win32]
497 | requiresBuild: true
498 | dev: true
499 | optional: true
500 |
501 | /esbuild-windows-arm64/0.14.11:
502 | resolution: {integrity: sha512-dZp7Krv13KpwKklt9/1vBFBMqxEQIO6ri7Azf8C+ob4zOegpJmha2XY9VVWP/OyQ0OWk6cEeIzMJwInRZrzBUQ==}
503 | cpu: [arm64]
504 | os: [win32]
505 | requiresBuild: true
506 | dev: true
507 | optional: true
508 |
509 | /esbuild-windows-arm64/0.14.23:
510 | resolution: {integrity: sha512-cTFaQqT2+ik9e4hePvYtRZQ3pqOvKDVNarzql0VFIzhc0tru/ZgdLoXd6epLiKT+SzoSce6V9YJ+nn6RCn6SHw==}
511 | engines: {node: '>=12'}
512 | cpu: [arm64]
513 | os: [win32]
514 | requiresBuild: true
515 | dev: true
516 | optional: true
517 |
518 | /esbuild/0.14.11:
519 | resolution: {integrity: sha512-xZvPtVj6yecnDeFb3KjjCM6i7B5TCAQZT77kkW/CpXTMnd6VLnRPKrUB1XHI1pSq6a4Zcy3BGueQ8VljqjDGCg==}
520 | hasBin: true
521 | requiresBuild: true
522 | optionalDependencies:
523 | esbuild-android-arm64: 0.14.11
524 | esbuild-darwin-64: 0.14.11
525 | esbuild-darwin-arm64: 0.14.11
526 | esbuild-freebsd-64: 0.14.11
527 | esbuild-freebsd-arm64: 0.14.11
528 | esbuild-linux-32: 0.14.11
529 | esbuild-linux-64: 0.14.11
530 | esbuild-linux-arm: 0.14.11
531 | esbuild-linux-arm64: 0.14.11
532 | esbuild-linux-mips64le: 0.14.11
533 | esbuild-linux-ppc64le: 0.14.11
534 | esbuild-linux-s390x: 0.14.11
535 | esbuild-netbsd-64: 0.14.11
536 | esbuild-openbsd-64: 0.14.11
537 | esbuild-sunos-64: 0.14.11
538 | esbuild-windows-32: 0.14.11
539 | esbuild-windows-64: 0.14.11
540 | esbuild-windows-arm64: 0.14.11
541 | dev: true
542 |
543 | /esbuild/0.14.23:
544 | resolution: {integrity: sha512-XjnIcZ9KB6lfonCa+jRguXyRYcldmkyZ99ieDksqW/C8bnyEX299yA4QH2XcgijCgaddEZePPTgvx/2imsq7Ig==}
545 | engines: {node: '>=12'}
546 | hasBin: true
547 | requiresBuild: true
548 | optionalDependencies:
549 | esbuild-android-arm64: 0.14.23
550 | esbuild-darwin-64: 0.14.23
551 | esbuild-darwin-arm64: 0.14.23
552 | esbuild-freebsd-64: 0.14.23
553 | esbuild-freebsd-arm64: 0.14.23
554 | esbuild-linux-32: 0.14.23
555 | esbuild-linux-64: 0.14.23
556 | esbuild-linux-arm: 0.14.23
557 | esbuild-linux-arm64: 0.14.23
558 | esbuild-linux-mips64le: 0.14.23
559 | esbuild-linux-ppc64le: 0.14.23
560 | esbuild-linux-riscv64: 0.14.23
561 | esbuild-linux-s390x: 0.14.23
562 | esbuild-netbsd-64: 0.14.23
563 | esbuild-openbsd-64: 0.14.23
564 | esbuild-sunos-64: 0.14.23
565 | esbuild-windows-32: 0.14.23
566 | esbuild-windows-64: 0.14.23
567 | esbuild-windows-arm64: 0.14.23
568 | dev: true
569 |
570 | /execa/5.1.1:
571 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
572 | engines: {node: '>=10'}
573 | dependencies:
574 | cross-spawn: 7.0.3
575 | get-stream: 6.0.1
576 | human-signals: 2.1.0
577 | is-stream: 2.0.1
578 | merge-stream: 2.0.0
579 | npm-run-path: 4.0.1
580 | onetime: 5.1.2
581 | signal-exit: 3.0.6
582 | strip-final-newline: 2.0.0
583 | dev: true
584 |
585 | /executable/4.1.1:
586 | resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==}
587 | engines: {node: '>=4'}
588 | dependencies:
589 | pify: 2.3.0
590 | dev: true
591 |
592 | /fast-glob/3.2.10:
593 | resolution: {integrity: sha512-s9nFhFnvR63wls6/kM88kQqDhMu0AfdjqouE2l5GVQPbqLgyFjjU5ry/r2yKsJxpb9Py1EYNqieFrmMaX4v++A==}
594 | engines: {node: '>=8.6.0'}
595 | dependencies:
596 | '@nodelib/fs.stat': 2.0.5
597 | '@nodelib/fs.walk': 1.2.8
598 | glob-parent: 5.1.2
599 | merge2: 1.4.1
600 | micromatch: 4.0.4
601 | dev: true
602 |
603 | /fastq/1.13.0:
604 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==}
605 | dependencies:
606 | reusify: 1.0.4
607 | dev: true
608 |
609 | /fill-range/7.0.1:
610 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
611 | engines: {node: '>=8'}
612 | dependencies:
613 | to-regex-range: 5.0.1
614 | dev: true
615 |
616 | /fs-extra/10.0.0:
617 | resolution: {integrity: sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==}
618 | engines: {node: '>=12'}
619 | dependencies:
620 | graceful-fs: 4.2.9
621 | jsonfile: 6.1.0
622 | universalify: 2.0.0
623 | dev: true
624 |
625 | /fs.realpath/1.0.0:
626 | resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=}
627 | dev: true
628 |
629 | /fsevents/2.3.2:
630 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
631 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
632 | os: [darwin]
633 | requiresBuild: true
634 | dev: true
635 | optional: true
636 |
637 | /function-bind/1.1.1:
638 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
639 | dev: true
640 |
641 | /get-func-name/2.0.0:
642 | resolution: {integrity: sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=}
643 | dev: true
644 |
645 | /get-stream/6.0.1:
646 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
647 | engines: {node: '>=10'}
648 | dev: true
649 |
650 | /glob-parent/5.1.2:
651 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
652 | engines: {node: '>= 6'}
653 | dependencies:
654 | is-glob: 4.0.3
655 | dev: true
656 |
657 | /glob/7.1.6:
658 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
659 | dependencies:
660 | fs.realpath: 1.0.0
661 | inflight: 1.0.6
662 | inherits: 2.0.4
663 | minimatch: 3.0.4
664 | once: 1.4.0
665 | path-is-absolute: 1.0.1
666 | dev: true
667 |
668 | /globby/11.1.0:
669 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
670 | engines: {node: '>=10'}
671 | dependencies:
672 | array-union: 2.1.0
673 | dir-glob: 3.0.1
674 | fast-glob: 3.2.10
675 | ignore: 5.2.0
676 | merge2: 1.4.1
677 | slash: 3.0.0
678 | dev: true
679 |
680 | /graceful-fs/4.2.9:
681 | resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==}
682 | dev: true
683 |
684 | /has/1.0.3:
685 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
686 | engines: {node: '>= 0.4.0'}
687 | dependencies:
688 | function-bind: 1.1.1
689 | dev: true
690 |
691 | /human-signals/2.1.0:
692 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
693 | engines: {node: '>=10.17.0'}
694 | dev: true
695 |
696 | /ignore/5.2.0:
697 | resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==}
698 | engines: {node: '>= 4'}
699 | dev: true
700 |
701 | /inflight/1.0.6:
702 | resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=}
703 | dependencies:
704 | once: 1.4.0
705 | wrappy: 1.0.2
706 | dev: true
707 |
708 | /inherits/2.0.4:
709 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
710 | dev: true
711 |
712 | /is-binary-path/2.1.0:
713 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
714 | engines: {node: '>=8'}
715 | dependencies:
716 | binary-extensions: 2.2.0
717 | dev: true
718 |
719 | /is-core-module/2.8.1:
720 | resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==}
721 | dependencies:
722 | has: 1.0.3
723 | dev: true
724 |
725 | /is-extglob/2.1.1:
726 | resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=}
727 | engines: {node: '>=0.10.0'}
728 | dev: true
729 |
730 | /is-glob/4.0.3:
731 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
732 | engines: {node: '>=0.10.0'}
733 | dependencies:
734 | is-extglob: 2.1.1
735 | dev: true
736 |
737 | /is-number/7.0.0:
738 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
739 | engines: {node: '>=0.12.0'}
740 | dev: true
741 |
742 | /is-stream/2.0.1:
743 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
744 | engines: {node: '>=8'}
745 | dev: true
746 |
747 | /isexe/2.0.0:
748 | resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=}
749 | dev: true
750 |
751 | /joycon/3.1.1:
752 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
753 | engines: {node: '>=10'}
754 | dev: true
755 |
756 | /jsonfile/6.1.0:
757 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
758 | dependencies:
759 | universalify: 2.0.0
760 | optionalDependencies:
761 | graceful-fs: 4.2.9
762 | dev: true
763 |
764 | /kanpai/0.10.1:
765 | resolution: {integrity: sha512-EUmZoO4FxphrH0blToWScMEUWyqHUg6x31WgW8ruUhj6EPy4FpI2j+z0LJ3qnUiIeGObrkx/xToH2hFcxLwtuA==}
766 | engines: {node: '>=14.0.0'}
767 | hasBin: true
768 | dev: true
769 |
770 | /lilconfig/2.0.4:
771 | resolution: {integrity: sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==}
772 | engines: {node: '>=10'}
773 | dev: true
774 |
775 | /lines-and-columns/1.2.4:
776 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
777 | dev: true
778 |
779 | /local-pkg/0.4.1:
780 | resolution: {integrity: sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw==}
781 | engines: {node: '>=14'}
782 | dev: true
783 |
784 | /loupe/2.3.4:
785 | resolution: {integrity: sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==}
786 | dependencies:
787 | get-func-name: 2.0.0
788 | dev: true
789 |
790 | /magic-string/0.25.7:
791 | resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==}
792 | dependencies:
793 | sourcemap-codec: 1.4.8
794 | dev: false
795 |
796 | /merge-stream/2.0.0:
797 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
798 | dev: true
799 |
800 | /merge2/1.4.1:
801 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
802 | engines: {node: '>= 8'}
803 | dev: true
804 |
805 | /micromatch/4.0.4:
806 | resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==}
807 | engines: {node: '>=8.6'}
808 | dependencies:
809 | braces: 3.0.2
810 | picomatch: 2.3.1
811 | dev: true
812 |
813 | /mimic-fn/2.1.0:
814 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
815 | engines: {node: '>=6'}
816 | dev: true
817 |
818 | /minimatch/3.0.4:
819 | resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==}
820 | dependencies:
821 | brace-expansion: 1.1.11
822 | dev: true
823 |
824 | /ms/2.1.2:
825 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
826 | dev: true
827 |
828 | /mz/2.7.0:
829 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
830 | dependencies:
831 | any-promise: 1.3.0
832 | object-assign: 4.1.1
833 | thenify-all: 1.6.0
834 | dev: true
835 |
836 | /nanoid/3.3.1:
837 | resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==}
838 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
839 | hasBin: true
840 | dev: true
841 |
842 | /normalize-path/3.0.0:
843 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
844 | engines: {node: '>=0.10.0'}
845 | dev: true
846 |
847 | /npm-run-path/4.0.1:
848 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
849 | engines: {node: '>=8'}
850 | dependencies:
851 | path-key: 3.1.1
852 | dev: true
853 |
854 | /object-assign/4.1.1:
855 | resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=}
856 | engines: {node: '>=0.10.0'}
857 | dev: true
858 |
859 | /once/1.4.0:
860 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=}
861 | dependencies:
862 | wrappy: 1.0.2
863 | dev: true
864 |
865 | /onetime/5.1.2:
866 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
867 | engines: {node: '>=6'}
868 | dependencies:
869 | mimic-fn: 2.1.0
870 | dev: true
871 |
872 | /path-is-absolute/1.0.1:
873 | resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=}
874 | engines: {node: '>=0.10.0'}
875 | dev: true
876 |
877 | /path-key/3.1.1:
878 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
879 | engines: {node: '>=8'}
880 | dev: true
881 |
882 | /path-parse/1.0.7:
883 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
884 | dev: true
885 |
886 | /path-type/4.0.0:
887 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
888 | engines: {node: '>=8'}
889 | dev: true
890 |
891 | /pathval/1.1.1:
892 | resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
893 | dev: true
894 |
895 | /picocolors/1.0.0:
896 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
897 | dev: true
898 |
899 | /picomatch/2.3.1:
900 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
901 | engines: {node: '>=8.6'}
902 | dev: true
903 |
904 | /pify/2.3.0:
905 | resolution: {integrity: sha1-7RQaasBDqEnqWISY59yosVMw6Qw=}
906 | engines: {node: '>=0.10.0'}
907 | dev: true
908 |
909 | /pirates/4.0.4:
910 | resolution: {integrity: sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==}
911 | engines: {node: '>= 6'}
912 | dev: true
913 |
914 | /postcss-load-config/3.1.1:
915 | resolution: {integrity: sha512-c/9XYboIbSEUZpiD1UQD0IKiUe8n9WHYV7YFe7X7J+ZwCsEKkUJSFWjS9hBU1RR9THR7jMXst8sxiqP0jjo2mg==}
916 | engines: {node: '>= 10'}
917 | peerDependencies:
918 | ts-node: '>=9.0.0'
919 | peerDependenciesMeta:
920 | ts-node:
921 | optional: true
922 | dependencies:
923 | lilconfig: 2.0.4
924 | yaml: 1.10.2
925 | dev: true
926 |
927 | /postcss/8.4.6:
928 | resolution: {integrity: sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==}
929 | engines: {node: ^10 || ^12 || >=14}
930 | dependencies:
931 | nanoid: 3.3.1
932 | picocolors: 1.0.0
933 | source-map-js: 1.0.2
934 | dev: true
935 |
936 | /queue-microtask/1.2.3:
937 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
938 | dev: true
939 |
940 | /readdirp/3.6.0:
941 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
942 | engines: {node: '>=8.10.0'}
943 | dependencies:
944 | picomatch: 2.3.1
945 | dev: true
946 |
947 | /resolve-from/5.0.0:
948 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
949 | engines: {node: '>=8'}
950 | dev: true
951 |
952 | /resolve/1.22.0:
953 | resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==}
954 | hasBin: true
955 | dependencies:
956 | is-core-module: 2.8.1
957 | path-parse: 1.0.7
958 | supports-preserve-symlinks-flag: 1.0.0
959 | dev: true
960 |
961 | /reusify/1.0.4:
962 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
963 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
964 | dev: true
965 |
966 | /rollup/2.63.0:
967 | resolution: {integrity: sha512-nps0idjmD+NXl6OREfyYXMn/dar3WGcyKn+KBzPdaLecub3x/LrId0wUcthcr8oZUAcZAR8NKcfGGFlNgGL1kQ==}
968 | engines: {node: '>=10.0.0'}
969 | hasBin: true
970 | optionalDependencies:
971 | fsevents: 2.3.2
972 | dev: true
973 |
974 | /run-parallel/1.2.0:
975 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
976 | dependencies:
977 | queue-microtask: 1.2.3
978 | dev: true
979 |
980 | /shebang-command/2.0.0:
981 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
982 | engines: {node: '>=8'}
983 | dependencies:
984 | shebang-regex: 3.0.0
985 | dev: true
986 |
987 | /shebang-regex/3.0.0:
988 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
989 | engines: {node: '>=8'}
990 | dev: true
991 |
992 | /signal-exit/3.0.6:
993 | resolution: {integrity: sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==}
994 | dev: true
995 |
996 | /slash/3.0.0:
997 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
998 | engines: {node: '>=8'}
999 | dev: true
1000 |
1001 | /source-map-js/1.0.2:
1002 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
1003 | engines: {node: '>=0.10.0'}
1004 | dev: true
1005 |
1006 | /source-map/0.7.3:
1007 | resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==}
1008 | engines: {node: '>= 8'}
1009 | dev: true
1010 |
1011 | /sourcemap-codec/1.4.8:
1012 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
1013 | dev: false
1014 |
1015 | /strip-final-newline/2.0.0:
1016 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
1017 | engines: {node: '>=6'}
1018 | dev: true
1019 |
1020 | /sucrase/3.20.3:
1021 | resolution: {integrity: sha512-azqwq0/Bs6RzLAdb4dXxsCgMtAaD2hzmUr4UhSfsxO46JFPAwMnnb441B/qsudZiS6Ylea3JXZe3Q497lsgXzQ==}
1022 | engines: {node: '>=8'}
1023 | hasBin: true
1024 | dependencies:
1025 | commander: 4.1.1
1026 | glob: 7.1.6
1027 | lines-and-columns: 1.2.4
1028 | mz: 2.7.0
1029 | pirates: 4.0.4
1030 | ts-interface-checker: 0.1.13
1031 | dev: true
1032 |
1033 | /supports-preserve-symlinks-flag/1.0.0:
1034 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1035 | engines: {node: '>= 0.4'}
1036 | dev: true
1037 |
1038 | /thenify-all/1.6.0:
1039 | resolution: {integrity: sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=}
1040 | engines: {node: '>=0.8'}
1041 | dependencies:
1042 | thenify: 3.3.1
1043 | dev: true
1044 |
1045 | /thenify/3.3.1:
1046 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
1047 | dependencies:
1048 | any-promise: 1.3.0
1049 | dev: true
1050 |
1051 | /tinypool/0.1.2:
1052 | resolution: {integrity: sha512-fvtYGXoui2RpeMILfkvGIgOVkzJEGediv8UJt7TxdAOY8pnvUkFg/fkvqTfXG9Acc9S17Cnn1S4osDc2164guA==}
1053 | engines: {node: '>=14.0.0'}
1054 | dev: true
1055 |
1056 | /tinyspy/0.3.0:
1057 | resolution: {integrity: sha512-c5uFHqtUp74R2DJE3/Efg0mH5xicmgziaQXMm/LvuuZn3RdpADH32aEGDRyCzObXT1DNfwDMqRQ/Drh1MlO12g==}
1058 | engines: {node: '>=14.0.0'}
1059 | dev: true
1060 |
1061 | /to-regex-range/5.0.1:
1062 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1063 | engines: {node: '>=8.0'}
1064 | dependencies:
1065 | is-number: 7.0.0
1066 | dev: true
1067 |
1068 | /tree-kill/1.2.2:
1069 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
1070 | hasBin: true
1071 | dev: true
1072 |
1073 | /ts-interface-checker/0.1.13:
1074 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
1075 | dev: true
1076 |
1077 | /tsup/5.11.11_typescript@4.5.4:
1078 | resolution: {integrity: sha512-rgbTu+KhAI9PdGUS07rKohDXbRLTstBGJaxl75q7RZYRGF+n+kN8L4RlXY5pqYb9Hsq0gEB6nS39v7nSvVBS+g==}
1079 | hasBin: true
1080 | peerDependencies:
1081 | typescript: ^4.1.0
1082 | peerDependenciesMeta:
1083 | typescript:
1084 | optional: true
1085 | dependencies:
1086 | bundle-require: 2.2.0_esbuild@0.14.11
1087 | cac: 6.7.12
1088 | chokidar: 3.5.2
1089 | debug: 4.3.3
1090 | esbuild: 0.14.11
1091 | execa: 5.1.1
1092 | globby: 11.1.0
1093 | joycon: 3.1.1
1094 | postcss-load-config: 3.1.1
1095 | resolve-from: 5.0.0
1096 | rollup: 2.63.0
1097 | source-map: 0.7.3
1098 | sucrase: 3.20.3
1099 | tree-kill: 1.2.2
1100 | typescript: 4.5.4
1101 | transitivePeerDependencies:
1102 | - supports-color
1103 | - ts-node
1104 | dev: true
1105 |
1106 | /type-detect/4.0.8:
1107 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
1108 | engines: {node: '>=4'}
1109 | dev: true
1110 |
1111 | /typescript/4.5.4:
1112 | resolution: {integrity: sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==}
1113 | engines: {node: '>=4.2.0'}
1114 | hasBin: true
1115 | dev: true
1116 |
1117 | /universalify/2.0.0:
1118 | resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
1119 | engines: {node: '>= 10.0.0'}
1120 | dev: true
1121 |
1122 | /vite/2.8.4:
1123 | resolution: {integrity: sha512-GwtOkkaT2LDI82uWZKcrpRQxP5tymLnC7hVHHqNkhFNknYr0hJUlDLfhVRgngJvAy3RwypkDCWtTKn1BjO96Dw==}
1124 | engines: {node: '>=12.2.0'}
1125 | hasBin: true
1126 | peerDependencies:
1127 | less: '*'
1128 | sass: '*'
1129 | stylus: '*'
1130 | peerDependenciesMeta:
1131 | less:
1132 | optional: true
1133 | sass:
1134 | optional: true
1135 | stylus:
1136 | optional: true
1137 | dependencies:
1138 | esbuild: 0.14.23
1139 | postcss: 8.4.6
1140 | resolve: 1.22.0
1141 | rollup: 2.63.0
1142 | optionalDependencies:
1143 | fsevents: 2.3.2
1144 | dev: true
1145 |
1146 | /vitest/0.4.2:
1147 | resolution: {integrity: sha512-f5kclFhkCuIKQ96lsAveESeyfTf9ihT79ZQcLDNCoJbMDNTHQdSMnU7aq9KAeOmZVh4la3NANKWECWM7HfP1ng==}
1148 | engines: {node: '>=14.14.0'}
1149 | hasBin: true
1150 | peerDependencies:
1151 | '@vitest/ui': '*'
1152 | c8: '*'
1153 | happy-dom: '*'
1154 | jsdom: '*'
1155 | peerDependenciesMeta:
1156 | '@vitest/ui':
1157 | optional: true
1158 | c8:
1159 | optional: true
1160 | happy-dom:
1161 | optional: true
1162 | jsdom:
1163 | optional: true
1164 | dependencies:
1165 | '@types/chai': 4.3.0
1166 | '@types/chai-subset': 1.3.3
1167 | chai: 4.3.6
1168 | local-pkg: 0.4.1
1169 | tinypool: 0.1.2
1170 | tinyspy: 0.3.0
1171 | vite: 2.8.4
1172 | transitivePeerDependencies:
1173 | - less
1174 | - sass
1175 | - stylus
1176 | dev: true
1177 |
1178 | /which/2.0.2:
1179 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1180 | engines: {node: '>= 8'}
1181 | hasBin: true
1182 | dependencies:
1183 | isexe: 2.0.0
1184 | dev: true
1185 |
1186 | /wrappy/1.0.2:
1187 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=}
1188 | dev: true
1189 |
1190 | /yaml/1.10.2:
1191 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
1192 | engines: {node: '>= 6'}
1193 | dev: true
1194 |
--------------------------------------------------------------------------------
/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "config:base"
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import fs from "fs";
2 | import path from "path";
3 | import { Plugin } from "rollup";
4 | import MagicString from "magic-string";
5 |
6 | export default (): Plugin => {
7 | const shebangs: Map = new Map();
8 | const shebangRe = /^\s*(#!.*)/;
9 | const outputFiles: Set = new Set();
10 |
11 | return {
12 | name: "hashbang",
13 |
14 | transform(code, id) {
15 | let match;
16 |
17 | // eslint-disable-next-line no-cond-assign
18 | if ((match = shebangRe.exec(code))) {
19 | shebangs.set(id, match[1]);
20 | const str = new MagicString(code);
21 | str.remove(match.index, match[1].length);
22 | return {
23 | code: str.toString(),
24 | map: str.generateMap({ hires: true }),
25 | };
26 | }
27 |
28 | return null;
29 | },
30 |
31 | renderChunk(
32 | code,
33 | { isEntry, facadeModuleId, fileName },
34 | { file, dir, sourcemap }
35 | ) {
36 | if (!isEntry || !facadeModuleId || !shebangs.has(facadeModuleId)) return;
37 |
38 | outputFiles.add(file || path.resolve(dir || process.cwd(), fileName));
39 |
40 | const s = new MagicString(code);
41 | s.prepend(shebangs.get(facadeModuleId) + "\n");
42 |
43 | return {
44 | code: s.toString(),
45 | map: sourcemap ? s.generateMap({ hires: true }) : undefined,
46 | };
47 | },
48 |
49 | async writeBundle() {
50 | await Promise.all(
51 | [...outputFiles].map(async (file) => {
52 | await fs.promises.chmod(file, 0o755 & ~process.umask());
53 | })
54 | );
55 | },
56 | };
57 | };
58 |
--------------------------------------------------------------------------------
/test/__snapshots__/index.test.ts.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1
2 |
3 | exports[`hashbang 1`] = `
4 | "#!/usr/env/env node
5 | 'use strict';
6 |
7 | Object.defineProperty(exports, '__esModule', { value: true });
8 |
9 | var hashbang = 42;
10 |
11 | exports[\\"default\\"] = hashbang;
12 | "
13 | `;
14 |
15 | exports[`no hashbang 1`] = `
16 | "'use strict';
17 |
18 | Object.defineProperty(exports, '__esModule', { value: true });
19 |
20 | var noHashbang = 42;
21 |
22 | exports[\\"default\\"] = noHashbang;
23 | "
24 | `;
25 |
--------------------------------------------------------------------------------
/test/fixture/chunks/bar.js:
--------------------------------------------------------------------------------
1 | console.log('bar')
2 |
--------------------------------------------------------------------------------
/test/fixture/chunks/foo.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | console.log('foo')
4 |
--------------------------------------------------------------------------------
/test/fixture/hashbang.js:
--------------------------------------------------------------------------------
1 | #!/usr/env/env node
2 | export default 42
3 |
--------------------------------------------------------------------------------
/test/fixture/no-hashbang.js:
--------------------------------------------------------------------------------
1 | export default 42
2 |
--------------------------------------------------------------------------------
/test/index.test.ts:
--------------------------------------------------------------------------------
1 | import path from "path";
2 | import fs from "fs-extra";
3 | import { rollup } from "rollup";
4 | import { afterAll, test, expect } from "vitest";
5 | import isExecutable from "executable";
6 | import hashbangPlugin from "../src";
7 |
8 | function fixture(...args: string[]) {
9 | return path.join(__dirname, "fixture", ...args);
10 | }
11 |
12 | afterAll(() => fs.remove(fixture("output")));
13 |
14 | async function build(input: string, output: string) {
15 | input = fixture(input);
16 | output = fixture(output);
17 | const bundle = await rollup({
18 | input,
19 | plugins: [hashbangPlugin()],
20 | });
21 | await bundle.write({
22 | file: output,
23 | format: "cjs",
24 | exports: "named",
25 | });
26 | return {
27 | executable: await isExecutable(output),
28 | output: await fs.readFile(output, "utf8"),
29 | };
30 | }
31 |
32 | test("hashbang", async () => {
33 | const { executable, output } = await build("hashbang.js", "output/a.js");
34 | expect(executable).toBe(true);
35 | expect(output).toMatchSnapshot();
36 | });
37 |
38 | test("no hashbang", async () => {
39 | const { executable, output } = await build("no-hashbang.js", "output/b.js");
40 | expect(executable).toBe(false);
41 | expect(output).toMatchSnapshot();
42 | });
43 |
44 | test("chunks", async () => {
45 | const bundle = await rollup({
46 | input: {
47 | foo: fixture("chunks/foo.js"),
48 | bar: fixture("chunks/bar.js"),
49 | },
50 | plugins: [hashbangPlugin()],
51 | });
52 | await bundle.write({
53 | format: "cjs",
54 | dir: fixture("output/chunks"),
55 | });
56 | expect(await isExecutable(fixture("output/chunks/foo.js"))).toBe(true);
57 | expect(await isExecutable(fixture("output/chunks/bar.js"))).toBe(false);
58 | });
59 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */
4 |
5 | /* Projects */
6 | // "incremental": true, /* Enable incremental compilation */
7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
8 | // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */
9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */
10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
12 |
13 | /* Language and Environment */
14 | "target": "esnext" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,
15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
16 | // "jsx": "preserve", /* Specify what JSX code is generated. */
17 | // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */
20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */
22 | // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */
23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
25 |
26 | /* Modules */
27 | "module": "esnext" /* Specify what module code is generated. */,
28 | // "rootDir": "./", /* Specify the root folder within your source files. */
29 | "moduleResolution": "node" /* Specify how TypeScript looks up a file from a given module specifier. */,
30 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
31 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
32 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
33 | // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */
34 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */
35 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
36 | // "resolveJsonModule": true, /* Enable importing .json files */
37 | // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */
38 |
39 | /* JavaScript Support */
40 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */
41 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
42 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */
43 |
44 | /* Emit */
45 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
46 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */
47 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
48 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */
49 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */
50 | // "outDir": "./", /* Specify an output folder for all emitted files. */
51 | // "removeComments": true, /* Disable emitting comments. */
52 | // "noEmit": true, /* Disable emitting files from a compilation. */
53 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
54 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */
55 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
56 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
57 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
58 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
59 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
60 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
61 | // "newLine": "crlf", /* Set the newline character for emitting files. */
62 | // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */
63 | // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */
64 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
65 | // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */
66 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */
67 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
68 |
69 | /* Interop Constraints */
70 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
71 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
72 | "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */,
73 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
74 | "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */,
75 |
76 | /* Type Checking */
77 | "strict": true /* Enable all strict type-checking options. */,
78 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */
79 | // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */
80 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
81 | // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */
82 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
83 | // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */
84 | // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */
85 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
86 | // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */
87 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */
88 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
89 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
90 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
91 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */
92 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
93 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */
94 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
95 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
96 |
97 | /* Completeness */
98 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
99 | "skipLibCheck": true /* Skip type checking all .d.ts files. */
100 | }
101 | }
102 |
--------------------------------------------------------------------------------
/types.d.ts:
--------------------------------------------------------------------------------
1 | declare module "executable" {
2 | function isExecutable(path: string): Promise;
3 | export default isExecutable;
4 | }
5 |
--------------------------------------------------------------------------------