tangled
alpha
login
or
join now
buttplug.io
/
buttplug
20
fork
atom
Buttplug sex toy control library
20
fork
atom
overview
issues
pulls
pipelines
build: Remove .pnp.* files
qdot.tngl.sh
2 years ago
115d15a4
173f4c0e
+3
-14266
3 changed files
expand all
collapse all
unified
split
.gitignore
buttplug
buttplug-device-config
.pnp.cjs
.pnp.loader.mjs
+3
-1
.gitignore
···
18
18
**/*-ignore
19
19
**/tasks.json
20
20
21
21
-
.yarn*
21
21
+
.yarn*
22
22
+
23
23
+
**/.pnp.*
-12225
buttplug/buttplug-device-config/.pnp.cjs
···
1
1
-
#!/usr/bin/env node
2
2
-
/* eslint-disable */
3
3
-
"use strict";
4
4
-
5
5
-
function $$SETUP_STATE(hydrateRuntimeState, basePath) {
6
6
-
return hydrateRuntimeState(JSON.parse('{\
7
7
-
"__info": [\
8
8
-
"This file is automatically generated. Do not touch it, or risk",\
9
9
-
"your modifications being lost. We also recommend you not to read",\
10
10
-
"it either without using the @yarnpkg/pnp package, as the data layout",\
11
11
-
"is entirely unspecified and WILL change from a version to another."\
12
12
-
],\
13
13
-
"dependencyTreeRoots": [\
14
14
-
{\
15
15
-
"name": "buttplug-device-config",\
16
16
-
"reference": "workspace:."\
17
17
-
}\
18
18
-
],\
19
19
-
"enableTopLevelFallback": true,\
20
20
-
"ignorePatternData": "(^(?:\\\\.yarn\\\\/sdks(?:\\\\/(?!\\\\.{1,2}(?:\\\\/|$))(?:(?:(?!(?:^|\\\\/)\\\\.{1,2}(?:\\\\/|$)).)*?)|$))$)",\
21
21
-
"fallbackExclusionList": [\
22
22
-
["buttplug-device-config", ["workspace:."]]\
23
23
-
],\
24
24
-
"fallbackPool": [\
25
25
-
],\
26
26
-
"packageRegistryData": [\
27
27
-
[null, [\
28
28
-
[null, {\
29
29
-
"packageLocation": "./",\
30
30
-
"packageDependencies": [\
31
31
-
["ajv", "npm:8.11.2"],\
32
32
-
["ajv-cli", "virtual:171da54c57eee9c0b786e3da865a3e92eeb08e48749a971f406d389229e7ef63f3a8618cc44b1e2eac16187e1821567993b8e3d78e6bb9a4fc3848263d235f69#npm:5.0.0"],\
33
33
-
["js-yaml", "npm:4.1.0"],\
34
34
-
["trash-cli", "npm:5.0.0"]\
35
35
-
],\
36
36
-
"linkType": "SOFT"\
37
37
-
}]\
38
38
-
]],\
39
39
-
["@babel/code-frame", [\
40
40
-
["npm:7.14.5", {\
41
41
-
"packageLocation": "./.yarn/cache/@babel-code-frame-npm-7.14.5-4dc9115988-0adbe4f8d9.zip/node_modules/@babel/code-frame/",\
42
42
-
"packageDependencies": [\
43
43
-
["@babel/code-frame", "npm:7.14.5"],\
44
44
-
["@babel/highlight", "npm:7.14.5"]\
45
45
-
],\
46
46
-
"linkType": "HARD"\
47
47
-
}]\
48
48
-
]],\
49
49
-
["@babel/helper-validator-identifier", [\
50
50
-
["npm:7.14.5", {\
51
51
-
"packageLocation": "./.yarn/cache/@babel-helper-validator-identifier-npm-7.14.5-d29d30a813-6366bceab4.zip/node_modules/@babel/helper-validator-identifier/",\
52
52
-
"packageDependencies": [\
53
53
-
["@babel/helper-validator-identifier", "npm:7.14.5"]\
54
54
-
],\
55
55
-
"linkType": "HARD"\
56
56
-
}]\
57
57
-
]],\
58
58
-
["@babel/highlight", [\
59
59
-
["npm:7.14.5", {\
60
60
-
"packageLocation": "./.yarn/cache/@babel-highlight-npm-7.14.5-4a18106cbc-4e4b22fb88.zip/node_modules/@babel/highlight/",\
61
61
-
"packageDependencies": [\
62
62
-
["@babel/highlight", "npm:7.14.5"],\
63
63
-
["@babel/helper-validator-identifier", "npm:7.14.5"],\
64
64
-
["chalk", "npm:2.4.2"],\
65
65
-
["js-tokens", "npm:4.0.0"]\
66
66
-
],\
67
67
-
"linkType": "HARD"\
68
68
-
}]\
69
69
-
]],\
70
70
-
["@sindresorhus/chunkify", [\
71
71
-
["npm:0.2.0", {\
72
72
-
"packageLocation": "./.yarn/cache/@sindresorhus-chunkify-npm-0.2.0-abd3dba6c5-a17d8a385f.zip/node_modules/@sindresorhus/chunkify/",\
73
73
-
"packageDependencies": [\
74
74
-
["@sindresorhus/chunkify", "npm:0.2.0"]\
75
75
-
],\
76
76
-
"linkType": "HARD"\
77
77
-
}]\
78
78
-
]],\
79
79
-
["@sindresorhus/df", [\
80
80
-
["npm:1.0.1", {\
81
81
-
"packageLocation": "./.yarn/cache/@sindresorhus-df-npm-1.0.1-0588918928-0cb43b4ed9.zip/node_modules/@sindresorhus/df/",\
82
82
-
"packageDependencies": [\
83
83
-
["@sindresorhus/df", "npm:1.0.1"]\
84
84
-
],\
85
85
-
"linkType": "HARD"\
86
86
-
}],\
87
87
-
["npm:3.1.1", {\
88
88
-
"packageLocation": "./.yarn/cache/@sindresorhus-df-npm-3.1.1-bdd4bd6cbf-6378a8c62a.zip/node_modules/@sindresorhus/df/",\
89
89
-
"packageDependencies": [\
90
90
-
["@sindresorhus/df", "npm:3.1.1"],\
91
91
-
["execa", "npm:2.1.0"]\
92
92
-
],\
93
93
-
"linkType": "HARD"\
94
94
-
}]\
95
95
-
]],\
96
96
-
["@stroncium/procfs", [\
97
97
-
["npm:1.2.1", {\
98
98
-
"packageLocation": "./.yarn/cache/@stroncium-procfs-npm-1.2.1-c5daf856f1-cb09a4a478.zip/node_modules/@stroncium/procfs/",\
99
99
-
"packageDependencies": [\
100
100
-
["@stroncium/procfs", "npm:1.2.1"]\
101
101
-
],\
102
102
-
"linkType": "HARD"\
103
103
-
}]\
104
104
-
]],\
105
105
-
["@types/minimist", [\
106
106
-
["npm:1.2.2", {\
107
107
-
"packageLocation": "./.yarn/cache/@types-minimist-npm-1.2.2-a445de65da-b8da83c66e.zip/node_modules/@types/minimist/",\
108
108
-
"packageDependencies": [\
109
109
-
["@types/minimist", "npm:1.2.2"]\
110
110
-
],\
111
111
-
"linkType": "HARD"\
112
112
-
}]\
113
113
-
]],\
114
114
-
["@types/normalize-package-data", [\
115
115
-
["npm:2.4.0", {\
116
116
-
"packageLocation": "./.yarn/cache/@types-normalize-package-data-npm-2.4.0-ed928aaaa8-fd22ba86a1.zip/node_modules/@types/normalize-package-data/",\
117
117
-
"packageDependencies": [\
118
118
-
["@types/normalize-package-data", "npm:2.4.0"]\
119
119
-
],\
120
120
-
"linkType": "HARD"\
121
121
-
}]\
122
122
-
]],\
123
123
-
["aggregate-error", [\
124
124
-
["npm:4.0.1", {\
125
125
-
"packageLocation": "./.yarn/cache/aggregate-error-npm-4.0.1-12d0501fb7-bb3ffdfd13.zip/node_modules/aggregate-error/",\
126
126
-
"packageDependencies": [\
127
127
-
["aggregate-error", "npm:4.0.1"],\
128
128
-
["clean-stack", "npm:4.2.0"],\
129
129
-
["indent-string", "npm:5.0.0"]\
130
130
-
],\
131
131
-
"linkType": "HARD"\
132
132
-
}]\
133
133
-
]],\
134
134
-
["ajv", [\
135
135
-
["npm:8.11.2", {\
136
136
-
"packageLocation": "./.yarn/cache/ajv-npm-8.11.2-96b35a945e-53435bf79e.zip/node_modules/ajv/",\
137
137
-
"packageDependencies": [\
138
138
-
["ajv", "npm:8.11.2"],\
139
139
-
["fast-deep-equal", "npm:3.1.3"],\
140
140
-
["json-schema-traverse", "npm:1.0.0"],\
141
141
-
["require-from-string", "npm:2.0.2"],\
142
142
-
["uri-js", "npm:4.2.2"]\
143
143
-
],\
144
144
-
"linkType": "HARD"\
145
145
-
}],\
146
146
-
["npm:8.6.1", {\
147
147
-
"packageLocation": "./.yarn/cache/ajv-npm-8.6.1-cc38a5d5d7-e091264ff6.zip/node_modules/ajv/",\
148
148
-
"packageDependencies": [\
149
149
-
["ajv", "npm:8.6.1"],\
150
150
-
["fast-deep-equal", "npm:3.1.3"],\
151
151
-
["json-schema-traverse", "npm:1.0.0"],\
152
152
-
["require-from-string", "npm:2.0.2"],\
153
153
-
["uri-js", "npm:4.2.2"]\
154
154
-
],\
155
155
-
"linkType": "HARD"\
156
156
-
}]\
157
157
-
]],\
158
158
-
["ajv-cli", [\
159
159
-
["npm:5.0.0", {\
160
160
-
"packageLocation": "./.yarn/cache/ajv-cli-npm-5.0.0-e12d6f3c52-e8ba29f618.zip/node_modules/ajv-cli/",\
161
161
-
"packageDependencies": [\
162
162
-
["ajv-cli", "npm:5.0.0"]\
163
163
-
],\
164
164
-
"linkType": "SOFT"\
165
165
-
}],\
166
166
-
["virtual:171da54c57eee9c0b786e3da865a3e92eeb08e48749a971f406d389229e7ef63f3a8618cc44b1e2eac16187e1821567993b8e3d78e6bb9a4fc3848263d235f69#npm:5.0.0", {\
167
167
-
"packageLocation": "./.yarn/__virtual__/ajv-cli-virtual-f71f534614/0/cache/ajv-cli-npm-5.0.0-e12d6f3c52-e8ba29f618.zip/node_modules/ajv-cli/",\
168
168
-
"packageDependencies": [\
169
169
-
["ajv-cli", "virtual:171da54c57eee9c0b786e3da865a3e92eeb08e48749a971f406d389229e7ef63f3a8618cc44b1e2eac16187e1821567993b8e3d78e6bb9a4fc3848263d235f69#npm:5.0.0"],\
170
170
-
["@types/ts-node", null],\
171
171
-
["ajv", "npm:8.6.1"],\
172
172
-
["fast-json-patch", "npm:2.2.1"],\
173
173
-
["glob", "npm:7.1.7"],\
174
174
-
["js-yaml", "npm:3.14.1"],\
175
175
-
["json-schema-migrate", "npm:2.0.0"],\
176
176
-
["json5", "npm:2.2.2"],\
177
177
-
["minimist", "npm:1.2.6"],\
178
178
-
["ts-node", null]\
179
179
-
],\
180
180
-
"packagePeers": [\
181
181
-
"@types/ts-node",\
182
182
-
"ts-node"\
183
183
-
],\
184
184
-
"linkType": "HARD"\
185
185
-
}]\
186
186
-
]],\
187
187
-
["ansi-styles", [\
188
188
-
["npm:3.2.1", {\
189
189
-
"packageLocation": "./.yarn/cache/ansi-styles-npm-3.2.1-8cb8107983-d85ade01c1.zip/node_modules/ansi-styles/",\
190
190
-
"packageDependencies": [\
191
191
-
["ansi-styles", "npm:3.2.1"],\
192
192
-
["color-convert", "npm:1.9.3"]\
193
193
-
],\
194
194
-
"linkType": "HARD"\
195
195
-
}]\
196
196
-
]],\
197
197
-
["argparse", [\
198
198
-
["npm:1.0.10", {\
199
199
-
"packageLocation": "./.yarn/cache/argparse-npm-1.0.10-528934e59d-7ca6e45583.zip/node_modules/argparse/",\
200
200
-
"packageDependencies": [\
201
201
-
["argparse", "npm:1.0.10"],\
202
202
-
["sprintf-js", "npm:1.0.3"]\
203
203
-
],\
204
204
-
"linkType": "HARD"\
205
205
-
}],\
206
206
-
["npm:2.0.1", {\
207
207
-
"packageLocation": "./.yarn/cache/argparse-npm-2.0.1-faff7999e6-83644b5649.zip/node_modules/argparse/",\
208
208
-
"packageDependencies": [\
209
209
-
["argparse", "npm:2.0.1"]\
210
210
-
],\
211
211
-
"linkType": "HARD"\
212
212
-
}]\
213
213
-
]],\
214
214
-
["array-union", [\
215
215
-
["npm:1.0.2", {\
216
216
-
"packageLocation": "./.yarn/cache/array-union-npm-1.0.2-cc61ee268f-82cec6421b.zip/node_modules/array-union/",\
217
217
-
"packageDependencies": [\
218
218
-
["array-union", "npm:1.0.2"],\
219
219
-
["array-uniq", "npm:1.0.3"]\
220
220
-
],\
221
221
-
"linkType": "HARD"\
222
222
-
}]\
223
223
-
]],\
224
224
-
["array-uniq", [\
225
225
-
["npm:1.0.3", {\
226
226
-
"packageLocation": "./.yarn/cache/array-uniq-npm-1.0.3-e7f5d6f3a1-1625f06b09.zip/node_modules/array-uniq/",\
227
227
-
"packageDependencies": [\
228
228
-
["array-uniq", "npm:1.0.3"]\
229
229
-
],\
230
230
-
"linkType": "HARD"\
231
231
-
}]\
232
232
-
]],\
233
233
-
["arrify", [\
234
234
-
["npm:1.0.1", {\
235
235
-
"packageLocation": "./.yarn/cache/arrify-npm-1.0.1-affafba9fe-745075dd4a.zip/node_modules/arrify/",\
236
236
-
"packageDependencies": [\
237
237
-
["arrify", "npm:1.0.1"]\
238
238
-
],\
239
239
-
"linkType": "HARD"\
240
240
-
}]\
241
241
-
]],\
242
242
-
["balanced-match", [\
243
243
-
["npm:1.0.2", {\
244
244
-
"packageLocation": "./.yarn/cache/balanced-match-npm-1.0.2-a53c126459-9706c088a2.zip/node_modules/balanced-match/",\
245
245
-
"packageDependencies": [\
246
246
-
["balanced-match", "npm:1.0.2"]\
247
247
-
],\
248
248
-
"linkType": "HARD"\
249
249
-
}]\
250
250
-
]],\
251
251
-
["brace-expansion", [\
252
252
-
["npm:1.1.11", {\
253
253
-
"packageLocation": "./.yarn/cache/brace-expansion-npm-1.1.11-fb95eb05ad-faf34a7bb0.zip/node_modules/brace-expansion/",\
254
254
-
"packageDependencies": [\
255
255
-
["brace-expansion", "npm:1.1.11"],\
256
256
-
["balanced-match", "npm:1.0.2"],\
257
257
-
["concat-map", "npm:0.0.1"]\
258
258
-
],\
259
259
-
"linkType": "HARD"\
260
260
-
}]\
261
261
-
]],\
262
262
-
["buttplug-device-config", [\
263
263
-
["workspace:.", {\
264
264
-
"packageLocation": "./",\
265
265
-
"packageDependencies": [\
266
266
-
["buttplug-device-config", "workspace:."],\
267
267
-
["ajv", "npm:8.11.2"],\
268
268
-
["ajv-cli", "virtual:171da54c57eee9c0b786e3da865a3e92eeb08e48749a971f406d389229e7ef63f3a8618cc44b1e2eac16187e1821567993b8e3d78e6bb9a4fc3848263d235f69#npm:5.0.0"],\
269
269
-
["js-yaml", "npm:4.1.0"],\
270
270
-
["trash-cli", "npm:5.0.0"]\
271
271
-
],\
272
272
-
"linkType": "SOFT"\
273
273
-
}]\
274
274
-
]],\
275
275
-
["camelcase", [\
276
276
-
["npm:6.3.0", {\
277
277
-
"packageLocation": "./.yarn/cache/camelcase-npm-6.3.0-e5e42a0d15-8c96818a90.zip/node_modules/camelcase/",\
278
278
-
"packageDependencies": [\
279
279
-
["camelcase", "npm:6.3.0"]\
280
280
-
],\
281
281
-
"linkType": "HARD"\
282
282
-
}]\
283
283
-
]],\
284
284
-
["camelcase-keys", [\
285
285
-
["npm:7.0.2", {\
286
286
-
"packageLocation": "./.yarn/cache/camelcase-keys-npm-7.0.2-36fbc5a8f7-b5821cc48d.zip/node_modules/camelcase-keys/",\
287
287
-
"packageDependencies": [\
288
288
-
["camelcase-keys", "npm:7.0.2"],\
289
289
-
["camelcase", "npm:6.3.0"],\
290
290
-
["map-obj", "npm:4.3.0"],\
291
291
-
["quick-lru", "npm:5.1.1"],\
292
292
-
["type-fest", "npm:1.4.0"]\
293
293
-
],\
294
294
-
"linkType": "HARD"\
295
295
-
}]\
296
296
-
]],\
297
297
-
["chalk", [\
298
298
-
["npm:2.4.2", {\
299
299
-
"packageLocation": "./.yarn/cache/chalk-npm-2.4.2-3ea16dd91e-ec3661d38f.zip/node_modules/chalk/",\
300
300
-
"packageDependencies": [\
301
301
-
["chalk", "npm:2.4.2"],\
302
302
-
["ansi-styles", "npm:3.2.1"],\
303
303
-
["escape-string-regexp", "npm:1.0.5"],\
304
304
-
["supports-color", "npm:5.5.0"]\
305
305
-
],\
306
306
-
"linkType": "HARD"\
307
307
-
}]\
308
308
-
]],\
309
309
-
["clean-stack", [\
310
310
-
["npm:4.2.0", {\
311
311
-
"packageLocation": "./.yarn/cache/clean-stack-npm-4.2.0-bb0dff47b2-373f656a31.zip/node_modules/clean-stack/",\
312
312
-
"packageDependencies": [\
313
313
-
["clean-stack", "npm:4.2.0"],\
314
314
-
["escape-string-regexp", "npm:5.0.0"]\
315
315
-
],\
316
316
-
"linkType": "HARD"\
317
317
-
}]\
318
318
-
]],\
319
319
-
["color-convert", [\
320
320
-
["npm:1.9.3", {\
321
321
-
"packageLocation": "./.yarn/cache/color-convert-npm-1.9.3-1fe690075e-fd7a64a17c.zip/node_modules/color-convert/",\
322
322
-
"packageDependencies": [\
323
323
-
["color-convert", "npm:1.9.3"],\
324
324
-
["color-name", "npm:1.1.3"]\
325
325
-
],\
326
326
-
"linkType": "HARD"\
327
327
-
}]\
328
328
-
]],\
329
329
-
["color-name", [\
330
330
-
["npm:1.1.3", {\
331
331
-
"packageLocation": "./.yarn/cache/color-name-npm-1.1.3-728b7b5d39-09c5d3e33d.zip/node_modules/color-name/",\
332
332
-
"packageDependencies": [\
333
333
-
["color-name", "npm:1.1.3"]\
334
334
-
],\
335
335
-
"linkType": "HARD"\
336
336
-
}]\
337
337
-
]],\
338
338
-
["concat-map", [\
339
339
-
["npm:0.0.1", {\
340
340
-
"packageLocation": "./.yarn/cache/concat-map-npm-0.0.1-85a921b7ee-902a9f5d89.zip/node_modules/concat-map/",\
341
341
-
"packageDependencies": [\
342
342
-
["concat-map", "npm:0.0.1"]\
343
343
-
],\
344
344
-
"linkType": "HARD"\
345
345
-
}]\
346
346
-
]],\
347
347
-
["cross-spawn", [\
348
348
-
["npm:7.0.3", {\
349
349
-
"packageLocation": "./.yarn/cache/cross-spawn-npm-7.0.3-e4ff3e65b3-671cc7c728.zip/node_modules/cross-spawn/",\
350
350
-
"packageDependencies": [\
351
351
-
["cross-spawn", "npm:7.0.3"],\
352
352
-
["path-key", "npm:3.1.1"],\
353
353
-
["shebang-command", "npm:2.0.0"],\
354
354
-
["which", "npm:2.0.2"]\
355
355
-
],\
356
356
-
"linkType": "HARD"\
357
357
-
}]\
358
358
-
]],\
359
359
-
["decamelize", [\
360
360
-
["npm:1.2.0", {\
361
361
-
"packageLocation": "./.yarn/cache/decamelize-npm-1.2.0-c5a2fdc622-ad8c51a7e7.zip/node_modules/decamelize/",\
362
362
-
"packageDependencies": [\
363
363
-
["decamelize", "npm:1.2.0"]\
364
364
-
],\
365
365
-
"linkType": "HARD"\
366
366
-
}],\
367
367
-
["npm:5.0.1", {\
368
368
-
"packageLocation": "./.yarn/cache/decamelize-npm-5.0.1-2fde8c926c-7c3b1ed4b3.zip/node_modules/decamelize/",\
369
369
-
"packageDependencies": [\
370
370
-
["decamelize", "npm:5.0.1"]\
371
371
-
],\
372
372
-
"linkType": "HARD"\
373
373
-
}]\
374
374
-
]],\
375
375
-
["decamelize-keys", [\
376
376
-
["npm:1.1.0", {\
377
377
-
"packageLocation": "./.yarn/cache/decamelize-keys-npm-1.1.0-75168ffadd-8bc5d32e03.zip/node_modules/decamelize-keys/",\
378
378
-
"packageDependencies": [\
379
379
-
["decamelize-keys", "npm:1.1.0"],\
380
380
-
["decamelize", "npm:1.2.0"],\
381
381
-
["map-obj", "npm:1.0.1"]\
382
382
-
],\
383
383
-
"linkType": "HARD"\
384
384
-
}]\
385
385
-
]],\
386
386
-
["dir-glob", [\
387
387
-
["npm:2.2.2", {\
388
388
-
"packageLocation": "./.yarn/cache/dir-glob-npm-2.2.2-932e08b501-3aa48714a9.zip/node_modules/dir-glob/",\
389
389
-
"packageDependencies": [\
390
390
-
["dir-glob", "npm:2.2.2"],\
391
391
-
["path-type", "npm:3.0.0"]\
392
392
-
],\
393
393
-
"linkType": "HARD"\
394
394
-
}]\
395
395
-
]],\
396
396
-
["end-of-stream", [\
397
397
-
["npm:1.4.4", {\
398
398
-
"packageLocation": "./.yarn/cache/end-of-stream-npm-1.4.4-497fc6dee1-530a5a5a1e.zip/node_modules/end-of-stream/",\
399
399
-
"packageDependencies": [\
400
400
-
["end-of-stream", "npm:1.4.4"],\
401
401
-
["once", "npm:1.4.0"]\
402
402
-
],\
403
403
-
"linkType": "HARD"\
404
404
-
}]\
405
405
-
]],\
406
406
-
["error-ex", [\
407
407
-
["npm:1.3.2", {\
408
408
-
"packageLocation": "./.yarn/cache/error-ex-npm-1.3.2-5654f80c0f-c1c2b8b65f.zip/node_modules/error-ex/",\
409
409
-
"packageDependencies": [\
410
410
-
["error-ex", "npm:1.3.2"],\
411
411
-
["is-arrayish", "npm:0.2.1"]\
412
412
-
],\
413
413
-
"linkType": "HARD"\
414
414
-
}]\
415
415
-
]],\
416
416
-
["escape-string-regexp", [\
417
417
-
["npm:1.0.5", {\
418
418
-
"packageLocation": "./.yarn/cache/escape-string-regexp-npm-1.0.5-3284de402f-6092fda75c.zip/node_modules/escape-string-regexp/",\
419
419
-
"packageDependencies": [\
420
420
-
["escape-string-regexp", "npm:1.0.5"]\
421
421
-
],\
422
422
-
"linkType": "HARD"\
423
423
-
}],\
424
424
-
["npm:5.0.0", {\
425
425
-
"packageLocation": "./.yarn/cache/escape-string-regexp-npm-5.0.0-a663e825ce-20daabe197.zip/node_modules/escape-string-regexp/",\
426
426
-
"packageDependencies": [\
427
427
-
["escape-string-regexp", "npm:5.0.0"]\
428
428
-
],\
429
429
-
"linkType": "HARD"\
430
430
-
}]\
431
431
-
]],\
432
432
-
["esprima", [\
433
433
-
["npm:4.0.1", {\
434
434
-
"packageLocation": "./.yarn/cache/esprima-npm-4.0.1-1084e98778-b45bc805a6.zip/node_modules/esprima/",\
435
435
-
"packageDependencies": [\
436
436
-
["esprima", "npm:4.0.1"]\
437
437
-
],\
438
438
-
"linkType": "HARD"\
439
439
-
}]\
440
440
-
]],\
441
441
-
["execa", [\
442
442
-
["npm:2.1.0", {\
443
443
-
"packageLocation": "./.yarn/cache/execa-npm-2.1.0-9c7d62b9ab-93af9b816a.zip/node_modules/execa/",\
444
444
-
"packageDependencies": [\
445
445
-
["execa", "npm:2.1.0"],\
446
446
-
["cross-spawn", "npm:7.0.3"],\
447
447
-
["get-stream", "npm:5.2.0"],\
448
448
-
["is-stream", "npm:2.0.0"],\
449
449
-
["merge-stream", "npm:2.0.0"],\
450
450
-
["npm-run-path", "npm:3.1.0"],\
451
451
-
["onetime", "npm:5.1.2"],\
452
452
-
["p-finally", "npm:2.0.1"],\
453
453
-
["signal-exit", "npm:3.0.3"],\
454
454
-
["strip-final-newline", "npm:2.0.0"]\
455
455
-
],\
456
456
-
"linkType": "HARD"\
457
457
-
}]\
458
458
-
]],\
459
459
-
["fast-deep-equal", [\
460
460
-
["npm:2.0.1", {\
461
461
-
"packageLocation": "./.yarn/cache/fast-deep-equal-npm-2.0.1-9c01e08a62-b701835a87.zip/node_modules/fast-deep-equal/",\
462
462
-
"packageDependencies": [\
463
463
-
["fast-deep-equal", "npm:2.0.1"]\
464
464
-
],\
465
465
-
"linkType": "HARD"\
466
466
-
}],\
467
467
-
["npm:3.1.3", {\
468
468
-
"packageLocation": "./.yarn/cache/fast-deep-equal-npm-3.1.3-790edcfcf5-e21a9d8d84.zip/node_modules/fast-deep-equal/",\
469
469
-
"packageDependencies": [\
470
470
-
["fast-deep-equal", "npm:3.1.3"]\
471
471
-
],\
472
472
-
"linkType": "HARD"\
473
473
-
}]\
474
474
-
]],\
475
475
-
["fast-json-patch", [\
476
476
-
["npm:2.2.1", {\
477
477
-
"packageLocation": "./.yarn/cache/fast-json-patch-npm-2.2.1-63b021bb37-955aebb3f8.zip/node_modules/fast-json-patch/",\
478
478
-
"packageDependencies": [\
479
479
-
["fast-json-patch", "npm:2.2.1"],\
480
480
-
["fast-deep-equal", "npm:2.0.1"]\
481
481
-
],\
482
482
-
"linkType": "HARD"\
483
483
-
}]\
484
484
-
]],\
485
485
-
["find-up", [\
486
486
-
["npm:5.0.0", {\
487
487
-
"packageLocation": "./.yarn/cache/find-up-npm-5.0.0-e03e9b796d-07955e3573.zip/node_modules/find-up/",\
488
488
-
"packageDependencies": [\
489
489
-
["find-up", "npm:5.0.0"],\
490
490
-
["locate-path", "npm:6.0.0"],\
491
491
-
["path-exists", "npm:4.0.0"]\
492
492
-
],\
493
493
-
"linkType": "HARD"\
494
494
-
}]\
495
495
-
]],\
496
496
-
["fs.realpath", [\
497
497
-
["npm:1.0.0", {\
498
498
-
"packageLocation": "./.yarn/cache/fs.realpath-npm-1.0.0-c8f05d8126-99ddea01a7.zip/node_modules/fs.realpath/",\
499
499
-
"packageDependencies": [\
500
500
-
["fs.realpath", "npm:1.0.0"]\
501
501
-
],\
502
502
-
"linkType": "HARD"\
503
503
-
}]\
504
504
-
]],\
505
505
-
["function-bind", [\
506
506
-
["npm:1.1.1", {\
507
507
-
"packageLocation": "./.yarn/cache/function-bind-npm-1.1.1-b56b322ae9-b32fbaebb3.zip/node_modules/function-bind/",\
508
508
-
"packageDependencies": [\
509
509
-
["function-bind", "npm:1.1.1"]\
510
510
-
],\
511
511
-
"linkType": "HARD"\
512
512
-
}]\
513
513
-
]],\
514
514
-
["get-stream", [\
515
515
-
["npm:5.2.0", {\
516
516
-
"packageLocation": "./.yarn/cache/get-stream-npm-5.2.0-2cfd3b452b-8bc1a23174.zip/node_modules/get-stream/",\
517
517
-
"packageDependencies": [\
518
518
-
["get-stream", "npm:5.2.0"],\
519
519
-
["pump", "npm:3.0.0"]\
520
520
-
],\
521
521
-
"linkType": "HARD"\
522
522
-
}]\
523
523
-
]],\
524
524
-
["glob", [\
525
525
-
["npm:7.1.3", {\
526
526
-
"packageLocation": "./.yarn/cache/glob-npm-7.1.3-c65cc4bde2-d72a834a39.zip/node_modules/glob/",\
527
527
-
"packageDependencies": [\
528
528
-
["glob", "npm:7.1.3"],\
529
529
-
["fs.realpath", "npm:1.0.0"],\
530
530
-
["inflight", "npm:1.0.6"],\
531
531
-
["inherits", "npm:2.0.3"],\
532
532
-
["minimatch", "npm:3.1.2"],\
533
533
-
["once", "npm:1.4.0"],\
534
534
-
["path-is-absolute", "npm:1.0.1"]\
535
535
-
],\
536
536
-
"linkType": "HARD"\
537
537
-
}],\
538
538
-
["npm:7.1.7", {\
539
539
-
"packageLocation": "./.yarn/cache/glob-npm-7.1.7-5698ad9c48-b61f48973b.zip/node_modules/glob/",\
540
540
-
"packageDependencies": [\
541
541
-
["glob", "npm:7.1.7"],\
542
542
-
["fs.realpath", "npm:1.0.0"],\
543
543
-
["inflight", "npm:1.0.6"],\
544
544
-
["inherits", "npm:2.0.3"],\
545
545
-
["minimatch", "npm:3.1.2"],\
546
546
-
["once", "npm:1.4.0"],\
547
547
-
["path-is-absolute", "npm:1.0.1"]\
548
548
-
],\
549
549
-
"linkType": "HARD"\
550
550
-
}]\
551
551
-
]],\
552
552
-
["globby", [\
553
553
-
["npm:7.1.1", {\
554
554
-
"packageLocation": "./.yarn/cache/globby-npm-7.1.1-6c96505a27-f0eba08a08.zip/node_modules/globby/",\
555
555
-
"packageDependencies": [\
556
556
-
["globby", "npm:7.1.1"],\
557
557
-
["array-union", "npm:1.0.2"],\
558
558
-
["dir-glob", "npm:2.2.2"],\
559
559
-
["glob", "npm:7.1.3"],\
560
560
-
["ignore", "npm:3.3.10"],\
561
561
-
["pify", "npm:3.0.0"],\
562
562
-
["slash", "npm:1.0.0"]\
563
563
-
],\
564
564
-
"linkType": "HARD"\
565
565
-
}]\
566
566
-
]],\
567
567
-
["hard-rejection", [\
568
568
-
["npm:2.1.0", {\
569
569
-
"packageLocation": "./.yarn/cache/hard-rejection-npm-2.1.0-a80f2a977d-7baaf80a0c.zip/node_modules/hard-rejection/",\
570
570
-
"packageDependencies": [\
571
571
-
["hard-rejection", "npm:2.1.0"]\
572
572
-
],\
573
573
-
"linkType": "HARD"\
574
574
-
}]\
575
575
-
]],\
576
576
-
["has", [\
577
577
-
["npm:1.0.3", {\
578
578
-
"packageLocation": "./.yarn/cache/has-npm-1.0.3-b7f00631c1-b9ad53d53b.zip/node_modules/has/",\
579
579
-
"packageDependencies": [\
580
580
-
["has", "npm:1.0.3"],\
581
581
-
["function-bind", "npm:1.1.1"]\
582
582
-
],\
583
583
-
"linkType": "HARD"\
584
584
-
}]\
585
585
-
]],\
586
586
-
["has-flag", [\
587
587
-
["npm:3.0.0", {\
588
588
-
"packageLocation": "./.yarn/cache/has-flag-npm-3.0.0-16ac11fe05-4a15638b45.zip/node_modules/has-flag/",\
589
589
-
"packageDependencies": [\
590
590
-
["has-flag", "npm:3.0.0"]\
591
591
-
],\
592
592
-
"linkType": "HARD"\
593
593
-
}]\
594
594
-
]],\
595
595
-
["hosted-git-info", [\
596
596
-
["npm:4.0.2", {\
597
597
-
"packageLocation": "./.yarn/cache/hosted-git-info-npm-4.0.2-7330924e0c-d1b2d77203.zip/node_modules/hosted-git-info/",\
598
598
-
"packageDependencies": [\
599
599
-
["hosted-git-info", "npm:4.0.2"],\
600
600
-
["lru-cache", "npm:6.0.0"]\
601
601
-
],\
602
602
-
"linkType": "HARD"\
603
603
-
}]\
604
604
-
]],\
605
605
-
["ignore", [\
606
606
-
["npm:3.3.10", {\
607
607
-
"packageLocation": "./.yarn/cache/ignore-npm-3.3.10-baaf3519b5-23e8cc776e.zip/node_modules/ignore/",\
608
608
-
"packageDependencies": [\
609
609
-
["ignore", "npm:3.3.10"]\
610
610
-
],\
611
611
-
"linkType": "HARD"\
612
612
-
}]\
613
613
-
]],\
614
614
-
["indent-string", [\
615
615
-
["npm:5.0.0", {\
616
616
-
"packageLocation": "./.yarn/cache/indent-string-npm-5.0.0-35eaa3b052-e466c27b63.zip/node_modules/indent-string/",\
617
617
-
"packageDependencies": [\
618
618
-
["indent-string", "npm:5.0.0"]\
619
619
-
],\
620
620
-
"linkType": "HARD"\
621
621
-
}]\
622
622
-
]],\
623
623
-
["inflight", [\
624
624
-
["npm:1.0.6", {\
625
625
-
"packageLocation": "./.yarn/cache/inflight-npm-1.0.6-ccedb4b908-f4f76aa072.zip/node_modules/inflight/",\
626
626
-
"packageDependencies": [\
627
627
-
["inflight", "npm:1.0.6"],\
628
628
-
["once", "npm:1.4.0"],\
629
629
-
["wrappy", "npm:1.0.2"]\
630
630
-
],\
631
631
-
"linkType": "HARD"\
632
632
-
}]\
633
633
-
]],\
634
634
-
["inherits", [\
635
635
-
["npm:2.0.3", {\
636
636
-
"packageLocation": "./.yarn/cache/inherits-npm-2.0.3-401e64b080-78cb8d7d85.zip/node_modules/inherits/",\
637
637
-
"packageDependencies": [\
638
638
-
["inherits", "npm:2.0.3"]\
639
639
-
],\
640
640
-
"linkType": "HARD"\
641
641
-
}]\
642
642
-
]],\
643
643
-
["is-arrayish", [\
644
644
-
["npm:0.2.1", {\
645
645
-
"packageLocation": "./.yarn/cache/is-arrayish-npm-0.2.1-23927dfb15-eef4417e3c.zip/node_modules/is-arrayish/",\
646
646
-
"packageDependencies": [\
647
647
-
["is-arrayish", "npm:0.2.1"]\
648
648
-
],\
649
649
-
"linkType": "HARD"\
650
650
-
}]\
651
651
-
]],\
652
652
-
["is-core-module", [\
653
653
-
["npm:2.11.0", {\
654
654
-
"packageLocation": "./.yarn/cache/is-core-module-npm-2.11.0-70061e141a-f96fd490c6.zip/node_modules/is-core-module/",\
655
655
-
"packageDependencies": [\
656
656
-
["is-core-module", "npm:2.11.0"],\
657
657
-
["has", "npm:1.0.3"]\
658
658
-
],\
659
659
-
"linkType": "HARD"\
660
660
-
}]\
661
661
-
]],\
662
662
-
["is-path-inside", [\
663
663
-
["npm:4.0.0", {\
664
664
-
"packageLocation": "./.yarn/cache/is-path-inside-npm-4.0.0-2af2bde69d-8810fa11c5.zip/node_modules/is-path-inside/",\
665
665
-
"packageDependencies": [\
666
666
-
["is-path-inside", "npm:4.0.0"]\
667
667
-
],\
668
668
-
"linkType": "HARD"\
669
669
-
}]\
670
670
-
]],\
671
671
-
["is-plain-obj", [\
672
672
-
["npm:1.1.0", {\
673
673
-
"packageLocation": "./.yarn/cache/is-plain-obj-npm-1.1.0-1046f64c0b-0ee0480779.zip/node_modules/is-plain-obj/",\
674
674
-
"packageDependencies": [\
675
675
-
["is-plain-obj", "npm:1.1.0"]\
676
676
-
],\
677
677
-
"linkType": "HARD"\
678
678
-
}]\
679
679
-
]],\
680
680
-
["is-stream", [\
681
681
-
["npm:2.0.0", {\
682
682
-
"packageLocation": "./.yarn/cache/is-stream-npm-2.0.0-1401f82ad7-4dc47738e2.zip/node_modules/is-stream/",\
683
683
-
"packageDependencies": [\
684
684
-
["is-stream", "npm:2.0.0"]\
685
685
-
],\
686
686
-
"linkType": "HARD"\
687
687
-
}]\
688
688
-
]],\
689
689
-
["isexe", [\
690
690
-
["npm:2.0.0", {\
691
691
-
"packageLocation": "./.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip/node_modules/isexe/",\
692
692
-
"packageDependencies": [\
693
693
-
["isexe", "npm:2.0.0"]\
694
694
-
],\
695
695
-
"linkType": "HARD"\
696
696
-
}]\
697
697
-
]],\
698
698
-
["js-tokens", [\
699
699
-
["npm:4.0.0", {\
700
700
-
"packageLocation": "./.yarn/cache/js-tokens-npm-4.0.0-0ac852e9e2-8a95213a5a.zip/node_modules/js-tokens/",\
701
701
-
"packageDependencies": [\
702
702
-
["js-tokens", "npm:4.0.0"]\
703
703
-
],\
704
704
-
"linkType": "HARD"\
705
705
-
}]\
706
706
-
]],\
707
707
-
["js-yaml", [\
708
708
-
["npm:3.14.1", {\
709
709
-
"packageLocation": "./.yarn/cache/js-yaml-npm-3.14.1-b968c6095e-bef146085f.zip/node_modules/js-yaml/",\
710
710
-
"packageDependencies": [\
711
711
-
["js-yaml", "npm:3.14.1"],\
712
712
-
["argparse", "npm:1.0.10"],\
713
713
-
["esprima", "npm:4.0.1"]\
714
714
-
],\
715
715
-
"linkType": "HARD"\
716
716
-
}],\
717
717
-
["npm:4.1.0", {\
718
718
-
"packageLocation": "./.yarn/cache/js-yaml-npm-4.1.0-3606f32312-c7830dfd45.zip/node_modules/js-yaml/",\
719
719
-
"packageDependencies": [\
720
720
-
["js-yaml", "npm:4.1.0"],\
721
721
-
["argparse", "npm:2.0.1"]\
722
722
-
],\
723
723
-
"linkType": "HARD"\
724
724
-
}]\
725
725
-
]],\
726
726
-
["json-parse-even-better-errors", [\
727
727
-
["npm:2.3.1", {\
728
728
-
"packageLocation": "./.yarn/cache/json-parse-even-better-errors-npm-2.3.1-144d62256e-798ed4cf33.zip/node_modules/json-parse-even-better-errors/",\
729
729
-
"packageDependencies": [\
730
730
-
["json-parse-even-better-errors", "npm:2.3.1"]\
731
731
-
],\
732
732
-
"linkType": "HARD"\
733
733
-
}]\
734
734
-
]],\
735
735
-
["json-schema-migrate", [\
736
736
-
["npm:2.0.0", {\
737
737
-
"packageLocation": "./.yarn/cache/json-schema-migrate-npm-2.0.0-87745c8332-21537305f3.zip/node_modules/json-schema-migrate/",\
738
738
-
"packageDependencies": [\
739
739
-
["json-schema-migrate", "npm:2.0.0"],\
740
740
-
["ajv", "npm:8.6.1"]\
741
741
-
],\
742
742
-
"linkType": "HARD"\
743
743
-
}]\
744
744
-
]],\
745
745
-
["json-schema-traverse", [\
746
746
-
["npm:1.0.0", {\
747
747
-
"packageLocation": "./.yarn/cache/json-schema-traverse-npm-1.0.0-fb3684f4f0-02f2f466cd.zip/node_modules/json-schema-traverse/",\
748
748
-
"packageDependencies": [\
749
749
-
["json-schema-traverse", "npm:1.0.0"]\
750
750
-
],\
751
751
-
"linkType": "HARD"\
752
752
-
}]\
753
753
-
]],\
754
754
-
["json5", [\
755
755
-
["npm:2.2.2", {\
756
756
-
"packageLocation": "./.yarn/cache/json5-npm-2.2.2-b047c53fcb-9a878d66b7.zip/node_modules/json5/",\
757
757
-
"packageDependencies": [\
758
758
-
["json5", "npm:2.2.2"]\
759
759
-
],\
760
760
-
"linkType": "HARD"\
761
761
-
}]\
762
762
-
]],\
763
763
-
["kind-of", [\
764
764
-
["npm:6.0.3", {\
765
765
-
"packageLocation": "./.yarn/cache/kind-of-npm-6.0.3-ab15f36220-3ab01e7b1d.zip/node_modules/kind-of/",\
766
766
-
"packageDependencies": [\
767
767
-
["kind-of", "npm:6.0.3"]\
768
768
-
],\
769
769
-
"linkType": "HARD"\
770
770
-
}]\
771
771
-
]],\
772
772
-
["lines-and-columns", [\
773
773
-
["npm:1.1.6", {\
774
774
-
"packageLocation": "./.yarn/cache/lines-and-columns-npm-1.1.6-23e74fab67-198a5436b1.zip/node_modules/lines-and-columns/",\
775
775
-
"packageDependencies": [\
776
776
-
["lines-and-columns", "npm:1.1.6"]\
777
777
-
],\
778
778
-
"linkType": "HARD"\
779
779
-
}]\
780
780
-
]],\
781
781
-
["locate-path", [\
782
782
-
["npm:6.0.0", {\
783
783
-
"packageLocation": "./.yarn/cache/locate-path-npm-6.0.0-06a1e4c528-72eb661788.zip/node_modules/locate-path/",\
784
784
-
"packageDependencies": [\
785
785
-
["locate-path", "npm:6.0.0"],\
786
786
-
["p-locate", "npm:5.0.0"]\
787
787
-
],\
788
788
-
"linkType": "HARD"\
789
789
-
}]\
790
790
-
]],\
791
791
-
["lru-cache", [\
792
792
-
["npm:6.0.0", {\
793
793
-
"packageLocation": "./.yarn/cache/lru-cache-npm-6.0.0-b4c8668fe1-f97f499f89.zip/node_modules/lru-cache/",\
794
794
-
"packageDependencies": [\
795
795
-
["lru-cache", "npm:6.0.0"],\
796
796
-
["yallist", "npm:4.0.0"]\
797
797
-
],\
798
798
-
"linkType": "HARD"\
799
799
-
}]\
800
800
-
]],\
801
801
-
["map-obj", [\
802
802
-
["npm:1.0.1", {\
803
803
-
"packageLocation": "./.yarn/cache/map-obj-npm-1.0.1-fa55100fac-9949e7baec.zip/node_modules/map-obj/",\
804
804
-
"packageDependencies": [\
805
805
-
["map-obj", "npm:1.0.1"]\
806
806
-
],\
807
807
-
"linkType": "HARD"\
808
808
-
}],\
809
809
-
["npm:4.3.0", {\
810
810
-
"packageLocation": "./.yarn/cache/map-obj-npm-4.3.0-d53e32935d-fbc554934d.zip/node_modules/map-obj/",\
811
811
-
"packageDependencies": [\
812
812
-
["map-obj", "npm:4.3.0"]\
813
813
-
],\
814
814
-
"linkType": "HARD"\
815
815
-
}]\
816
816
-
]],\
817
817
-
["meow", [\
818
818
-
["npm:10.1.5", {\
819
819
-
"packageLocation": "./.yarn/cache/meow-npm-10.1.5-a1bab640d1-dd5f0caa4a.zip/node_modules/meow/",\
820
820
-
"packageDependencies": [\
821
821
-
["meow", "npm:10.1.5"],\
822
822
-
["@types/minimist", "npm:1.2.2"],\
823
823
-
["camelcase-keys", "npm:7.0.2"],\
824
824
-
["decamelize", "npm:5.0.1"],\
825
825
-
["decamelize-keys", "npm:1.1.0"],\
826
826
-
["hard-rejection", "npm:2.1.0"],\
827
827
-
["minimist-options", "npm:4.1.0"],\
828
828
-
["normalize-package-data", "npm:3.0.3"],\
829
829
-
["read-pkg-up", "npm:8.0.0"],\
830
830
-
["redent", "npm:4.0.0"],\
831
831
-
["trim-newlines", "npm:4.0.2"],\
832
832
-
["type-fest", "npm:1.4.0"],\
833
833
-
["yargs-parser", "npm:20.2.9"]\
834
834
-
],\
835
835
-
"linkType": "HARD"\
836
836
-
}]\
837
837
-
]],\
838
838
-
["merge-stream", [\
839
839
-
["npm:2.0.0", {\
840
840
-
"packageLocation": "./.yarn/cache/merge-stream-npm-2.0.0-2ac83efea5-6fa4dcc8d8.zip/node_modules/merge-stream/",\
841
841
-
"packageDependencies": [\
842
842
-
["merge-stream", "npm:2.0.0"]\
843
843
-
],\
844
844
-
"linkType": "HARD"\
845
845
-
}]\
846
846
-
]],\
847
847
-
["mimic-fn", [\
848
848
-
["npm:2.1.0", {\
849
849
-
"packageLocation": "./.yarn/cache/mimic-fn-npm-2.1.0-4fbeb3abb4-d2421a3444.zip/node_modules/mimic-fn/",\
850
850
-
"packageDependencies": [\
851
851
-
["mimic-fn", "npm:2.1.0"]\
852
852
-
],\
853
853
-
"linkType": "HARD"\
854
854
-
}]\
855
855
-
]],\
856
856
-
["min-indent", [\
857
857
-
["npm:1.0.1", {\
858
858
-
"packageLocation": "./.yarn/cache/min-indent-npm-1.0.1-77031f50e1-bfc6dd03c5.zip/node_modules/min-indent/",\
859
859
-
"packageDependencies": [\
860
860
-
["min-indent", "npm:1.0.1"]\
861
861
-
],\
862
862
-
"linkType": "HARD"\
863
863
-
}]\
864
864
-
]],\
865
865
-
["minimatch", [\
866
866
-
["npm:3.1.2", {\
867
867
-
"packageLocation": "./.yarn/cache/minimatch-npm-3.1.2-9405269906-c154e56640.zip/node_modules/minimatch/",\
868
868
-
"packageDependencies": [\
869
869
-
["minimatch", "npm:3.1.2"],\
870
870
-
["brace-expansion", "npm:1.1.11"]\
871
871
-
],\
872
872
-
"linkType": "HARD"\
873
873
-
}]\
874
874
-
]],\
875
875
-
["minimist", [\
876
876
-
["npm:1.2.6", {\
877
877
-
"packageLocation": "./.yarn/cache/minimist-npm-1.2.6-f4cee4b4af-d15428cd1e.zip/node_modules/minimist/",\
878
878
-
"packageDependencies": [\
879
879
-
["minimist", "npm:1.2.6"]\
880
880
-
],\
881
881
-
"linkType": "HARD"\
882
882
-
}]\
883
883
-
]],\
884
884
-
["minimist-options", [\
885
885
-
["npm:4.1.0", {\
886
886
-
"packageLocation": "./.yarn/cache/minimist-options-npm-4.1.0-64ca250fc1-8c040b3068.zip/node_modules/minimist-options/",\
887
887
-
"packageDependencies": [\
888
888
-
["minimist-options", "npm:4.1.0"],\
889
889
-
["arrify", "npm:1.0.1"],\
890
890
-
["is-plain-obj", "npm:1.1.0"],\
891
891
-
["kind-of", "npm:6.0.3"]\
892
892
-
],\
893
893
-
"linkType": "HARD"\
894
894
-
}]\
895
895
-
]],\
896
896
-
["mount-point", [\
897
897
-
["npm:3.0.0", {\
898
898
-
"packageLocation": "./.yarn/cache/mount-point-npm-3.0.0-4a214c8cd1-edb588e613.zip/node_modules/mount-point/",\
899
899
-
"packageDependencies": [\
900
900
-
["mount-point", "npm:3.0.0"],\
901
901
-
["@sindresorhus/df", "npm:1.0.1"],\
902
902
-
["pify", "npm:2.3.0"],\
903
903
-
["pinkie-promise", "npm:2.0.1"]\
904
904
-
],\
905
905
-
"linkType": "HARD"\
906
906
-
}]\
907
907
-
]],\
908
908
-
["move-file", [\
909
909
-
["npm:3.0.0", {\
910
910
-
"packageLocation": "./.yarn/cache/move-file-npm-3.0.0-60fa241416-18b0a542b4.zip/node_modules/move-file/",\
911
911
-
"packageDependencies": [\
912
912
-
["move-file", "npm:3.0.0"],\
913
913
-
["path-exists", "npm:5.0.0"]\
914
914
-
],\
915
915
-
"linkType": "HARD"\
916
916
-
}]\
917
917
-
]],\
918
918
-
["normalize-package-data", [\
919
919
-
["npm:3.0.3", {\
920
920
-
"packageLocation": "./.yarn/cache/normalize-package-data-npm-3.0.3-1a49056685-bbcee00339.zip/node_modules/normalize-package-data/",\
921
921
-
"packageDependencies": [\
922
922
-
["normalize-package-data", "npm:3.0.3"],\
923
923
-
["hosted-git-info", "npm:4.0.2"],\
924
924
-
["is-core-module", "npm:2.11.0"],\
925
925
-
["semver", "npm:7.5.3"],\
926
926
-
["validate-npm-package-license", "npm:3.0.4"]\
927
927
-
],\
928
928
-
"linkType": "HARD"\
929
929
-
}]\
930
930
-
]],\
931
931
-
["npm-run-path", [\
932
932
-
["npm:3.1.0", {\
933
933
-
"packageLocation": "./.yarn/cache/npm-run-path-npm-3.1.0-dd7b0fa1be-141e0b8f0e.zip/node_modules/npm-run-path/",\
934
934
-
"packageDependencies": [\
935
935
-
["npm-run-path", "npm:3.1.0"],\
936
936
-
["path-key", "npm:3.1.1"]\
937
937
-
],\
938
938
-
"linkType": "HARD"\
939
939
-
}]\
940
940
-
]],\
941
941
-
["once", [\
942
942
-
["npm:1.4.0", {\
943
943
-
"packageLocation": "./.yarn/cache/once-npm-1.4.0-ccf03ef07a-cd0a885013.zip/node_modules/once/",\
944
944
-
"packageDependencies": [\
945
945
-
["once", "npm:1.4.0"],\
946
946
-
["wrappy", "npm:1.0.2"]\
947
947
-
],\
948
948
-
"linkType": "HARD"\
949
949
-
}]\
950
950
-
]],\
951
951
-
["onetime", [\
952
952
-
["npm:5.1.2", {\
953
953
-
"packageLocation": "./.yarn/cache/onetime-npm-5.1.2-3ed148fa42-2478859ef8.zip/node_modules/onetime/",\
954
954
-
"packageDependencies": [\
955
955
-
["onetime", "npm:5.1.2"],\
956
956
-
["mimic-fn", "npm:2.1.0"]\
957
957
-
],\
958
958
-
"linkType": "HARD"\
959
959
-
}]\
960
960
-
]],\
961
961
-
["os-homedir", [\
962
962
-
["npm:1.0.2", {\
963
963
-
"packageLocation": "./.yarn/cache/os-homedir-npm-1.0.2-01f82faa88-af609f5a7a.zip/node_modules/os-homedir/",\
964
964
-
"packageDependencies": [\
965
965
-
["os-homedir", "npm:1.0.2"]\
966
966
-
],\
967
967
-
"linkType": "HARD"\
968
968
-
}]\
969
969
-
]],\
970
970
-
["p-finally", [\
971
971
-
["npm:2.0.1", {\
972
972
-
"packageLocation": "./.yarn/cache/p-finally-npm-2.0.1-b59964aa17-6306a2851c.zip/node_modules/p-finally/",\
973
973
-
"packageDependencies": [\
974
974
-
["p-finally", "npm:2.0.1"]\
975
975
-
],\
976
976
-
"linkType": "HARD"\
977
977
-
}]\
978
978
-
]],\
979
979
-
["p-limit", [\
980
980
-
["npm:3.1.0", {\
981
981
-
"packageLocation": "./.yarn/cache/p-limit-npm-3.1.0-05d2ede37f-7c3690c4db.zip/node_modules/p-limit/",\
982
982
-
"packageDependencies": [\
983
983
-
["p-limit", "npm:3.1.0"],\
984
984
-
["yocto-queue", "npm:0.1.0"]\
985
985
-
],\
986
986
-
"linkType": "HARD"\
987
987
-
}]\
988
988
-
]],\
989
989
-
["p-locate", [\
990
990
-
["npm:5.0.0", {\
991
991
-
"packageLocation": "./.yarn/cache/p-locate-npm-5.0.0-92cc7c7a3e-1623088f36.zip/node_modules/p-locate/",\
992
992
-
"packageDependencies": [\
993
993
-
["p-locate", "npm:5.0.0"],\
994
994
-
["p-limit", "npm:3.1.0"]\
995
995
-
],\
996
996
-
"linkType": "HARD"\
997
997
-
}]\
998
998
-
]],\
999
999
-
["p-map", [\
1000
1000
-
["npm:5.5.0", {\
1001
1001
-
"packageLocation": "./.yarn/cache/p-map-npm-5.5.0-9758eb14ee-065cb6fca6.zip/node_modules/p-map/",\
1002
1002
-
"packageDependencies": [\
1003
1003
-
["p-map", "npm:5.5.0"],\
1004
1004
-
["aggregate-error", "npm:4.0.1"]\
1005
1005
-
],\
1006
1006
-
"linkType": "HARD"\
1007
1007
-
}]\
1008
1008
-
]],\
1009
1009
-
["parse-json", [\
1010
1010
-
["npm:5.2.0", {\
1011
1011
-
"packageLocation": "./.yarn/cache/parse-json-npm-5.2.0-00a63b1199-62085b17d6.zip/node_modules/parse-json/",\
1012
1012
-
"packageDependencies": [\
1013
1013
-
["parse-json", "npm:5.2.0"],\
1014
1014
-
["@babel/code-frame", "npm:7.14.5"],\
1015
1015
-
["error-ex", "npm:1.3.2"],\
1016
1016
-
["json-parse-even-better-errors", "npm:2.3.1"],\
1017
1017
-
["lines-and-columns", "npm:1.1.6"]\
1018
1018
-
],\
1019
1019
-
"linkType": "HARD"\
1020
1020
-
}]\
1021
1021
-
]],\
1022
1022
-
["path-exists", [\
1023
1023
-
["npm:4.0.0", {\
1024
1024
-
"packageLocation": "./.yarn/cache/path-exists-npm-4.0.0-e9e4f63eb0-505807199d.zip/node_modules/path-exists/",\
1025
1025
-
"packageDependencies": [\
1026
1026
-
["path-exists", "npm:4.0.0"]\
1027
1027
-
],\
1028
1028
-
"linkType": "HARD"\
1029
1029
-
}],\
1030
1030
-
["npm:5.0.0", {\
1031
1031
-
"packageLocation": "./.yarn/cache/path-exists-npm-5.0.0-0bf403c56c-8ca842868c.zip/node_modules/path-exists/",\
1032
1032
-
"packageDependencies": [\
1033
1033
-
["path-exists", "npm:5.0.0"]\
1034
1034
-
],\
1035
1035
-
"linkType": "HARD"\
1036
1036
-
}]\
1037
1037
-
]],\
1038
1038
-
["path-is-absolute", [\
1039
1039
-
["npm:1.0.1", {\
1040
1040
-
"packageLocation": "./.yarn/cache/path-is-absolute-npm-1.0.1-31bc695ffd-060840f92c.zip/node_modules/path-is-absolute/",\
1041
1041
-
"packageDependencies": [\
1042
1042
-
["path-is-absolute", "npm:1.0.1"]\
1043
1043
-
],\
1044
1044
-
"linkType": "HARD"\
1045
1045
-
}]\
1046
1046
-
]],\
1047
1047
-
["path-key", [\
1048
1048
-
["npm:3.1.1", {\
1049
1049
-
"packageLocation": "./.yarn/cache/path-key-npm-3.1.1-0e66ea8321-55cd7a9dd4.zip/node_modules/path-key/",\
1050
1050
-
"packageDependencies": [\
1051
1051
-
["path-key", "npm:3.1.1"]\
1052
1052
-
],\
1053
1053
-
"linkType": "HARD"\
1054
1054
-
}]\
1055
1055
-
]],\
1056
1056
-
["path-type", [\
1057
1057
-
["npm:3.0.0", {\
1058
1058
-
"packageLocation": "./.yarn/cache/path-type-npm-3.0.0-252361a0eb-735b35e256.zip/node_modules/path-type/",\
1059
1059
-
"packageDependencies": [\
1060
1060
-
["path-type", "npm:3.0.0"],\
1061
1061
-
["pify", "npm:3.0.0"]\
1062
1062
-
],\
1063
1063
-
"linkType": "HARD"\
1064
1064
-
}]\
1065
1065
-
]],\
1066
1066
-
["pify", [\
1067
1067
-
["npm:2.3.0", {\
1068
1068
-
"packageLocation": "./.yarn/cache/pify-npm-2.3.0-8b63310934-9503aaeaf4.zip/node_modules/pify/",\
1069
1069
-
"packageDependencies": [\
1070
1070
-
["pify", "npm:2.3.0"]\
1071
1071
-
],\
1072
1072
-
"linkType": "HARD"\
1073
1073
-
}],\
1074
1074
-
["npm:3.0.0", {\
1075
1075
-
"packageLocation": "./.yarn/cache/pify-npm-3.0.0-679ee405c8-6cdcbc3567.zip/node_modules/pify/",\
1076
1076
-
"packageDependencies": [\
1077
1077
-
["pify", "npm:3.0.0"]\
1078
1078
-
],\
1079
1079
-
"linkType": "HARD"\
1080
1080
-
}]\
1081
1081
-
]],\
1082
1082
-
["pinkie", [\
1083
1083
-
["npm:2.0.4", {\
1084
1084
-
"packageLocation": "./.yarn/cache/pinkie-npm-2.0.4-cffce4fb09-b12b10afea.zip/node_modules/pinkie/",\
1085
1085
-
"packageDependencies": [\
1086
1086
-
["pinkie", "npm:2.0.4"]\
1087
1087
-
],\
1088
1088
-
"linkType": "HARD"\
1089
1089
-
}]\
1090
1090
-
]],\
1091
1091
-
["pinkie-promise", [\
1092
1092
-
["npm:2.0.1", {\
1093
1093
-
"packageLocation": "./.yarn/cache/pinkie-promise-npm-2.0.1-095439b8c5-b53a4a2e73.zip/node_modules/pinkie-promise/",\
1094
1094
-
"packageDependencies": [\
1095
1095
-
["pinkie-promise", "npm:2.0.1"],\
1096
1096
-
["pinkie", "npm:2.0.4"]\
1097
1097
-
],\
1098
1098
-
"linkType": "HARD"\
1099
1099
-
}]\
1100
1100
-
]],\
1101
1101
-
["pump", [\
1102
1102
-
["npm:3.0.0", {\
1103
1103
-
"packageLocation": "./.yarn/cache/pump-npm-3.0.0-0080bf6a7a-e42e9229fb.zip/node_modules/pump/",\
1104
1104
-
"packageDependencies": [\
1105
1105
-
["pump", "npm:3.0.0"],\
1106
1106
-
["end-of-stream", "npm:1.4.4"],\
1107
1107
-
["once", "npm:1.4.0"]\
1108
1108
-
],\
1109
1109
-
"linkType": "HARD"\
1110
1110
-
}]\
1111
1111
-
]],\
1112
1112
-
["punycode", [\
1113
1113
-
["npm:2.1.1", {\
1114
1114
-
"packageLocation": "./.yarn/cache/punycode-npm-2.1.1-26eb3e15cf-823bf443c6.zip/node_modules/punycode/",\
1115
1115
-
"packageDependencies": [\
1116
1116
-
["punycode", "npm:2.1.1"]\
1117
1117
-
],\
1118
1118
-
"linkType": "HARD"\
1119
1119
-
}]\
1120
1120
-
]],\
1121
1121
-
["quick-lru", [\
1122
1122
-
["npm:5.1.1", {\
1123
1123
-
"packageLocation": "./.yarn/cache/quick-lru-npm-5.1.1-e38e0edce3-a516faa255.zip/node_modules/quick-lru/",\
1124
1124
-
"packageDependencies": [\
1125
1125
-
["quick-lru", "npm:5.1.1"]\
1126
1126
-
],\
1127
1127
-
"linkType": "HARD"\
1128
1128
-
}]\
1129
1129
-
]],\
1130
1130
-
["read-pkg", [\
1131
1131
-
["npm:6.0.0", {\
1132
1132
-
"packageLocation": "./.yarn/cache/read-pkg-npm-6.0.0-d89ce14684-0cebdff381.zip/node_modules/read-pkg/",\
1133
1133
-
"packageDependencies": [\
1134
1134
-
["read-pkg", "npm:6.0.0"],\
1135
1135
-
["@types/normalize-package-data", "npm:2.4.0"],\
1136
1136
-
["normalize-package-data", "npm:3.0.3"],\
1137
1137
-
["parse-json", "npm:5.2.0"],\
1138
1138
-
["type-fest", "npm:1.4.0"]\
1139
1139
-
],\
1140
1140
-
"linkType": "HARD"\
1141
1141
-
}]\
1142
1142
-
]],\
1143
1143
-
["read-pkg-up", [\
1144
1144
-
["npm:8.0.0", {\
1145
1145
-
"packageLocation": "./.yarn/cache/read-pkg-up-npm-8.0.0-6f39941cc9-fe4c804016.zip/node_modules/read-pkg-up/",\
1146
1146
-
"packageDependencies": [\
1147
1147
-
["read-pkg-up", "npm:8.0.0"],\
1148
1148
-
["find-up", "npm:5.0.0"],\
1149
1149
-
["read-pkg", "npm:6.0.0"],\
1150
1150
-
["type-fest", "npm:1.4.0"]\
1151
1151
-
],\
1152
1152
-
"linkType": "HARD"\
1153
1153
-
}]\
1154
1154
-
]],\
1155
1155
-
["redent", [\
1156
1156
-
["npm:4.0.0", {\
1157
1157
-
"packageLocation": "./.yarn/cache/redent-npm-4.0.0-67da39f156-6944e7b1d8.zip/node_modules/redent/",\
1158
1158
-
"packageDependencies": [\
1159
1159
-
["redent", "npm:4.0.0"],\
1160
1160
-
["indent-string", "npm:5.0.0"],\
1161
1161
-
["strip-indent", "npm:4.0.0"]\
1162
1162
-
],\
1163
1163
-
"linkType": "HARD"\
1164
1164
-
}]\
1165
1165
-
]],\
1166
1166
-
["require-from-string", [\
1167
1167
-
["npm:2.0.2", {\
1168
1168
-
"packageLocation": "./.yarn/cache/require-from-string-npm-2.0.2-8557e0db12-a03ef68954.zip/node_modules/require-from-string/",\
1169
1169
-
"packageDependencies": [\
1170
1170
-
["require-from-string", "npm:2.0.2"]\
1171
1171
-
],\
1172
1172
-
"linkType": "HARD"\
1173
1173
-
}]\
1174
1174
-
]],\
1175
1175
-
["semver", [\
1176
1176
-
["npm:7.5.3", {\
1177
1177
-
"packageLocation": "./.yarn/cache/semver-npm-7.5.3-275095dbf3-9d58db1652.zip/node_modules/semver/",\
1178
1178
-
"packageDependencies": [\
1179
1179
-
["semver", "npm:7.5.3"],\
1180
1180
-
["lru-cache", "npm:6.0.0"]\
1181
1181
-
],\
1182
1182
-
"linkType": "HARD"\
1183
1183
-
}]\
1184
1184
-
]],\
1185
1185
-
["shebang-command", [\
1186
1186
-
["npm:2.0.0", {\
1187
1187
-
"packageLocation": "./.yarn/cache/shebang-command-npm-2.0.0-eb2b01921d-6b52fe8727.zip/node_modules/shebang-command/",\
1188
1188
-
"packageDependencies": [\
1189
1189
-
["shebang-command", "npm:2.0.0"],\
1190
1190
-
["shebang-regex", "npm:3.0.0"]\
1191
1191
-
],\
1192
1192
-
"linkType": "HARD"\
1193
1193
-
}]\
1194
1194
-
]],\
1195
1195
-
["shebang-regex", [\
1196
1196
-
["npm:3.0.0", {\
1197
1197
-
"packageLocation": "./.yarn/cache/shebang-regex-npm-3.0.0-899a0cd65e-1a2bcae50d.zip/node_modules/shebang-regex/",\
1198
1198
-
"packageDependencies": [\
1199
1199
-
["shebang-regex", "npm:3.0.0"]\
1200
1200
-
],\
1201
1201
-
"linkType": "HARD"\
1202
1202
-
}]\
1203
1203
-
]],\
1204
1204
-
["signal-exit", [\
1205
1205
-
["npm:3.0.3", {\
1206
1206
-
"packageLocation": "./.yarn/cache/signal-exit-npm-3.0.3-5a2d797648-f0169d3f12.zip/node_modules/signal-exit/",\
1207
1207
-
"packageDependencies": [\
1208
1208
-
["signal-exit", "npm:3.0.3"]\
1209
1209
-
],\
1210
1210
-
"linkType": "HARD"\
1211
1211
-
}]\
1212
1212
-
]],\
1213
1213
-
["slash", [\
1214
1214
-
["npm:1.0.0", {\
1215
1215
-
"packageLocation": "./.yarn/cache/slash-npm-1.0.0-a244873c30-4b6e21b1fb.zip/node_modules/slash/",\
1216
1216
-
"packageDependencies": [\
1217
1217
-
["slash", "npm:1.0.0"]\
1218
1218
-
],\
1219
1219
-
"linkType": "HARD"\
1220
1220
-
}]\
1221
1221
-
]],\
1222
1222
-
["spdx-correct", [\
1223
1223
-
["npm:3.1.0", {\
1224
1224
-
"packageLocation": "./.yarn/cache/spdx-correct-npm-3.1.0-9ad640b3ef-fda9fc191e.zip/node_modules/spdx-correct/",\
1225
1225
-
"packageDependencies": [\
1226
1226
-
["spdx-correct", "npm:3.1.0"],\
1227
1227
-
["spdx-expression-parse", "npm:3.0.0"],\
1228
1228
-
["spdx-license-ids", "npm:3.0.3"]\
1229
1229
-
],\
1230
1230
-
"linkType": "HARD"\
1231
1231
-
}]\
1232
1232
-
]],\
1233
1233
-
["spdx-exceptions", [\
1234
1234
-
["npm:2.2.0", {\
1235
1235
-
"packageLocation": "./.yarn/cache/spdx-exceptions-npm-2.2.0-a19a6b5050-29189de3f6.zip/node_modules/spdx-exceptions/",\
1236
1236
-
"packageDependencies": [\
1237
1237
-
["spdx-exceptions", "npm:2.2.0"]\
1238
1238
-
],\
1239
1239
-
"linkType": "HARD"\
1240
1240
-
}]\
1241
1241
-
]],\
1242
1242
-
["spdx-expression-parse", [\
1243
1243
-
["npm:3.0.0", {\
1244
1244
-
"packageLocation": "./.yarn/cache/spdx-expression-parse-npm-3.0.0-704f8535ae-308c8c4925.zip/node_modules/spdx-expression-parse/",\
1245
1245
-
"packageDependencies": [\
1246
1246
-
["spdx-expression-parse", "npm:3.0.0"],\
1247
1247
-
["spdx-exceptions", "npm:2.2.0"],\
1248
1248
-
["spdx-license-ids", "npm:3.0.3"]\
1249
1249
-
],\
1250
1250
-
"linkType": "HARD"\
1251
1251
-
}]\
1252
1252
-
]],\
1253
1253
-
["spdx-license-ids", [\
1254
1254
-
["npm:3.0.3", {\
1255
1255
-
"packageLocation": "./.yarn/cache/spdx-license-ids-npm-3.0.3-dd83ff3650-ec7bfab530.zip/node_modules/spdx-license-ids/",\
1256
1256
-
"packageDependencies": [\
1257
1257
-
["spdx-license-ids", "npm:3.0.3"]\
1258
1258
-
],\
1259
1259
-
"linkType": "HARD"\
1260
1260
-
}]\
1261
1261
-
]],\
1262
1262
-
["sprintf-js", [\
1263
1263
-
["npm:1.0.3", {\
1264
1264
-
"packageLocation": "./.yarn/cache/sprintf-js-npm-1.0.3-73f0a322fa-19d79aec21.zip/node_modules/sprintf-js/",\
1265
1265
-
"packageDependencies": [\
1266
1266
-
["sprintf-js", "npm:1.0.3"]\
1267
1267
-
],\
1268
1268
-
"linkType": "HARD"\
1269
1269
-
}]\
1270
1270
-
]],\
1271
1271
-
["strip-final-newline", [\
1272
1272
-
["npm:2.0.0", {\
1273
1273
-
"packageLocation": "./.yarn/cache/strip-final-newline-npm-2.0.0-340c4f7c66-69412b5e25.zip/node_modules/strip-final-newline/",\
1274
1274
-
"packageDependencies": [\
1275
1275
-
["strip-final-newline", "npm:2.0.0"]\
1276
1276
-
],\
1277
1277
-
"linkType": "HARD"\
1278
1278
-
}]\
1279
1279
-
]],\
1280
1280
-
["strip-indent", [\
1281
1281
-
["npm:4.0.0", {\
1282
1282
-
"packageLocation": "./.yarn/cache/strip-indent-npm-4.0.0-12c489be86-06cbcd93da.zip/node_modules/strip-indent/",\
1283
1283
-
"packageDependencies": [\
1284
1284
-
["strip-indent", "npm:4.0.0"],\
1285
1285
-
["min-indent", "npm:1.0.1"]\
1286
1286
-
],\
1287
1287
-
"linkType": "HARD"\
1288
1288
-
}]\
1289
1289
-
]],\
1290
1290
-
["supports-color", [\
1291
1291
-
["npm:5.5.0", {\
1292
1292
-
"packageLocation": "./.yarn/cache/supports-color-npm-5.5.0-183ac537bc-95f6f4ba5a.zip/node_modules/supports-color/",\
1293
1293
-
"packageDependencies": [\
1294
1294
-
["supports-color", "npm:5.5.0"],\
1295
1295
-
["has-flag", "npm:3.0.0"]\
1296
1296
-
],\
1297
1297
-
"linkType": "HARD"\
1298
1298
-
}]\
1299
1299
-
]],\
1300
1300
-
["trash", [\
1301
1301
-
["npm:8.1.0", {\
1302
1302
-
"packageLocation": "./.yarn/unplugged/trash-npm-8.1.0-e8271d1f12/node_modules/trash/",\
1303
1303
-
"packageDependencies": [\
1304
1304
-
["trash", "npm:8.1.0"],\
1305
1305
-
["@sindresorhus/chunkify", "npm:0.2.0"],\
1306
1306
-
["@stroncium/procfs", "npm:1.2.1"],\
1307
1307
-
["globby", "npm:7.1.1"],\
1308
1308
-
["is-path-inside", "npm:4.0.0"],\
1309
1309
-
["move-file", "npm:3.0.0"],\
1310
1310
-
["p-map", "npm:5.5.0"],\
1311
1311
-
["uuid", "npm:8.3.2"],\
1312
1312
-
["xdg-trashdir", "npm:3.1.0"]\
1313
1313
-
],\
1314
1314
-
"linkType": "HARD"\
1315
1315
-
}]\
1316
1316
-
]],\
1317
1317
-
["trash-cli", [\
1318
1318
-
["npm:5.0.0", {\
1319
1319
-
"packageLocation": "./.yarn/cache/trash-cli-npm-5.0.0-172c9c6b9e-b987156abb.zip/node_modules/trash-cli/",\
1320
1320
-
"packageDependencies": [\
1321
1321
-
["trash-cli", "npm:5.0.0"],\
1322
1322
-
["meow", "npm:10.1.5"],\
1323
1323
-
["trash", "npm:8.1.0"]\
1324
1324
-
],\
1325
1325
-
"linkType": "HARD"\
1326
1326
-
}]\
1327
1327
-
]],\
1328
1328
-
["trim-newlines", [\
1329
1329
-
["npm:4.0.2", {\
1330
1330
-
"packageLocation": "./.yarn/cache/trim-newlines-npm-4.0.2-e01f9adaf9-1eef206eb7.zip/node_modules/trim-newlines/",\
1331
1331
-
"packageDependencies": [\
1332
1332
-
["trim-newlines", "npm:4.0.2"]\
1333
1333
-
],\
1334
1334
-
"linkType": "HARD"\
1335
1335
-
}]\
1336
1336
-
]],\
1337
1337
-
["type-fest", [\
1338
1338
-
["npm:1.4.0", {\
1339
1339
-
"packageLocation": "./.yarn/cache/type-fest-npm-1.4.0-7dd848962a-b011c33886.zip/node_modules/type-fest/",\
1340
1340
-
"packageDependencies": [\
1341
1341
-
["type-fest", "npm:1.4.0"]\
1342
1342
-
],\
1343
1343
-
"linkType": "HARD"\
1344
1344
-
}]\
1345
1345
-
]],\
1346
1346
-
["uri-js", [\
1347
1347
-
["npm:4.2.2", {\
1348
1348
-
"packageLocation": "./.yarn/cache/uri-js-npm-4.2.2-e6ac2fca26-5a91c55d8a.zip/node_modules/uri-js/",\
1349
1349
-
"packageDependencies": [\
1350
1350
-
["uri-js", "npm:4.2.2"],\
1351
1351
-
["punycode", "npm:2.1.1"]\
1352
1352
-
],\
1353
1353
-
"linkType": "HARD"\
1354
1354
-
}]\
1355
1355
-
]],\
1356
1356
-
["user-home", [\
1357
1357
-
["npm:2.0.0", {\
1358
1358
-
"packageLocation": "./.yarn/cache/user-home-npm-2.0.0-a7b3877168-a3329faa95.zip/node_modules/user-home/",\
1359
1359
-
"packageDependencies": [\
1360
1360
-
["user-home", "npm:2.0.0"],\
1361
1361
-
["os-homedir", "npm:1.0.2"]\
1362
1362
-
],\
1363
1363
-
"linkType": "HARD"\
1364
1364
-
}]\
1365
1365
-
]],\
1366
1366
-
["uuid", [\
1367
1367
-
["npm:8.3.2", {\
1368
1368
-
"packageLocation": "./.yarn/cache/uuid-npm-8.3.2-eca0baba53-5575a8a75c.zip/node_modules/uuid/",\
1369
1369
-
"packageDependencies": [\
1370
1370
-
["uuid", "npm:8.3.2"]\
1371
1371
-
],\
1372
1372
-
"linkType": "HARD"\
1373
1373
-
}]\
1374
1374
-
]],\
1375
1375
-
["validate-npm-package-license", [\
1376
1376
-
["npm:3.0.4", {\
1377
1377
-
"packageLocation": "./.yarn/cache/validate-npm-package-license-npm-3.0.4-7af8adc7a8-35703ac889.zip/node_modules/validate-npm-package-license/",\
1378
1378
-
"packageDependencies": [\
1379
1379
-
["validate-npm-package-license", "npm:3.0.4"],\
1380
1380
-
["spdx-correct", "npm:3.1.0"],\
1381
1381
-
["spdx-expression-parse", "npm:3.0.0"]\
1382
1382
-
],\
1383
1383
-
"linkType": "HARD"\
1384
1384
-
}]\
1385
1385
-
]],\
1386
1386
-
["which", [\
1387
1387
-
["npm:2.0.2", {\
1388
1388
-
"packageLocation": "./.yarn/cache/which-npm-2.0.2-320ddf72f7-1a5c563d3c.zip/node_modules/which/",\
1389
1389
-
"packageDependencies": [\
1390
1390
-
["which", "npm:2.0.2"],\
1391
1391
-
["isexe", "npm:2.0.0"]\
1392
1392
-
],\
1393
1393
-
"linkType": "HARD"\
1394
1394
-
}]\
1395
1395
-
]],\
1396
1396
-
["wrappy", [\
1397
1397
-
["npm:1.0.2", {\
1398
1398
-
"packageLocation": "./.yarn/cache/wrappy-npm-1.0.2-916de4d4b3-159da4805f.zip/node_modules/wrappy/",\
1399
1399
-
"packageDependencies": [\
1400
1400
-
["wrappy", "npm:1.0.2"]\
1401
1401
-
],\
1402
1402
-
"linkType": "HARD"\
1403
1403
-
}]\
1404
1404
-
]],\
1405
1405
-
["xdg-basedir", [\
1406
1406
-
["npm:4.0.0", {\
1407
1407
-
"packageLocation": "./.yarn/cache/xdg-basedir-npm-4.0.0-ed08d380e2-0073d5b59a.zip/node_modules/xdg-basedir/",\
1408
1408
-
"packageDependencies": [\
1409
1409
-
["xdg-basedir", "npm:4.0.0"]\
1410
1410
-
],\
1411
1411
-
"linkType": "HARD"\
1412
1412
-
}]\
1413
1413
-
]],\
1414
1414
-
["xdg-trashdir", [\
1415
1415
-
["npm:3.1.0", {\
1416
1416
-
"packageLocation": "./.yarn/cache/xdg-trashdir-npm-3.1.0-4867489077-1b8ed9229a.zip/node_modules/xdg-trashdir/",\
1417
1417
-
"packageDependencies": [\
1418
1418
-
["xdg-trashdir", "npm:3.1.0"],\
1419
1419
-
["@sindresorhus/df", "npm:3.1.1"],\
1420
1420
-
["mount-point", "npm:3.0.0"],\
1421
1421
-
["user-home", "npm:2.0.0"],\
1422
1422
-
["xdg-basedir", "npm:4.0.0"]\
1423
1423
-
],\
1424
1424
-
"linkType": "HARD"\
1425
1425
-
}]\
1426
1426
-
]],\
1427
1427
-
["yallist", [\
1428
1428
-
["npm:4.0.0", {\
1429
1429
-
"packageLocation": "./.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip/node_modules/yallist/",\
1430
1430
-
"packageDependencies": [\
1431
1431
-
["yallist", "npm:4.0.0"]\
1432
1432
-
],\
1433
1433
-
"linkType": "HARD"\
1434
1434
-
}]\
1435
1435
-
]],\
1436
1436
-
["yargs-parser", [\
1437
1437
-
["npm:20.2.9", {\
1438
1438
-
"packageLocation": "./.yarn/cache/yargs-parser-npm-20.2.9-a1d19e598d-8bb69015f2.zip/node_modules/yargs-parser/",\
1439
1439
-
"packageDependencies": [\
1440
1440
-
["yargs-parser", "npm:20.2.9"]\
1441
1441
-
],\
1442
1442
-
"linkType": "HARD"\
1443
1443
-
}]\
1444
1444
-
]],\
1445
1445
-
["yocto-queue", [\
1446
1446
-
["npm:0.1.0", {\
1447
1447
-
"packageLocation": "./.yarn/cache/yocto-queue-npm-0.1.0-c6c9a7db29-f77b3d8d00.zip/node_modules/yocto-queue/",\
1448
1448
-
"packageDependencies": [\
1449
1449
-
["yocto-queue", "npm:0.1.0"]\
1450
1450
-
],\
1451
1451
-
"linkType": "HARD"\
1452
1452
-
}]\
1453
1453
-
]]\
1454
1454
-
]\
1455
1455
-
}'), {basePath: basePath || __dirname});
1456
1456
-
}
1457
1457
-
1458
1458
-
const fs = require('fs');
1459
1459
-
const path = require('path');
1460
1460
-
const require$$0 = require('module');
1461
1461
-
const StringDecoder = require('string_decoder');
1462
1462
-
const url = require('url');
1463
1463
-
const os = require('os');
1464
1464
-
const nodeUtils = require('util');
1465
1465
-
const readline = require('readline');
1466
1466
-
const assert = require('assert');
1467
1467
-
const stream = require('stream');
1468
1468
-
const zlib = require('zlib');
1469
1469
-
const events = require('events');
1470
1470
-
1471
1471
-
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
1472
1472
-
1473
1473
-
function _interopNamespace(e) {
1474
1474
-
if (e && e.__esModule) return e;
1475
1475
-
const n = Object.create(null);
1476
1476
-
if (e) {
1477
1477
-
for (const k in e) {
1478
1478
-
if (k !== 'default') {
1479
1479
-
const d = Object.getOwnPropertyDescriptor(e, k);
1480
1480
-
Object.defineProperty(n, k, d.get ? d : {
1481
1481
-
enumerable: true,
1482
1482
-
get: () => e[k]
1483
1483
-
});
1484
1484
-
}
1485
1485
-
}
1486
1486
-
}
1487
1487
-
n.default = e;
1488
1488
-
return Object.freeze(n);
1489
1489
-
}
1490
1490
-
1491
1491
-
const fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
1492
1492
-
const path__default = /*#__PURE__*/_interopDefaultLegacy(path);
1493
1493
-
const require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0);
1494
1494
-
const StringDecoder__default = /*#__PURE__*/_interopDefaultLegacy(StringDecoder);
1495
1495
-
const nodeUtils__namespace = /*#__PURE__*/_interopNamespace(nodeUtils);
1496
1496
-
const assert__default = /*#__PURE__*/_interopDefaultLegacy(assert);
1497
1497
-
const zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib);
1498
1498
-
1499
1499
-
const S_IFMT = 61440;
1500
1500
-
const S_IFDIR = 16384;
1501
1501
-
const S_IFREG = 32768;
1502
1502
-
const S_IFLNK = 40960;
1503
1503
-
const SAFE_TIME = 456789e3;
1504
1504
-
1505
1505
-
const DEFAULT_MODE = S_IFREG | 420;
1506
1506
-
class StatEntry {
1507
1507
-
constructor() {
1508
1508
-
this.uid = 0;
1509
1509
-
this.gid = 0;
1510
1510
-
this.size = 0;
1511
1511
-
this.blksize = 0;
1512
1512
-
this.atimeMs = 0;
1513
1513
-
this.mtimeMs = 0;
1514
1514
-
this.ctimeMs = 0;
1515
1515
-
this.birthtimeMs = 0;
1516
1516
-
this.atime = new Date(0);
1517
1517
-
this.mtime = new Date(0);
1518
1518
-
this.ctime = new Date(0);
1519
1519
-
this.birthtime = new Date(0);
1520
1520
-
this.dev = 0;
1521
1521
-
this.ino = 0;
1522
1522
-
this.mode = DEFAULT_MODE;
1523
1523
-
this.nlink = 1;
1524
1524
-
this.rdev = 0;
1525
1525
-
this.blocks = 1;
1526
1526
-
}
1527
1527
-
isBlockDevice() {
1528
1528
-
return false;
1529
1529
-
}
1530
1530
-
isCharacterDevice() {
1531
1531
-
return false;
1532
1532
-
}
1533
1533
-
isDirectory() {
1534
1534
-
return (this.mode & S_IFMT) === S_IFDIR;
1535
1535
-
}
1536
1536
-
isFIFO() {
1537
1537
-
return false;
1538
1538
-
}
1539
1539
-
isFile() {
1540
1540
-
return (this.mode & S_IFMT) === S_IFREG;
1541
1541
-
}
1542
1542
-
isSocket() {
1543
1543
-
return false;
1544
1544
-
}
1545
1545
-
isSymbolicLink() {
1546
1546
-
return (this.mode & S_IFMT) === S_IFLNK;
1547
1547
-
}
1548
1548
-
}
1549
1549
-
class BigIntStatsEntry {
1550
1550
-
constructor() {
1551
1551
-
this.uid = BigInt(0);
1552
1552
-
this.gid = BigInt(0);
1553
1553
-
this.size = BigInt(0);
1554
1554
-
this.blksize = BigInt(0);
1555
1555
-
this.atimeMs = BigInt(0);
1556
1556
-
this.mtimeMs = BigInt(0);
1557
1557
-
this.ctimeMs = BigInt(0);
1558
1558
-
this.birthtimeMs = BigInt(0);
1559
1559
-
this.atimeNs = BigInt(0);
1560
1560
-
this.mtimeNs = BigInt(0);
1561
1561
-
this.ctimeNs = BigInt(0);
1562
1562
-
this.birthtimeNs = BigInt(0);
1563
1563
-
this.atime = new Date(0);
1564
1564
-
this.mtime = new Date(0);
1565
1565
-
this.ctime = new Date(0);
1566
1566
-
this.birthtime = new Date(0);
1567
1567
-
this.dev = BigInt(0);
1568
1568
-
this.ino = BigInt(0);
1569
1569
-
this.mode = BigInt(DEFAULT_MODE);
1570
1570
-
this.nlink = BigInt(1);
1571
1571
-
this.rdev = BigInt(0);
1572
1572
-
this.blocks = BigInt(1);
1573
1573
-
}
1574
1574
-
isBlockDevice() {
1575
1575
-
return false;
1576
1576
-
}
1577
1577
-
isCharacterDevice() {
1578
1578
-
return false;
1579
1579
-
}
1580
1580
-
isDirectory() {
1581
1581
-
return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFDIR);
1582
1582
-
}
1583
1583
-
isFIFO() {
1584
1584
-
return false;
1585
1585
-
}
1586
1586
-
isFile() {
1587
1587
-
return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFREG);
1588
1588
-
}
1589
1589
-
isSocket() {
1590
1590
-
return false;
1591
1591
-
}
1592
1592
-
isSymbolicLink() {
1593
1593
-
return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFLNK);
1594
1594
-
}
1595
1595
-
}
1596
1596
-
function makeDefaultStats() {
1597
1597
-
return new StatEntry();
1598
1598
-
}
1599
1599
-
function clearStats(stats) {
1600
1600
-
for (const key in stats) {
1601
1601
-
if (Object.prototype.hasOwnProperty.call(stats, key)) {
1602
1602
-
const element = stats[key];
1603
1603
-
if (typeof element === `number`) {
1604
1604
-
stats[key] = 0;
1605
1605
-
} else if (typeof element === `bigint`) {
1606
1606
-
stats[key] = BigInt(0);
1607
1607
-
} else if (nodeUtils__namespace.types.isDate(element)) {
1608
1608
-
stats[key] = new Date(0);
1609
1609
-
}
1610
1610
-
}
1611
1611
-
}
1612
1612
-
return stats;
1613
1613
-
}
1614
1614
-
function convertToBigIntStats(stats) {
1615
1615
-
const bigintStats = new BigIntStatsEntry();
1616
1616
-
for (const key in stats) {
1617
1617
-
if (Object.prototype.hasOwnProperty.call(stats, key)) {
1618
1618
-
const element = stats[key];
1619
1619
-
if (typeof element === `number`) {
1620
1620
-
bigintStats[key] = BigInt(element);
1621
1621
-
} else if (nodeUtils__namespace.types.isDate(element)) {
1622
1622
-
bigintStats[key] = new Date(element);
1623
1623
-
}
1624
1624
-
}
1625
1625
-
}
1626
1626
-
bigintStats.atimeNs = bigintStats.atimeMs * BigInt(1e6);
1627
1627
-
bigintStats.mtimeNs = bigintStats.mtimeMs * BigInt(1e6);
1628
1628
-
bigintStats.ctimeNs = bigintStats.ctimeMs * BigInt(1e6);
1629
1629
-
bigintStats.birthtimeNs = bigintStats.birthtimeMs * BigInt(1e6);
1630
1630
-
return bigintStats;
1631
1631
-
}
1632
1632
-
function areStatsEqual(a, b) {
1633
1633
-
if (a.atimeMs !== b.atimeMs)
1634
1634
-
return false;
1635
1635
-
if (a.birthtimeMs !== b.birthtimeMs)
1636
1636
-
return false;
1637
1637
-
if (a.blksize !== b.blksize)
1638
1638
-
return false;
1639
1639
-
if (a.blocks !== b.blocks)
1640
1640
-
return false;
1641
1641
-
if (a.ctimeMs !== b.ctimeMs)
1642
1642
-
return false;
1643
1643
-
if (a.dev !== b.dev)
1644
1644
-
return false;
1645
1645
-
if (a.gid !== b.gid)
1646
1646
-
return false;
1647
1647
-
if (a.ino !== b.ino)
1648
1648
-
return false;
1649
1649
-
if (a.isBlockDevice() !== b.isBlockDevice())
1650
1650
-
return false;
1651
1651
-
if (a.isCharacterDevice() !== b.isCharacterDevice())
1652
1652
-
return false;
1653
1653
-
if (a.isDirectory() !== b.isDirectory())
1654
1654
-
return false;
1655
1655
-
if (a.isFIFO() !== b.isFIFO())
1656
1656
-
return false;
1657
1657
-
if (a.isFile() !== b.isFile())
1658
1658
-
return false;
1659
1659
-
if (a.isSocket() !== b.isSocket())
1660
1660
-
return false;
1661
1661
-
if (a.isSymbolicLink() !== b.isSymbolicLink())
1662
1662
-
return false;
1663
1663
-
if (a.mode !== b.mode)
1664
1664
-
return false;
1665
1665
-
if (a.mtimeMs !== b.mtimeMs)
1666
1666
-
return false;
1667
1667
-
if (a.nlink !== b.nlink)
1668
1668
-
return false;
1669
1669
-
if (a.rdev !== b.rdev)
1670
1670
-
return false;
1671
1671
-
if (a.size !== b.size)
1672
1672
-
return false;
1673
1673
-
if (a.uid !== b.uid)
1674
1674
-
return false;
1675
1675
-
const aN = a;
1676
1676
-
const bN = b;
1677
1677
-
if (aN.atimeNs !== bN.atimeNs)
1678
1678
-
return false;
1679
1679
-
if (aN.mtimeNs !== bN.mtimeNs)
1680
1680
-
return false;
1681
1681
-
if (aN.ctimeNs !== bN.ctimeNs)
1682
1682
-
return false;
1683
1683
-
if (aN.birthtimeNs !== bN.birthtimeNs)
1684
1684
-
return false;
1685
1685
-
return true;
1686
1686
-
}
1687
1687
-
1688
1688
-
const PortablePath = {
1689
1689
-
root: `/`,
1690
1690
-
dot: `.`,
1691
1691
-
parent: `..`
1692
1692
-
};
1693
1693
-
const Filename = {
1694
1694
-
nodeModules: `node_modules`,
1695
1695
-
manifest: `package.json`,
1696
1696
-
lockfile: `yarn.lock`,
1697
1697
-
virtual: `__virtual__`,
1698
1698
-
pnpJs: `.pnp.js`,
1699
1699
-
pnpCjs: `.pnp.cjs`,
1700
1700
-
rc: `.yarnrc.yml`
1701
1701
-
};
1702
1702
-
const npath = Object.create(path__default.default);
1703
1703
-
const ppath = Object.create(path__default.default.posix);
1704
1704
-
npath.cwd = () => process.cwd();
1705
1705
-
ppath.cwd = () => toPortablePath(process.cwd());
1706
1706
-
ppath.resolve = (...segments) => {
1707
1707
-
if (segments.length > 0 && ppath.isAbsolute(segments[0])) {
1708
1708
-
return path__default.default.posix.resolve(...segments);
1709
1709
-
} else {
1710
1710
-
return path__default.default.posix.resolve(ppath.cwd(), ...segments);
1711
1711
-
}
1712
1712
-
};
1713
1713
-
const contains = function(pathUtils, from, to) {
1714
1714
-
from = pathUtils.normalize(from);
1715
1715
-
to = pathUtils.normalize(to);
1716
1716
-
if (from === to)
1717
1717
-
return `.`;
1718
1718
-
if (!from.endsWith(pathUtils.sep))
1719
1719
-
from = from + pathUtils.sep;
1720
1720
-
if (to.startsWith(from)) {
1721
1721
-
return to.slice(from.length);
1722
1722
-
} else {
1723
1723
-
return null;
1724
1724
-
}
1725
1725
-
};
1726
1726
-
npath.fromPortablePath = fromPortablePath;
1727
1727
-
npath.toPortablePath = toPortablePath;
1728
1728
-
npath.contains = (from, to) => contains(npath, from, to);
1729
1729
-
ppath.contains = (from, to) => contains(ppath, from, to);
1730
1730
-
const WINDOWS_PATH_REGEXP = /^([a-zA-Z]:.*)$/;
1731
1731
-
const UNC_WINDOWS_PATH_REGEXP = /^\/\/(\.\/)?(.*)$/;
1732
1732
-
const PORTABLE_PATH_REGEXP = /^\/([a-zA-Z]:.*)$/;
1733
1733
-
const UNC_PORTABLE_PATH_REGEXP = /^\/unc\/(\.dot\/)?(.*)$/;
1734
1734
-
function fromPortablePath(p) {
1735
1735
-
if (process.platform !== `win32`)
1736
1736
-
return p;
1737
1737
-
let portablePathMatch, uncPortablePathMatch;
1738
1738
-
if (portablePathMatch = p.match(PORTABLE_PATH_REGEXP))
1739
1739
-
p = portablePathMatch[1];
1740
1740
-
else if (uncPortablePathMatch = p.match(UNC_PORTABLE_PATH_REGEXP))
1741
1741
-
p = `\\\\${uncPortablePathMatch[1] ? `.\\` : ``}${uncPortablePathMatch[2]}`;
1742
1742
-
else
1743
1743
-
return p;
1744
1744
-
return p.replace(/\//g, `\\`);
1745
1745
-
}
1746
1746
-
function toPortablePath(p) {
1747
1747
-
if (process.platform !== `win32`)
1748
1748
-
return p;
1749
1749
-
p = p.replace(/\\/g, `/`);
1750
1750
-
let windowsPathMatch, uncWindowsPathMatch;
1751
1751
-
if (windowsPathMatch = p.match(WINDOWS_PATH_REGEXP))
1752
1752
-
p = `/${windowsPathMatch[1]}`;
1753
1753
-
else if (uncWindowsPathMatch = p.match(UNC_WINDOWS_PATH_REGEXP))
1754
1754
-
p = `/unc/${uncWindowsPathMatch[1] ? `.dot/` : ``}${uncWindowsPathMatch[2]}`;
1755
1755
-
return p;
1756
1756
-
}
1757
1757
-
function convertPath(targetPathUtils, sourcePath) {
1758
1758
-
return targetPathUtils === npath ? fromPortablePath(sourcePath) : toPortablePath(sourcePath);
1759
1759
-
}
1760
1760
-
1761
1761
-
const defaultTime = new Date(SAFE_TIME * 1e3);
1762
1762
-
async function copyPromise(destinationFs, destination, sourceFs, source, opts) {
1763
1763
-
const normalizedDestination = destinationFs.pathUtils.normalize(destination);
1764
1764
-
const normalizedSource = sourceFs.pathUtils.normalize(source);
1765
1765
-
const prelayout = [];
1766
1766
-
const postlayout = [];
1767
1767
-
const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : await sourceFs.lstatPromise(normalizedSource);
1768
1768
-
await destinationFs.mkdirpPromise(destinationFs.pathUtils.dirname(destination), { utimes: [atime, mtime] });
1769
1769
-
const updateTime = typeof destinationFs.lutimesPromise === `function` ? destinationFs.lutimesPromise.bind(destinationFs) : destinationFs.utimesPromise.bind(destinationFs);
1770
1770
-
await copyImpl(prelayout, postlayout, updateTime, destinationFs, normalizedDestination, sourceFs, normalizedSource, { ...opts, didParentExist: true });
1771
1771
-
for (const operation of prelayout)
1772
1772
-
await operation();
1773
1773
-
await Promise.all(postlayout.map((operation) => {
1774
1774
-
return operation();
1775
1775
-
}));
1776
1776
-
}
1777
1777
-
async function copyImpl(prelayout, postlayout, updateTime, destinationFs, destination, sourceFs, source, opts) {
1778
1778
-
var _a, _b;
1779
1779
-
const destinationStat = opts.didParentExist ? await maybeLStat(destinationFs, destination) : null;
1780
1780
-
const sourceStat = await sourceFs.lstatPromise(source);
1781
1781
-
const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : sourceStat;
1782
1782
-
let updated;
1783
1783
-
switch (true) {
1784
1784
-
case sourceStat.isDirectory():
1785
1785
-
{
1786
1786
-
updated = await copyFolder(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts);
1787
1787
-
}
1788
1788
-
break;
1789
1789
-
case sourceStat.isFile():
1790
1790
-
{
1791
1791
-
updated = await copyFile(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts);
1792
1792
-
}
1793
1793
-
break;
1794
1794
-
case sourceStat.isSymbolicLink():
1795
1795
-
{
1796
1796
-
updated = await copySymlink(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts);
1797
1797
-
}
1798
1798
-
break;
1799
1799
-
default:
1800
1800
-
{
1801
1801
-
throw new Error(`Unsupported file type (${sourceStat.mode})`);
1802
1802
-
}
1803
1803
-
}
1804
1804
-
if (updated || ((_a = destinationStat == null ? void 0 : destinationStat.mtime) == null ? void 0 : _a.getTime()) !== mtime.getTime() || ((_b = destinationStat == null ? void 0 : destinationStat.atime) == null ? void 0 : _b.getTime()) !== atime.getTime()) {
1805
1805
-
postlayout.push(() => updateTime(destination, atime, mtime));
1806
1806
-
updated = true;
1807
1807
-
}
1808
1808
-
if (destinationStat === null || (destinationStat.mode & 511) !== (sourceStat.mode & 511)) {
1809
1809
-
postlayout.push(() => destinationFs.chmodPromise(destination, sourceStat.mode & 511));
1810
1810
-
updated = true;
1811
1811
-
}
1812
1812
-
return updated;
1813
1813
-
}
1814
1814
-
async function maybeLStat(baseFs, p) {
1815
1815
-
try {
1816
1816
-
return await baseFs.lstatPromise(p);
1817
1817
-
} catch (e) {
1818
1818
-
return null;
1819
1819
-
}
1820
1820
-
}
1821
1821
-
async function copyFolder(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) {
1822
1822
-
if (destinationStat !== null && !destinationStat.isDirectory()) {
1823
1823
-
if (opts.overwrite) {
1824
1824
-
prelayout.push(async () => destinationFs.removePromise(destination));
1825
1825
-
destinationStat = null;
1826
1826
-
} else {
1827
1827
-
return false;
1828
1828
-
}
1829
1829
-
}
1830
1830
-
let updated = false;
1831
1831
-
if (destinationStat === null) {
1832
1832
-
prelayout.push(async () => {
1833
1833
-
try {
1834
1834
-
await destinationFs.mkdirPromise(destination, { mode: sourceStat.mode });
1835
1835
-
} catch (err) {
1836
1836
-
if (err.code !== `EEXIST`) {
1837
1837
-
throw err;
1838
1838
-
}
1839
1839
-
}
1840
1840
-
});
1841
1841
-
updated = true;
1842
1842
-
}
1843
1843
-
const entries = await sourceFs.readdirPromise(source);
1844
1844
-
const nextOpts = opts.didParentExist && !destinationStat ? { ...opts, didParentExist: false } : opts;
1845
1845
-
if (opts.stableSort) {
1846
1846
-
for (const entry of entries.sort()) {
1847
1847
-
if (await copyImpl(prelayout, postlayout, updateTime, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts)) {
1848
1848
-
updated = true;
1849
1849
-
}
1850
1850
-
}
1851
1851
-
} else {
1852
1852
-
const entriesUpdateStatus = await Promise.all(entries.map(async (entry) => {
1853
1853
-
await copyImpl(prelayout, postlayout, updateTime, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts);
1854
1854
-
}));
1855
1855
-
if (entriesUpdateStatus.some((status) => status)) {
1856
1856
-
updated = true;
1857
1857
-
}
1858
1858
-
}
1859
1859
-
return updated;
1860
1860
-
}
1861
1861
-
const isCloneSupportedCache = /* @__PURE__ */ new WeakMap();
1862
1862
-
function makeLinkOperation(opFs, destination, source, sourceStat, linkStrategy) {
1863
1863
-
return async () => {
1864
1864
-
await opFs.linkPromise(source, destination);
1865
1865
-
if (linkStrategy === "readOnly" /* ReadOnly */) {
1866
1866
-
sourceStat.mode &= ~146;
1867
1867
-
await opFs.chmodPromise(destination, sourceStat.mode);
1868
1868
-
}
1869
1869
-
};
1870
1870
-
}
1871
1871
-
function makeCloneLinkOperation(opFs, destination, source, sourceStat, linkStrategy) {
1872
1872
-
const isCloneSupported = isCloneSupportedCache.get(opFs);
1873
1873
-
if (typeof isCloneSupported === `undefined`) {
1874
1874
-
return async () => {
1875
1875
-
try {
1876
1876
-
await opFs.copyFilePromise(source, destination, fs__default.default.constants.COPYFILE_FICLONE_FORCE);
1877
1877
-
isCloneSupportedCache.set(opFs, true);
1878
1878
-
} catch (err) {
1879
1879
-
if (err.code === `ENOSYS` || err.code === `ENOTSUP`) {
1880
1880
-
isCloneSupportedCache.set(opFs, false);
1881
1881
-
await makeLinkOperation(opFs, destination, source, sourceStat, linkStrategy)();
1882
1882
-
} else {
1883
1883
-
throw err;
1884
1884
-
}
1885
1885
-
}
1886
1886
-
};
1887
1887
-
} else {
1888
1888
-
if (isCloneSupported) {
1889
1889
-
return async () => opFs.copyFilePromise(source, destination, fs__default.default.constants.COPYFILE_FICLONE_FORCE);
1890
1890
-
} else {
1891
1891
-
return makeLinkOperation(opFs, destination, source, sourceStat, linkStrategy);
1892
1892
-
}
1893
1893
-
}
1894
1894
-
}
1895
1895
-
async function copyFile(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) {
1896
1896
-
var _a;
1897
1897
-
if (destinationStat !== null) {
1898
1898
-
if (opts.overwrite) {
1899
1899
-
prelayout.push(async () => destinationFs.removePromise(destination));
1900
1900
-
destinationStat = null;
1901
1901
-
} else {
1902
1902
-
return false;
1903
1903
-
}
1904
1904
-
}
1905
1905
-
const linkStrategy = (_a = opts.linkStrategy) != null ? _a : null;
1906
1906
-
const op = destinationFs === sourceFs ? linkStrategy !== null ? makeCloneLinkOperation(destinationFs, destination, source, sourceStat, linkStrategy) : async () => destinationFs.copyFilePromise(source, destination, fs__default.default.constants.COPYFILE_FICLONE) : linkStrategy !== null ? makeLinkOperation(destinationFs, destination, source, sourceStat, linkStrategy) : async () => destinationFs.writeFilePromise(destination, await sourceFs.readFilePromise(source));
1907
1907
-
prelayout.push(async () => op());
1908
1908
-
return true;
1909
1909
-
}
1910
1910
-
async function copySymlink(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) {
1911
1911
-
if (destinationStat !== null) {
1912
1912
-
if (opts.overwrite) {
1913
1913
-
prelayout.push(async () => destinationFs.removePromise(destination));
1914
1914
-
destinationStat = null;
1915
1915
-
} else {
1916
1916
-
return false;
1917
1917
-
}
1918
1918
-
}
1919
1919
-
prelayout.push(async () => {
1920
1920
-
await destinationFs.symlinkPromise(convertPath(destinationFs.pathUtils, await sourceFs.readlinkPromise(source)), destination);
1921
1921
-
});
1922
1922
-
return true;
1923
1923
-
}
1924
1924
-
1925
1925
-
function makeError$1(code, message) {
1926
1926
-
return Object.assign(new Error(`${code}: ${message}`), { code });
1927
1927
-
}
1928
1928
-
function EBUSY(message) {
1929
1929
-
return makeError$1(`EBUSY`, message);
1930
1930
-
}
1931
1931
-
function ENOSYS(message, reason) {
1932
1932
-
return makeError$1(`ENOSYS`, `${message}, ${reason}`);
1933
1933
-
}
1934
1934
-
function EINVAL(reason) {
1935
1935
-
return makeError$1(`EINVAL`, `invalid argument, ${reason}`);
1936
1936
-
}
1937
1937
-
function EBADF(reason) {
1938
1938
-
return makeError$1(`EBADF`, `bad file descriptor, ${reason}`);
1939
1939
-
}
1940
1940
-
function ENOENT(reason) {
1941
1941
-
return makeError$1(`ENOENT`, `no such file or directory, ${reason}`);
1942
1942
-
}
1943
1943
-
function ENOTDIR(reason) {
1944
1944
-
return makeError$1(`ENOTDIR`, `not a directory, ${reason}`);
1945
1945
-
}
1946
1946
-
function EISDIR(reason) {
1947
1947
-
return makeError$1(`EISDIR`, `illegal operation on a directory, ${reason}`);
1948
1948
-
}
1949
1949
-
function EEXIST(reason) {
1950
1950
-
return makeError$1(`EEXIST`, `file already exists, ${reason}`);
1951
1951
-
}
1952
1952
-
function EROFS(reason) {
1953
1953
-
return makeError$1(`EROFS`, `read-only filesystem, ${reason}`);
1954
1954
-
}
1955
1955
-
function ENOTEMPTY(reason) {
1956
1956
-
return makeError$1(`ENOTEMPTY`, `directory not empty, ${reason}`);
1957
1957
-
}
1958
1958
-
function EOPNOTSUPP(reason) {
1959
1959
-
return makeError$1(`EOPNOTSUPP`, `operation not supported, ${reason}`);
1960
1960
-
}
1961
1961
-
function ERR_DIR_CLOSED() {
1962
1962
-
return makeError$1(`ERR_DIR_CLOSED`, `Directory handle was closed`);
1963
1963
-
}
1964
1964
-
class LibzipError extends Error {
1965
1965
-
constructor(message, code) {
1966
1966
-
super(message);
1967
1967
-
this.name = `Libzip Error`;
1968
1968
-
this.code = code;
1969
1969
-
}
1970
1970
-
}
1971
1971
-
1972
1972
-
class CustomDir {
1973
1973
-
constructor(path, nextDirent, opts = {}) {
1974
1974
-
this.path = path;
1975
1975
-
this.nextDirent = nextDirent;
1976
1976
-
this.opts = opts;
1977
1977
-
this.closed = false;
1978
1978
-
}
1979
1979
-
throwIfClosed() {
1980
1980
-
if (this.closed) {
1981
1981
-
throw ERR_DIR_CLOSED();
1982
1982
-
}
1983
1983
-
}
1984
1984
-
async *[Symbol.asyncIterator]() {
1985
1985
-
try {
1986
1986
-
let dirent;
1987
1987
-
while ((dirent = await this.read()) !== null) {
1988
1988
-
yield dirent;
1989
1989
-
}
1990
1990
-
} finally {
1991
1991
-
await this.close();
1992
1992
-
}
1993
1993
-
}
1994
1994
-
read(cb) {
1995
1995
-
const dirent = this.readSync();
1996
1996
-
if (typeof cb !== `undefined`)
1997
1997
-
return cb(null, dirent);
1998
1998
-
return Promise.resolve(dirent);
1999
1999
-
}
2000
2000
-
readSync() {
2001
2001
-
this.throwIfClosed();
2002
2002
-
return this.nextDirent();
2003
2003
-
}
2004
2004
-
close(cb) {
2005
2005
-
this.closeSync();
2006
2006
-
if (typeof cb !== `undefined`)
2007
2007
-
return cb(null);
2008
2008
-
return Promise.resolve();
2009
2009
-
}
2010
2010
-
closeSync() {
2011
2011
-
var _a, _b;
2012
2012
-
this.throwIfClosed();
2013
2013
-
(_b = (_a = this.opts).onClose) == null ? void 0 : _b.call(_a);
2014
2014
-
this.closed = true;
2015
2015
-
}
2016
2016
-
}
2017
2017
-
function opendir(fakeFs, path, entries, opts) {
2018
2018
-
const nextDirent = () => {
2019
2019
-
const filename = entries.shift();
2020
2020
-
if (typeof filename === `undefined`)
2021
2021
-
return null;
2022
2022
-
return Object.assign(fakeFs.statSync(fakeFs.pathUtils.join(path, filename)), {
2023
2023
-
name: filename
2024
2024
-
});
2025
2025
-
};
2026
2026
-
return new CustomDir(path, nextDirent, opts);
2027
2027
-
}
2028
2028
-
2029
2029
-
class FakeFS {
2030
2030
-
constructor(pathUtils) {
2031
2031
-
this.pathUtils = pathUtils;
2032
2032
-
}
2033
2033
-
async *genTraversePromise(init, { stableSort = false } = {}) {
2034
2034
-
const stack = [init];
2035
2035
-
while (stack.length > 0) {
2036
2036
-
const p = stack.shift();
2037
2037
-
const entry = await this.lstatPromise(p);
2038
2038
-
if (entry.isDirectory()) {
2039
2039
-
const entries = await this.readdirPromise(p);
2040
2040
-
if (stableSort) {
2041
2041
-
for (const entry2 of entries.sort()) {
2042
2042
-
stack.push(this.pathUtils.join(p, entry2));
2043
2043
-
}
2044
2044
-
} else {
2045
2045
-
throw new Error(`Not supported`);
2046
2046
-
}
2047
2047
-
} else {
2048
2048
-
yield p;
2049
2049
-
}
2050
2050
-
}
2051
2051
-
}
2052
2052
-
async removePromise(p, { recursive = true, maxRetries = 5 } = {}) {
2053
2053
-
let stat;
2054
2054
-
try {
2055
2055
-
stat = await this.lstatPromise(p);
2056
2056
-
} catch (error) {
2057
2057
-
if (error.code === `ENOENT`) {
2058
2058
-
return;
2059
2059
-
} else {
2060
2060
-
throw error;
2061
2061
-
}
2062
2062
-
}
2063
2063
-
if (stat.isDirectory()) {
2064
2064
-
if (recursive) {
2065
2065
-
const entries = await this.readdirPromise(p);
2066
2066
-
await Promise.all(entries.map((entry) => {
2067
2067
-
return this.removePromise(this.pathUtils.resolve(p, entry));
2068
2068
-
}));
2069
2069
-
}
2070
2070
-
for (let t = 0; t <= maxRetries; t++) {
2071
2071
-
try {
2072
2072
-
await this.rmdirPromise(p);
2073
2073
-
break;
2074
2074
-
} catch (error) {
2075
2075
-
if (error.code !== `EBUSY` && error.code !== `ENOTEMPTY`) {
2076
2076
-
throw error;
2077
2077
-
} else if (t < maxRetries) {
2078
2078
-
await new Promise((resolve) => setTimeout(resolve, t * 100));
2079
2079
-
}
2080
2080
-
}
2081
2081
-
}
2082
2082
-
} else {
2083
2083
-
await this.unlinkPromise(p);
2084
2084
-
}
2085
2085
-
}
2086
2086
-
removeSync(p, { recursive = true } = {}) {
2087
2087
-
let stat;
2088
2088
-
try {
2089
2089
-
stat = this.lstatSync(p);
2090
2090
-
} catch (error) {
2091
2091
-
if (error.code === `ENOENT`) {
2092
2092
-
return;
2093
2093
-
} else {
2094
2094
-
throw error;
2095
2095
-
}
2096
2096
-
}
2097
2097
-
if (stat.isDirectory()) {
2098
2098
-
if (recursive)
2099
2099
-
for (const entry of this.readdirSync(p))
2100
2100
-
this.removeSync(this.pathUtils.resolve(p, entry));
2101
2101
-
this.rmdirSync(p);
2102
2102
-
} else {
2103
2103
-
this.unlinkSync(p);
2104
2104
-
}
2105
2105
-
}
2106
2106
-
async mkdirpPromise(p, { chmod, utimes } = {}) {
2107
2107
-
p = this.resolve(p);
2108
2108
-
if (p === this.pathUtils.dirname(p))
2109
2109
-
return void 0;
2110
2110
-
const parts = p.split(this.pathUtils.sep);
2111
2111
-
let createdDirectory;
2112
2112
-
for (let u = 2; u <= parts.length; ++u) {
2113
2113
-
const subPath = parts.slice(0, u).join(this.pathUtils.sep);
2114
2114
-
if (!this.existsSync(subPath)) {
2115
2115
-
try {
2116
2116
-
await this.mkdirPromise(subPath);
2117
2117
-
} catch (error) {
2118
2118
-
if (error.code === `EEXIST`) {
2119
2119
-
continue;
2120
2120
-
} else {
2121
2121
-
throw error;
2122
2122
-
}
2123
2123
-
}
2124
2124
-
createdDirectory != null ? createdDirectory : createdDirectory = subPath;
2125
2125
-
if (chmod != null)
2126
2126
-
await this.chmodPromise(subPath, chmod);
2127
2127
-
if (utimes != null) {
2128
2128
-
await this.utimesPromise(subPath, utimes[0], utimes[1]);
2129
2129
-
} else {
2130
2130
-
const parentStat = await this.statPromise(this.pathUtils.dirname(subPath));
2131
2131
-
await this.utimesPromise(subPath, parentStat.atime, parentStat.mtime);
2132
2132
-
}
2133
2133
-
}
2134
2134
-
}
2135
2135
-
return createdDirectory;
2136
2136
-
}
2137
2137
-
mkdirpSync(p, { chmod, utimes } = {}) {
2138
2138
-
p = this.resolve(p);
2139
2139
-
if (p === this.pathUtils.dirname(p))
2140
2140
-
return void 0;
2141
2141
-
const parts = p.split(this.pathUtils.sep);
2142
2142
-
let createdDirectory;
2143
2143
-
for (let u = 2; u <= parts.length; ++u) {
2144
2144
-
const subPath = parts.slice(0, u).join(this.pathUtils.sep);
2145
2145
-
if (!this.existsSync(subPath)) {
2146
2146
-
try {
2147
2147
-
this.mkdirSync(subPath);
2148
2148
-
} catch (error) {
2149
2149
-
if (error.code === `EEXIST`) {
2150
2150
-
continue;
2151
2151
-
} else {
2152
2152
-
throw error;
2153
2153
-
}
2154
2154
-
}
2155
2155
-
createdDirectory != null ? createdDirectory : createdDirectory = subPath;
2156
2156
-
if (chmod != null)
2157
2157
-
this.chmodSync(subPath, chmod);
2158
2158
-
if (utimes != null) {
2159
2159
-
this.utimesSync(subPath, utimes[0], utimes[1]);
2160
2160
-
} else {
2161
2161
-
const parentStat = this.statSync(this.pathUtils.dirname(subPath));
2162
2162
-
this.utimesSync(subPath, parentStat.atime, parentStat.mtime);
2163
2163
-
}
2164
2164
-
}
2165
2165
-
}
2166
2166
-
return createdDirectory;
2167
2167
-
}
2168
2168
-
async copyPromise(destination, source, { baseFs = this, overwrite = true, stableSort = false, stableTime = false, linkStrategy = null } = {}) {
2169
2169
-
return await copyPromise(this, destination, baseFs, source, { overwrite, stableSort, stableTime, linkStrategy });
2170
2170
-
}
2171
2171
-
copySync(destination, source, { baseFs = this, overwrite = true } = {}) {
2172
2172
-
const stat = baseFs.lstatSync(source);
2173
2173
-
const exists = this.existsSync(destination);
2174
2174
-
if (stat.isDirectory()) {
2175
2175
-
this.mkdirpSync(destination);
2176
2176
-
const directoryListing = baseFs.readdirSync(source);
2177
2177
-
for (const entry of directoryListing) {
2178
2178
-
this.copySync(this.pathUtils.join(destination, entry), baseFs.pathUtils.join(source, entry), { baseFs, overwrite });
2179
2179
-
}
2180
2180
-
} else if (stat.isFile()) {
2181
2181
-
if (!exists || overwrite) {
2182
2182
-
if (exists)
2183
2183
-
this.removeSync(destination);
2184
2184
-
const content = baseFs.readFileSync(source);
2185
2185
-
this.writeFileSync(destination, content);
2186
2186
-
}
2187
2187
-
} else if (stat.isSymbolicLink()) {
2188
2188
-
if (!exists || overwrite) {
2189
2189
-
if (exists)
2190
2190
-
this.removeSync(destination);
2191
2191
-
const target = baseFs.readlinkSync(source);
2192
2192
-
this.symlinkSync(convertPath(this.pathUtils, target), destination);
2193
2193
-
}
2194
2194
-
} else {
2195
2195
-
throw new Error(`Unsupported file type (file: ${source}, mode: 0o${stat.mode.toString(8).padStart(6, `0`)})`);
2196
2196
-
}
2197
2197
-
const mode = stat.mode & 511;
2198
2198
-
this.chmodSync(destination, mode);
2199
2199
-
}
2200
2200
-
async changeFilePromise(p, content, opts = {}) {
2201
2201
-
if (Buffer.isBuffer(content)) {
2202
2202
-
return this.changeFileBufferPromise(p, content, opts);
2203
2203
-
} else {
2204
2204
-
return this.changeFileTextPromise(p, content, opts);
2205
2205
-
}
2206
2206
-
}
2207
2207
-
async changeFileBufferPromise(p, content, { mode } = {}) {
2208
2208
-
let current = Buffer.alloc(0);
2209
2209
-
try {
2210
2210
-
current = await this.readFilePromise(p);
2211
2211
-
} catch (error) {
2212
2212
-
}
2213
2213
-
if (Buffer.compare(current, content) === 0)
2214
2214
-
return;
2215
2215
-
await this.writeFilePromise(p, content, { mode });
2216
2216
-
}
2217
2217
-
async changeFileTextPromise(p, content, { automaticNewlines, mode } = {}) {
2218
2218
-
let current = ``;
2219
2219
-
try {
2220
2220
-
current = await this.readFilePromise(p, `utf8`);
2221
2221
-
} catch (error) {
2222
2222
-
}
2223
2223
-
const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content;
2224
2224
-
if (current === normalizedContent)
2225
2225
-
return;
2226
2226
-
await this.writeFilePromise(p, normalizedContent, { mode });
2227
2227
-
}
2228
2228
-
changeFileSync(p, content, opts = {}) {
2229
2229
-
if (Buffer.isBuffer(content)) {
2230
2230
-
return this.changeFileBufferSync(p, content, opts);
2231
2231
-
} else {
2232
2232
-
return this.changeFileTextSync(p, content, opts);
2233
2233
-
}
2234
2234
-
}
2235
2235
-
changeFileBufferSync(p, content, { mode } = {}) {
2236
2236
-
let current = Buffer.alloc(0);
2237
2237
-
try {
2238
2238
-
current = this.readFileSync(p);
2239
2239
-
} catch (error) {
2240
2240
-
}
2241
2241
-
if (Buffer.compare(current, content) === 0)
2242
2242
-
return;
2243
2243
-
this.writeFileSync(p, content, { mode });
2244
2244
-
}
2245
2245
-
changeFileTextSync(p, content, { automaticNewlines = false, mode } = {}) {
2246
2246
-
let current = ``;
2247
2247
-
try {
2248
2248
-
current = this.readFileSync(p, `utf8`);
2249
2249
-
} catch (error) {
2250
2250
-
}
2251
2251
-
const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content;
2252
2252
-
if (current === normalizedContent)
2253
2253
-
return;
2254
2254
-
this.writeFileSync(p, normalizedContent, { mode });
2255
2255
-
}
2256
2256
-
async movePromise(fromP, toP) {
2257
2257
-
try {
2258
2258
-
await this.renamePromise(fromP, toP);
2259
2259
-
} catch (error) {
2260
2260
-
if (error.code === `EXDEV`) {
2261
2261
-
await this.copyPromise(toP, fromP);
2262
2262
-
await this.removePromise(fromP);
2263
2263
-
} else {
2264
2264
-
throw error;
2265
2265
-
}
2266
2266
-
}
2267
2267
-
}
2268
2268
-
moveSync(fromP, toP) {
2269
2269
-
try {
2270
2270
-
this.renameSync(fromP, toP);
2271
2271
-
} catch (error) {
2272
2272
-
if (error.code === `EXDEV`) {
2273
2273
-
this.copySync(toP, fromP);
2274
2274
-
this.removeSync(fromP);
2275
2275
-
} else {
2276
2276
-
throw error;
2277
2277
-
}
2278
2278
-
}
2279
2279
-
}
2280
2280
-
async lockPromise(affectedPath, callback) {
2281
2281
-
const lockPath = `${affectedPath}.flock`;
2282
2282
-
const interval = 1e3 / 60;
2283
2283
-
const startTime = Date.now();
2284
2284
-
let fd = null;
2285
2285
-
const isAlive = async () => {
2286
2286
-
let pid;
2287
2287
-
try {
2288
2288
-
[pid] = await this.readJsonPromise(lockPath);
2289
2289
-
} catch (error) {
2290
2290
-
return Date.now() - startTime < 500;
2291
2291
-
}
2292
2292
-
try {
2293
2293
-
process.kill(pid, 0);
2294
2294
-
return true;
2295
2295
-
} catch (error) {
2296
2296
-
return false;
2297
2297
-
}
2298
2298
-
};
2299
2299
-
while (fd === null) {
2300
2300
-
try {
2301
2301
-
fd = await this.openPromise(lockPath, `wx`);
2302
2302
-
} catch (error) {
2303
2303
-
if (error.code === `EEXIST`) {
2304
2304
-
if (!await isAlive()) {
2305
2305
-
try {
2306
2306
-
await this.unlinkPromise(lockPath);
2307
2307
-
continue;
2308
2308
-
} catch (error2) {
2309
2309
-
}
2310
2310
-
}
2311
2311
-
if (Date.now() - startTime < 60 * 1e3) {
2312
2312
-
await new Promise((resolve) => setTimeout(resolve, interval));
2313
2313
-
} else {
2314
2314
-
throw new Error(`Couldn't acquire a lock in a reasonable time (via ${lockPath})`);
2315
2315
-
}
2316
2316
-
} else {
2317
2317
-
throw error;
2318
2318
-
}
2319
2319
-
}
2320
2320
-
}
2321
2321
-
await this.writePromise(fd, JSON.stringify([process.pid]));
2322
2322
-
try {
2323
2323
-
return await callback();
2324
2324
-
} finally {
2325
2325
-
try {
2326
2326
-
await this.closePromise(fd);
2327
2327
-
await this.unlinkPromise(lockPath);
2328
2328
-
} catch (error) {
2329
2329
-
}
2330
2330
-
}
2331
2331
-
}
2332
2332
-
async readJsonPromise(p) {
2333
2333
-
const content = await this.readFilePromise(p, `utf8`);
2334
2334
-
try {
2335
2335
-
return JSON.parse(content);
2336
2336
-
} catch (error) {
2337
2337
-
error.message += ` (in ${p})`;
2338
2338
-
throw error;
2339
2339
-
}
2340
2340
-
}
2341
2341
-
readJsonSync(p) {
2342
2342
-
const content = this.readFileSync(p, `utf8`);
2343
2343
-
try {
2344
2344
-
return JSON.parse(content);
2345
2345
-
} catch (error) {
2346
2346
-
error.message += ` (in ${p})`;
2347
2347
-
throw error;
2348
2348
-
}
2349
2349
-
}
2350
2350
-
async writeJsonPromise(p, data) {
2351
2351
-
return await this.writeFilePromise(p, `${JSON.stringify(data, null, 2)}
2352
2352
-
`);
2353
2353
-
}
2354
2354
-
writeJsonSync(p, data) {
2355
2355
-
return this.writeFileSync(p, `${JSON.stringify(data, null, 2)}
2356
2356
-
`);
2357
2357
-
}
2358
2358
-
async preserveTimePromise(p, cb) {
2359
2359
-
const stat = await this.lstatPromise(p);
2360
2360
-
const result = await cb();
2361
2361
-
if (typeof result !== `undefined`)
2362
2362
-
p = result;
2363
2363
-
if (this.lutimesPromise) {
2364
2364
-
await this.lutimesPromise(p, stat.atime, stat.mtime);
2365
2365
-
} else if (!stat.isSymbolicLink()) {
2366
2366
-
await this.utimesPromise(p, stat.atime, stat.mtime);
2367
2367
-
}
2368
2368
-
}
2369
2369
-
async preserveTimeSync(p, cb) {
2370
2370
-
const stat = this.lstatSync(p);
2371
2371
-
const result = cb();
2372
2372
-
if (typeof result !== `undefined`)
2373
2373
-
p = result;
2374
2374
-
if (this.lutimesSync) {
2375
2375
-
this.lutimesSync(p, stat.atime, stat.mtime);
2376
2376
-
} else if (!stat.isSymbolicLink()) {
2377
2377
-
this.utimesSync(p, stat.atime, stat.mtime);
2378
2378
-
}
2379
2379
-
}
2380
2380
-
}
2381
2381
-
class BasePortableFakeFS extends FakeFS {
2382
2382
-
constructor() {
2383
2383
-
super(ppath);
2384
2384
-
}
2385
2385
-
}
2386
2386
-
function getEndOfLine(content) {
2387
2387
-
const matches = content.match(/\r?\n/g);
2388
2388
-
if (matches === null)
2389
2389
-
return os.EOL;
2390
2390
-
const crlf = matches.filter((nl) => nl === `\r
2391
2391
-
`).length;
2392
2392
-
const lf = matches.length - crlf;
2393
2393
-
return crlf > lf ? `\r
2394
2394
-
` : `
2395
2395
-
`;
2396
2396
-
}
2397
2397
-
function normalizeLineEndings(originalContent, newContent) {
2398
2398
-
return newContent.replace(/\r?\n/g, getEndOfLine(originalContent));
2399
2399
-
}
2400
2400
-
2401
2401
-
class NodeFS extends BasePortableFakeFS {
2402
2402
-
constructor(realFs = fs__default.default) {
2403
2403
-
super();
2404
2404
-
this.realFs = realFs;
2405
2405
-
if (typeof this.realFs.lutimes !== `undefined`) {
2406
2406
-
this.lutimesPromise = this.lutimesPromiseImpl;
2407
2407
-
this.lutimesSync = this.lutimesSyncImpl;
2408
2408
-
}
2409
2409
-
}
2410
2410
-
getExtractHint() {
2411
2411
-
return false;
2412
2412
-
}
2413
2413
-
getRealPath() {
2414
2414
-
return PortablePath.root;
2415
2415
-
}
2416
2416
-
resolve(p) {
2417
2417
-
return ppath.resolve(p);
2418
2418
-
}
2419
2419
-
async openPromise(p, flags, mode) {
2420
2420
-
return await new Promise((resolve, reject) => {
2421
2421
-
this.realFs.open(npath.fromPortablePath(p), flags, mode, this.makeCallback(resolve, reject));
2422
2422
-
});
2423
2423
-
}
2424
2424
-
openSync(p, flags, mode) {
2425
2425
-
return this.realFs.openSync(npath.fromPortablePath(p), flags, mode);
2426
2426
-
}
2427
2427
-
async opendirPromise(p, opts) {
2428
2428
-
return await new Promise((resolve, reject) => {
2429
2429
-
if (typeof opts !== `undefined`) {
2430
2430
-
this.realFs.opendir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
2431
2431
-
} else {
2432
2432
-
this.realFs.opendir(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
2433
2433
-
}
2434
2434
-
}).then((dir) => {
2435
2435
-
return Object.defineProperty(dir, `path`, { value: p, configurable: true, writable: true });
2436
2436
-
});
2437
2437
-
}
2438
2438
-
opendirSync(p, opts) {
2439
2439
-
const dir = typeof opts !== `undefined` ? this.realFs.opendirSync(npath.fromPortablePath(p), opts) : this.realFs.opendirSync(npath.fromPortablePath(p));
2440
2440
-
return Object.defineProperty(dir, `path`, { value: p, configurable: true, writable: true });
2441
2441
-
}
2442
2442
-
async readPromise(fd, buffer, offset = 0, length = 0, position = -1) {
2443
2443
-
return await new Promise((resolve, reject) => {
2444
2444
-
this.realFs.read(fd, buffer, offset, length, position, (error, bytesRead) => {
2445
2445
-
if (error) {
2446
2446
-
reject(error);
2447
2447
-
} else {
2448
2448
-
resolve(bytesRead);
2449
2449
-
}
2450
2450
-
});
2451
2451
-
});
2452
2452
-
}
2453
2453
-
readSync(fd, buffer, offset, length, position) {
2454
2454
-
return this.realFs.readSync(fd, buffer, offset, length, position);
2455
2455
-
}
2456
2456
-
async writePromise(fd, buffer, offset, length, position) {
2457
2457
-
return await new Promise((resolve, reject) => {
2458
2458
-
if (typeof buffer === `string`) {
2459
2459
-
return this.realFs.write(fd, buffer, offset, this.makeCallback(resolve, reject));
2460
2460
-
} else {
2461
2461
-
return this.realFs.write(fd, buffer, offset, length, position, this.makeCallback(resolve, reject));
2462
2462
-
}
2463
2463
-
});
2464
2464
-
}
2465
2465
-
writeSync(fd, buffer, offset, length, position) {
2466
2466
-
if (typeof buffer === `string`) {
2467
2467
-
return this.realFs.writeSync(fd, buffer, offset);
2468
2468
-
} else {
2469
2469
-
return this.realFs.writeSync(fd, buffer, offset, length, position);
2470
2470
-
}
2471
2471
-
}
2472
2472
-
async closePromise(fd) {
2473
2473
-
await new Promise((resolve, reject) => {
2474
2474
-
this.realFs.close(fd, this.makeCallback(resolve, reject));
2475
2475
-
});
2476
2476
-
}
2477
2477
-
closeSync(fd) {
2478
2478
-
this.realFs.closeSync(fd);
2479
2479
-
}
2480
2480
-
createReadStream(p, opts) {
2481
2481
-
const realPath = p !== null ? npath.fromPortablePath(p) : p;
2482
2482
-
return this.realFs.createReadStream(realPath, opts);
2483
2483
-
}
2484
2484
-
createWriteStream(p, opts) {
2485
2485
-
const realPath = p !== null ? npath.fromPortablePath(p) : p;
2486
2486
-
return this.realFs.createWriteStream(realPath, opts);
2487
2487
-
}
2488
2488
-
async realpathPromise(p) {
2489
2489
-
return await new Promise((resolve, reject) => {
2490
2490
-
this.realFs.realpath(npath.fromPortablePath(p), {}, this.makeCallback(resolve, reject));
2491
2491
-
}).then((path) => {
2492
2492
-
return npath.toPortablePath(path);
2493
2493
-
});
2494
2494
-
}
2495
2495
-
realpathSync(p) {
2496
2496
-
return npath.toPortablePath(this.realFs.realpathSync(npath.fromPortablePath(p), {}));
2497
2497
-
}
2498
2498
-
async existsPromise(p) {
2499
2499
-
return await new Promise((resolve) => {
2500
2500
-
this.realFs.exists(npath.fromPortablePath(p), resolve);
2501
2501
-
});
2502
2502
-
}
2503
2503
-
accessSync(p, mode) {
2504
2504
-
return this.realFs.accessSync(npath.fromPortablePath(p), mode);
2505
2505
-
}
2506
2506
-
async accessPromise(p, mode) {
2507
2507
-
return await new Promise((resolve, reject) => {
2508
2508
-
this.realFs.access(npath.fromPortablePath(p), mode, this.makeCallback(resolve, reject));
2509
2509
-
});
2510
2510
-
}
2511
2511
-
existsSync(p) {
2512
2512
-
return this.realFs.existsSync(npath.fromPortablePath(p));
2513
2513
-
}
2514
2514
-
async statPromise(p, opts) {
2515
2515
-
return await new Promise((resolve, reject) => {
2516
2516
-
if (opts) {
2517
2517
-
this.realFs.stat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
2518
2518
-
} else {
2519
2519
-
this.realFs.stat(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
2520
2520
-
}
2521
2521
-
});
2522
2522
-
}
2523
2523
-
statSync(p, opts) {
2524
2524
-
if (opts) {
2525
2525
-
return this.realFs.statSync(npath.fromPortablePath(p), opts);
2526
2526
-
} else {
2527
2527
-
return this.realFs.statSync(npath.fromPortablePath(p));
2528
2528
-
}
2529
2529
-
}
2530
2530
-
async fstatPromise(fd, opts) {
2531
2531
-
return await new Promise((resolve, reject) => {
2532
2532
-
if (opts) {
2533
2533
-
this.realFs.fstat(fd, opts, this.makeCallback(resolve, reject));
2534
2534
-
} else {
2535
2535
-
this.realFs.fstat(fd, this.makeCallback(resolve, reject));
2536
2536
-
}
2537
2537
-
});
2538
2538
-
}
2539
2539
-
fstatSync(fd, opts) {
2540
2540
-
if (opts) {
2541
2541
-
return this.realFs.fstatSync(fd, opts);
2542
2542
-
} else {
2543
2543
-
return this.realFs.fstatSync(fd);
2544
2544
-
}
2545
2545
-
}
2546
2546
-
async lstatPromise(p, opts) {
2547
2547
-
return await new Promise((resolve, reject) => {
2548
2548
-
if (opts) {
2549
2549
-
this.realFs.lstat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
2550
2550
-
} else {
2551
2551
-
this.realFs.lstat(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
2552
2552
-
}
2553
2553
-
});
2554
2554
-
}
2555
2555
-
lstatSync(p, opts) {
2556
2556
-
if (opts) {
2557
2557
-
return this.realFs.lstatSync(npath.fromPortablePath(p), opts);
2558
2558
-
} else {
2559
2559
-
return this.realFs.lstatSync(npath.fromPortablePath(p));
2560
2560
-
}
2561
2561
-
}
2562
2562
-
async fchmodPromise(fd, mask) {
2563
2563
-
return await new Promise((resolve, reject) => {
2564
2564
-
this.realFs.fchmod(fd, mask, this.makeCallback(resolve, reject));
2565
2565
-
});
2566
2566
-
}
2567
2567
-
fchmodSync(fd, mask) {
2568
2568
-
return this.realFs.fchmodSync(fd, mask);
2569
2569
-
}
2570
2570
-
async chmodPromise(p, mask) {
2571
2571
-
return await new Promise((resolve, reject) => {
2572
2572
-
this.realFs.chmod(npath.fromPortablePath(p), mask, this.makeCallback(resolve, reject));
2573
2573
-
});
2574
2574
-
}
2575
2575
-
chmodSync(p, mask) {
2576
2576
-
return this.realFs.chmodSync(npath.fromPortablePath(p), mask);
2577
2577
-
}
2578
2578
-
async fchownPromise(fd, uid, gid) {
2579
2579
-
return await new Promise((resolve, reject) => {
2580
2580
-
this.realFs.fchown(fd, uid, gid, this.makeCallback(resolve, reject));
2581
2581
-
});
2582
2582
-
}
2583
2583
-
fchownSync(fd, uid, gid) {
2584
2584
-
return this.realFs.fchownSync(fd, uid, gid);
2585
2585
-
}
2586
2586
-
async chownPromise(p, uid, gid) {
2587
2587
-
return await new Promise((resolve, reject) => {
2588
2588
-
this.realFs.chown(npath.fromPortablePath(p), uid, gid, this.makeCallback(resolve, reject));
2589
2589
-
});
2590
2590
-
}
2591
2591
-
chownSync(p, uid, gid) {
2592
2592
-
return this.realFs.chownSync(npath.fromPortablePath(p), uid, gid);
2593
2593
-
}
2594
2594
-
async renamePromise(oldP, newP) {
2595
2595
-
return await new Promise((resolve, reject) => {
2596
2596
-
this.realFs.rename(npath.fromPortablePath(oldP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject));
2597
2597
-
});
2598
2598
-
}
2599
2599
-
renameSync(oldP, newP) {
2600
2600
-
return this.realFs.renameSync(npath.fromPortablePath(oldP), npath.fromPortablePath(newP));
2601
2601
-
}
2602
2602
-
async copyFilePromise(sourceP, destP, flags = 0) {
2603
2603
-
return await new Promise((resolve, reject) => {
2604
2604
-
this.realFs.copyFile(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags, this.makeCallback(resolve, reject));
2605
2605
-
});
2606
2606
-
}
2607
2607
-
copyFileSync(sourceP, destP, flags = 0) {
2608
2608
-
return this.realFs.copyFileSync(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags);
2609
2609
-
}
2610
2610
-
async appendFilePromise(p, content, opts) {
2611
2611
-
return await new Promise((resolve, reject) => {
2612
2612
-
const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
2613
2613
-
if (opts) {
2614
2614
-
this.realFs.appendFile(fsNativePath, content, opts, this.makeCallback(resolve, reject));
2615
2615
-
} else {
2616
2616
-
this.realFs.appendFile(fsNativePath, content, this.makeCallback(resolve, reject));
2617
2617
-
}
2618
2618
-
});
2619
2619
-
}
2620
2620
-
appendFileSync(p, content, opts) {
2621
2621
-
const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
2622
2622
-
if (opts) {
2623
2623
-
this.realFs.appendFileSync(fsNativePath, content, opts);
2624
2624
-
} else {
2625
2625
-
this.realFs.appendFileSync(fsNativePath, content);
2626
2626
-
}
2627
2627
-
}
2628
2628
-
async writeFilePromise(p, content, opts) {
2629
2629
-
return await new Promise((resolve, reject) => {
2630
2630
-
const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
2631
2631
-
if (opts) {
2632
2632
-
this.realFs.writeFile(fsNativePath, content, opts, this.makeCallback(resolve, reject));
2633
2633
-
} else {
2634
2634
-
this.realFs.writeFile(fsNativePath, content, this.makeCallback(resolve, reject));
2635
2635
-
}
2636
2636
-
});
2637
2637
-
}
2638
2638
-
writeFileSync(p, content, opts) {
2639
2639
-
const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
2640
2640
-
if (opts) {
2641
2641
-
this.realFs.writeFileSync(fsNativePath, content, opts);
2642
2642
-
} else {
2643
2643
-
this.realFs.writeFileSync(fsNativePath, content);
2644
2644
-
}
2645
2645
-
}
2646
2646
-
async unlinkPromise(p) {
2647
2647
-
return await new Promise((resolve, reject) => {
2648
2648
-
this.realFs.unlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
2649
2649
-
});
2650
2650
-
}
2651
2651
-
unlinkSync(p) {
2652
2652
-
return this.realFs.unlinkSync(npath.fromPortablePath(p));
2653
2653
-
}
2654
2654
-
async utimesPromise(p, atime, mtime) {
2655
2655
-
return await new Promise((resolve, reject) => {
2656
2656
-
this.realFs.utimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject));
2657
2657
-
});
2658
2658
-
}
2659
2659
-
utimesSync(p, atime, mtime) {
2660
2660
-
this.realFs.utimesSync(npath.fromPortablePath(p), atime, mtime);
2661
2661
-
}
2662
2662
-
async lutimesPromiseImpl(p, atime, mtime) {
2663
2663
-
const lutimes = this.realFs.lutimes;
2664
2664
-
if (typeof lutimes === `undefined`)
2665
2665
-
throw ENOSYS(`unavailable Node binding`, `lutimes '${p}'`);
2666
2666
-
return await new Promise((resolve, reject) => {
2667
2667
-
lutimes.call(this.realFs, npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject));
2668
2668
-
});
2669
2669
-
}
2670
2670
-
lutimesSyncImpl(p, atime, mtime) {
2671
2671
-
const lutimesSync = this.realFs.lutimesSync;
2672
2672
-
if (typeof lutimesSync === `undefined`)
2673
2673
-
throw ENOSYS(`unavailable Node binding`, `lutimes '${p}'`);
2674
2674
-
lutimesSync.call(this.realFs, npath.fromPortablePath(p), atime, mtime);
2675
2675
-
}
2676
2676
-
async mkdirPromise(p, opts) {
2677
2677
-
return await new Promise((resolve, reject) => {
2678
2678
-
this.realFs.mkdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
2679
2679
-
});
2680
2680
-
}
2681
2681
-
mkdirSync(p, opts) {
2682
2682
-
return this.realFs.mkdirSync(npath.fromPortablePath(p), opts);
2683
2683
-
}
2684
2684
-
async rmdirPromise(p, opts) {
2685
2685
-
return await new Promise((resolve, reject) => {
2686
2686
-
if (opts) {
2687
2687
-
this.realFs.rmdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
2688
2688
-
} else {
2689
2689
-
this.realFs.rmdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
2690
2690
-
}
2691
2691
-
});
2692
2692
-
}
2693
2693
-
rmdirSync(p, opts) {
2694
2694
-
return this.realFs.rmdirSync(npath.fromPortablePath(p), opts);
2695
2695
-
}
2696
2696
-
async linkPromise(existingP, newP) {
2697
2697
-
return await new Promise((resolve, reject) => {
2698
2698
-
this.realFs.link(npath.fromPortablePath(existingP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject));
2699
2699
-
});
2700
2700
-
}
2701
2701
-
linkSync(existingP, newP) {
2702
2702
-
return this.realFs.linkSync(npath.fromPortablePath(existingP), npath.fromPortablePath(newP));
2703
2703
-
}
2704
2704
-
async symlinkPromise(target, p, type) {
2705
2705
-
return await new Promise((resolve, reject) => {
2706
2706
-
this.realFs.symlink(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type, this.makeCallback(resolve, reject));
2707
2707
-
});
2708
2708
-
}
2709
2709
-
symlinkSync(target, p, type) {
2710
2710
-
return this.realFs.symlinkSync(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type);
2711
2711
-
}
2712
2712
-
async readFilePromise(p, encoding) {
2713
2713
-
return await new Promise((resolve, reject) => {
2714
2714
-
const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
2715
2715
-
this.realFs.readFile(fsNativePath, encoding, this.makeCallback(resolve, reject));
2716
2716
-
});
2717
2717
-
}
2718
2718
-
readFileSync(p, encoding) {
2719
2719
-
const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
2720
2720
-
return this.realFs.readFileSync(fsNativePath, encoding);
2721
2721
-
}
2722
2722
-
async readdirPromise(p, opts) {
2723
2723
-
return await new Promise((resolve, reject) => {
2724
2724
-
if (opts == null ? void 0 : opts.withFileTypes) {
2725
2725
-
this.realFs.readdir(npath.fromPortablePath(p), { withFileTypes: true }, this.makeCallback(resolve, reject));
2726
2726
-
} else {
2727
2727
-
this.realFs.readdir(npath.fromPortablePath(p), this.makeCallback((value) => resolve(value), reject));
2728
2728
-
}
2729
2729
-
});
2730
2730
-
}
2731
2731
-
readdirSync(p, opts) {
2732
2732
-
if (opts == null ? void 0 : opts.withFileTypes) {
2733
2733
-
return this.realFs.readdirSync(npath.fromPortablePath(p), { withFileTypes: true });
2734
2734
-
} else {
2735
2735
-
return this.realFs.readdirSync(npath.fromPortablePath(p));
2736
2736
-
}
2737
2737
-
}
2738
2738
-
async readlinkPromise(p) {
2739
2739
-
return await new Promise((resolve, reject) => {
2740
2740
-
this.realFs.readlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
2741
2741
-
}).then((path) => {
2742
2742
-
return npath.toPortablePath(path);
2743
2743
-
});
2744
2744
-
}
2745
2745
-
readlinkSync(p) {
2746
2746
-
return npath.toPortablePath(this.realFs.readlinkSync(npath.fromPortablePath(p)));
2747
2747
-
}
2748
2748
-
async truncatePromise(p, len) {
2749
2749
-
return await new Promise((resolve, reject) => {
2750
2750
-
this.realFs.truncate(npath.fromPortablePath(p), len, this.makeCallback(resolve, reject));
2751
2751
-
});
2752
2752
-
}
2753
2753
-
truncateSync(p, len) {
2754
2754
-
return this.realFs.truncateSync(npath.fromPortablePath(p), len);
2755
2755
-
}
2756
2756
-
async ftruncatePromise(fd, len) {
2757
2757
-
return await new Promise((resolve, reject) => {
2758
2758
-
this.realFs.ftruncate(fd, len, this.makeCallback(resolve, reject));
2759
2759
-
});
2760
2760
-
}
2761
2761
-
ftruncateSync(fd, len) {
2762
2762
-
return this.realFs.ftruncateSync(fd, len);
2763
2763
-
}
2764
2764
-
watch(p, a, b) {
2765
2765
-
return this.realFs.watch(
2766
2766
-
npath.fromPortablePath(p),
2767
2767
-
a,
2768
2768
-
b
2769
2769
-
);
2770
2770
-
}
2771
2771
-
watchFile(p, a, b) {
2772
2772
-
return this.realFs.watchFile(
2773
2773
-
npath.fromPortablePath(p),
2774
2774
-
a,
2775
2775
-
b
2776
2776
-
);
2777
2777
-
}
2778
2778
-
unwatchFile(p, cb) {
2779
2779
-
return this.realFs.unwatchFile(npath.fromPortablePath(p), cb);
2780
2780
-
}
2781
2781
-
makeCallback(resolve, reject) {
2782
2782
-
return (err, result) => {
2783
2783
-
if (err) {
2784
2784
-
reject(err);
2785
2785
-
} else {
2786
2786
-
resolve(result);
2787
2787
-
}
2788
2788
-
};
2789
2789
-
}
2790
2790
-
}
2791
2791
-
2792
2792
-
function assertStatus(current, expected) {
2793
2793
-
if (current !== expected) {
2794
2794
-
throw new Error(`Invalid StatWatcher status: expected '${expected}', got '${current}'`);
2795
2795
-
}
2796
2796
-
}
2797
2797
-
class CustomStatWatcher extends events.EventEmitter {
2798
2798
-
constructor(fakeFs, path, { bigint = false } = {}) {
2799
2799
-
super();
2800
2800
-
this.status = "ready" /* Ready */;
2801
2801
-
this.changeListeners = /* @__PURE__ */ new Map();
2802
2802
-
this.startTimeout = null;
2803
2803
-
this.fakeFs = fakeFs;
2804
2804
-
this.path = path;
2805
2805
-
this.bigint = bigint;
2806
2806
-
this.lastStats = this.stat();
2807
2807
-
}
2808
2808
-
static create(fakeFs, path, opts) {
2809
2809
-
const statWatcher = new CustomStatWatcher(fakeFs, path, opts);
2810
2810
-
statWatcher.start();
2811
2811
-
return statWatcher;
2812
2812
-
}
2813
2813
-
start() {
2814
2814
-
assertStatus(this.status, "ready" /* Ready */);
2815
2815
-
this.status = "running" /* Running */;
2816
2816
-
this.startTimeout = setTimeout(() => {
2817
2817
-
this.startTimeout = null;
2818
2818
-
if (!this.fakeFs.existsSync(this.path)) {
2819
2819
-
this.emit("change" /* Change */, this.lastStats, this.lastStats);
2820
2820
-
}
2821
2821
-
}, 3);
2822
2822
-
}
2823
2823
-
stop() {
2824
2824
-
assertStatus(this.status, "running" /* Running */);
2825
2825
-
this.status = "stopped" /* Stopped */;
2826
2826
-
if (this.startTimeout !== null) {
2827
2827
-
clearTimeout(this.startTimeout);
2828
2828
-
this.startTimeout = null;
2829
2829
-
}
2830
2830
-
this.emit("stop" /* Stop */);
2831
2831
-
}
2832
2832
-
stat() {
2833
2833
-
try {
2834
2834
-
return this.fakeFs.statSync(this.path, { bigint: this.bigint });
2835
2835
-
} catch (error) {
2836
2836
-
const statInstance = this.bigint ? new BigIntStatsEntry() : new StatEntry();
2837
2837
-
return clearStats(statInstance);
2838
2838
-
}
2839
2839
-
}
2840
2840
-
makeInterval(opts) {
2841
2841
-
const interval = setInterval(() => {
2842
2842
-
const currentStats = this.stat();
2843
2843
-
const previousStats = this.lastStats;
2844
2844
-
if (areStatsEqual(currentStats, previousStats))
2845
2845
-
return;
2846
2846
-
this.lastStats = currentStats;
2847
2847
-
this.emit("change" /* Change */, currentStats, previousStats);
2848
2848
-
}, opts.interval);
2849
2849
-
return opts.persistent ? interval : interval.unref();
2850
2850
-
}
2851
2851
-
registerChangeListener(listener, opts) {
2852
2852
-
this.addListener("change" /* Change */, listener);
2853
2853
-
this.changeListeners.set(listener, this.makeInterval(opts));
2854
2854
-
}
2855
2855
-
unregisterChangeListener(listener) {
2856
2856
-
this.removeListener("change" /* Change */, listener);
2857
2857
-
const interval = this.changeListeners.get(listener);
2858
2858
-
if (typeof interval !== `undefined`)
2859
2859
-
clearInterval(interval);
2860
2860
-
this.changeListeners.delete(listener);
2861
2861
-
}
2862
2862
-
unregisterAllChangeListeners() {
2863
2863
-
for (const listener of this.changeListeners.keys()) {
2864
2864
-
this.unregisterChangeListener(listener);
2865
2865
-
}
2866
2866
-
}
2867
2867
-
hasChangeListeners() {
2868
2868
-
return this.changeListeners.size > 0;
2869
2869
-
}
2870
2870
-
ref() {
2871
2871
-
for (const interval of this.changeListeners.values())
2872
2872
-
interval.ref();
2873
2873
-
return this;
2874
2874
-
}
2875
2875
-
unref() {
2876
2876
-
for (const interval of this.changeListeners.values())
2877
2877
-
interval.unref();
2878
2878
-
return this;
2879
2879
-
}
2880
2880
-
}
2881
2881
-
2882
2882
-
const statWatchersByFakeFS = /* @__PURE__ */ new WeakMap();
2883
2883
-
function watchFile(fakeFs, path, a, b) {
2884
2884
-
let bigint;
2885
2885
-
let persistent;
2886
2886
-
let interval;
2887
2887
-
let listener;
2888
2888
-
switch (typeof a) {
2889
2889
-
case `function`:
2890
2890
-
{
2891
2891
-
bigint = false;
2892
2892
-
persistent = true;
2893
2893
-
interval = 5007;
2894
2894
-
listener = a;
2895
2895
-
}
2896
2896
-
break;
2897
2897
-
default:
2898
2898
-
{
2899
2899
-
({
2900
2900
-
bigint = false,
2901
2901
-
persistent = true,
2902
2902
-
interval = 5007
2903
2903
-
} = a);
2904
2904
-
listener = b;
2905
2905
-
}
2906
2906
-
break;
2907
2907
-
}
2908
2908
-
let statWatchers = statWatchersByFakeFS.get(fakeFs);
2909
2909
-
if (typeof statWatchers === `undefined`)
2910
2910
-
statWatchersByFakeFS.set(fakeFs, statWatchers = /* @__PURE__ */ new Map());
2911
2911
-
let statWatcher = statWatchers.get(path);
2912
2912
-
if (typeof statWatcher === `undefined`) {
2913
2913
-
statWatcher = CustomStatWatcher.create(fakeFs, path, { bigint });
2914
2914
-
statWatchers.set(path, statWatcher);
2915
2915
-
}
2916
2916
-
statWatcher.registerChangeListener(listener, { persistent, interval });
2917
2917
-
return statWatcher;
2918
2918
-
}
2919
2919
-
function unwatchFile(fakeFs, path, cb) {
2920
2920
-
const statWatchers = statWatchersByFakeFS.get(fakeFs);
2921
2921
-
if (typeof statWatchers === `undefined`)
2922
2922
-
return;
2923
2923
-
const statWatcher = statWatchers.get(path);
2924
2924
-
if (typeof statWatcher === `undefined`)
2925
2925
-
return;
2926
2926
-
if (typeof cb === `undefined`)
2927
2927
-
statWatcher.unregisterAllChangeListeners();
2928
2928
-
else
2929
2929
-
statWatcher.unregisterChangeListener(cb);
2930
2930
-
if (!statWatcher.hasChangeListeners()) {
2931
2931
-
statWatcher.stop();
2932
2932
-
statWatchers.delete(path);
2933
2933
-
}
2934
2934
-
}
2935
2935
-
function unwatchAllFiles(fakeFs) {
2936
2936
-
const statWatchers = statWatchersByFakeFS.get(fakeFs);
2937
2937
-
if (typeof statWatchers === `undefined`)
2938
2938
-
return;
2939
2939
-
for (const path of statWatchers.keys()) {
2940
2940
-
unwatchFile(fakeFs, path);
2941
2941
-
}
2942
2942
-
}
2943
2943
-
2944
2944
-
const DEFAULT_COMPRESSION_LEVEL = `mixed`;
2945
2945
-
function toUnixTimestamp(time) {
2946
2946
-
if (typeof time === `string` && String(+time) === time)
2947
2947
-
return +time;
2948
2948
-
if (typeof time === `number` && Number.isFinite(time)) {
2949
2949
-
if (time < 0) {
2950
2950
-
return Date.now() / 1e3;
2951
2951
-
} else {
2952
2952
-
return time;
2953
2953
-
}
2954
2954
-
}
2955
2955
-
if (nodeUtils.types.isDate(time))
2956
2956
-
return time.getTime() / 1e3;
2957
2957
-
throw new Error(`Invalid time`);
2958
2958
-
}
2959
2959
-
function makeEmptyArchive() {
2960
2960
-
return Buffer.from([
2961
2961
-
80,
2962
2962
-
75,
2963
2963
-
5,
2964
2964
-
6,
2965
2965
-
0,
2966
2966
-
0,
2967
2967
-
0,
2968
2968
-
0,
2969
2969
-
0,
2970
2970
-
0,
2971
2971
-
0,
2972
2972
-
0,
2973
2973
-
0,
2974
2974
-
0,
2975
2975
-
0,
2976
2976
-
0,
2977
2977
-
0,
2978
2978
-
0,
2979
2979
-
0,
2980
2980
-
0,
2981
2981
-
0,
2982
2982
-
0
2983
2983
-
]);
2984
2984
-
}
2985
2985
-
class ZipFS extends BasePortableFakeFS {
2986
2986
-
constructor(source, opts) {
2987
2987
-
super();
2988
2988
-
this.lzSource = null;
2989
2989
-
this.listings = /* @__PURE__ */ new Map();
2990
2990
-
this.entries = /* @__PURE__ */ new Map();
2991
2991
-
this.fileSources = /* @__PURE__ */ new Map();
2992
2992
-
this.fds = /* @__PURE__ */ new Map();
2993
2993
-
this.nextFd = 0;
2994
2994
-
this.ready = false;
2995
2995
-
this.readOnly = false;
2996
2996
-
this.libzip = opts.libzip;
2997
2997
-
const pathOptions = opts;
2998
2998
-
this.level = typeof pathOptions.level !== `undefined` ? pathOptions.level : DEFAULT_COMPRESSION_LEVEL;
2999
2999
-
source != null ? source : source = makeEmptyArchive();
3000
3000
-
if (typeof source === `string`) {
3001
3001
-
const { baseFs = new NodeFS() } = pathOptions;
3002
3002
-
this.baseFs = baseFs;
3003
3003
-
this.path = source;
3004
3004
-
} else {
3005
3005
-
this.path = null;
3006
3006
-
this.baseFs = null;
3007
3007
-
}
3008
3008
-
if (opts.stats) {
3009
3009
-
this.stats = opts.stats;
3010
3010
-
} else {
3011
3011
-
if (typeof source === `string`) {
3012
3012
-
try {
3013
3013
-
this.stats = this.baseFs.statSync(source);
3014
3014
-
} catch (error) {
3015
3015
-
if (error.code === `ENOENT` && pathOptions.create) {
3016
3016
-
this.stats = makeDefaultStats();
3017
3017
-
} else {
3018
3018
-
throw error;
3019
3019
-
}
3020
3020
-
}
3021
3021
-
} else {
3022
3022
-
this.stats = makeDefaultStats();
3023
3023
-
}
3024
3024
-
}
3025
3025
-
const errPtr = this.libzip.malloc(4);
3026
3026
-
try {
3027
3027
-
let flags = 0;
3028
3028
-
if (typeof source === `string` && pathOptions.create)
3029
3029
-
flags |= this.libzip.ZIP_CREATE | this.libzip.ZIP_TRUNCATE;
3030
3030
-
if (opts.readOnly) {
3031
3031
-
flags |= this.libzip.ZIP_RDONLY;
3032
3032
-
this.readOnly = true;
3033
3033
-
}
3034
3034
-
if (typeof source === `string`) {
3035
3035
-
this.zip = this.libzip.open(npath.fromPortablePath(source), flags, errPtr);
3036
3036
-
} else {
3037
3037
-
const lzSource = this.allocateUnattachedSource(source);
3038
3038
-
try {
3039
3039
-
this.zip = this.libzip.openFromSource(lzSource, flags, errPtr);
3040
3040
-
this.lzSource = lzSource;
3041
3041
-
} catch (error) {
3042
3042
-
this.libzip.source.free(lzSource);
3043
3043
-
throw error;
3044
3044
-
}
3045
3045
-
}
3046
3046
-
if (this.zip === 0) {
3047
3047
-
const error = this.libzip.struct.errorS();
3048
3048
-
this.libzip.error.initWithCode(error, this.libzip.getValue(errPtr, `i32`));
3049
3049
-
throw this.makeLibzipError(error);
3050
3050
-
}
3051
3051
-
} finally {
3052
3052
-
this.libzip.free(errPtr);
3053
3053
-
}
3054
3054
-
this.listings.set(PortablePath.root, /* @__PURE__ */ new Set());
3055
3055
-
const entryCount = this.libzip.getNumEntries(this.zip, 0);
3056
3056
-
for (let t = 0; t < entryCount; ++t) {
3057
3057
-
const raw = this.libzip.getName(this.zip, t, 0);
3058
3058
-
if (ppath.isAbsolute(raw))
3059
3059
-
continue;
3060
3060
-
const p = ppath.resolve(PortablePath.root, raw);
3061
3061
-
this.registerEntry(p, t);
3062
3062
-
if (raw.endsWith(`/`)) {
3063
3063
-
this.registerListing(p);
3064
3064
-
}
3065
3065
-
}
3066
3066
-
this.symlinkCount = this.libzip.ext.countSymlinks(this.zip);
3067
3067
-
if (this.symlinkCount === -1)
3068
3068
-
throw this.makeLibzipError(this.libzip.getError(this.zip));
3069
3069
-
this.ready = true;
3070
3070
-
}
3071
3071
-
makeLibzipError(error) {
3072
3072
-
const errorCode = this.libzip.struct.errorCodeZip(error);
3073
3073
-
const strerror = this.libzip.error.strerror(error);
3074
3074
-
const libzipError = new LibzipError(strerror, this.libzip.errors[errorCode]);
3075
3075
-
if (errorCode === this.libzip.errors.ZIP_ER_CHANGED)
3076
3076
-
throw new Error(`Assertion failed: Unexpected libzip error: ${libzipError.message}`);
3077
3077
-
return libzipError;
3078
3078
-
}
3079
3079
-
getExtractHint(hints) {
3080
3080
-
for (const fileName of this.entries.keys()) {
3081
3081
-
const ext = this.pathUtils.extname(fileName);
3082
3082
-
if (hints.relevantExtensions.has(ext)) {
3083
3083
-
return true;
3084
3084
-
}
3085
3085
-
}
3086
3086
-
return false;
3087
3087
-
}
3088
3088
-
getAllFiles() {
3089
3089
-
return Array.from(this.entries.keys());
3090
3090
-
}
3091
3091
-
getRealPath() {
3092
3092
-
if (!this.path)
3093
3093
-
throw new Error(`ZipFS don't have real paths when loaded from a buffer`);
3094
3094
-
return this.path;
3095
3095
-
}
3096
3096
-
getBufferAndClose() {
3097
3097
-
this.prepareClose();
3098
3098
-
if (!this.lzSource)
3099
3099
-
throw new Error(`ZipFS was not created from a Buffer`);
3100
3100
-
if (this.entries.size === 0) {
3101
3101
-
this.discardAndClose();
3102
3102
-
return makeEmptyArchive();
3103
3103
-
}
3104
3104
-
try {
3105
3105
-
this.libzip.source.keep(this.lzSource);
3106
3106
-
if (this.libzip.close(this.zip) === -1)
3107
3107
-
throw this.makeLibzipError(this.libzip.getError(this.zip));
3108
3108
-
if (this.libzip.source.open(this.lzSource) === -1)
3109
3109
-
throw this.makeLibzipError(this.libzip.source.error(this.lzSource));
3110
3110
-
if (this.libzip.source.seek(this.lzSource, 0, 0, this.libzip.SEEK_END) === -1)
3111
3111
-
throw this.makeLibzipError(this.libzip.source.error(this.lzSource));
3112
3112
-
const size = this.libzip.source.tell(this.lzSource);
3113
3113
-
if (size === -1)
3114
3114
-
throw this.makeLibzipError(this.libzip.source.error(this.lzSource));
3115
3115
-
if (this.libzip.source.seek(this.lzSource, 0, 0, this.libzip.SEEK_SET) === -1)
3116
3116
-
throw this.makeLibzipError(this.libzip.source.error(this.lzSource));
3117
3117
-
const buffer = this.libzip.malloc(size);
3118
3118
-
if (!buffer)
3119
3119
-
throw new Error(`Couldn't allocate enough memory`);
3120
3120
-
try {
3121
3121
-
const rc = this.libzip.source.read(this.lzSource, buffer, size);
3122
3122
-
if (rc === -1)
3123
3123
-
throw this.makeLibzipError(this.libzip.source.error(this.lzSource));
3124
3124
-
else if (rc < size)
3125
3125
-
throw new Error(`Incomplete read`);
3126
3126
-
else if (rc > size)
3127
3127
-
throw new Error(`Overread`);
3128
3128
-
const memory = this.libzip.HEAPU8.subarray(buffer, buffer + size);
3129
3129
-
return Buffer.from(memory);
3130
3130
-
} finally {
3131
3131
-
this.libzip.free(buffer);
3132
3132
-
}
3133
3133
-
} finally {
3134
3134
-
this.libzip.source.close(this.lzSource);
3135
3135
-
this.libzip.source.free(this.lzSource);
3136
3136
-
this.ready = false;
3137
3137
-
}
3138
3138
-
}
3139
3139
-
prepareClose() {
3140
3140
-
if (!this.ready)
3141
3141
-
throw EBUSY(`archive closed, close`);
3142
3142
-
unwatchAllFiles(this);
3143
3143
-
}
3144
3144
-
saveAndClose() {
3145
3145
-
if (!this.path || !this.baseFs)
3146
3146
-
throw new Error(`ZipFS cannot be saved and must be discarded when loaded from a buffer`);
3147
3147
-
this.prepareClose();
3148
3148
-
if (this.readOnly) {
3149
3149
-
this.discardAndClose();
3150
3150
-
return;
3151
3151
-
}
3152
3152
-
const newMode = this.baseFs.existsSync(this.path) || this.stats.mode === DEFAULT_MODE ? void 0 : this.stats.mode;
3153
3153
-
if (this.entries.size === 0) {
3154
3154
-
this.discardAndClose();
3155
3155
-
this.baseFs.writeFileSync(this.path, makeEmptyArchive(), { mode: newMode });
3156
3156
-
} else {
3157
3157
-
const rc = this.libzip.close(this.zip);
3158
3158
-
if (rc === -1)
3159
3159
-
throw this.makeLibzipError(this.libzip.getError(this.zip));
3160
3160
-
if (typeof newMode !== `undefined`) {
3161
3161
-
this.baseFs.chmodSync(this.path, newMode);
3162
3162
-
}
3163
3163
-
}
3164
3164
-
this.ready = false;
3165
3165
-
}
3166
3166
-
discardAndClose() {
3167
3167
-
this.prepareClose();
3168
3168
-
this.libzip.discard(this.zip);
3169
3169
-
this.ready = false;
3170
3170
-
}
3171
3171
-
resolve(p) {
3172
3172
-
return ppath.resolve(PortablePath.root, p);
3173
3173
-
}
3174
3174
-
async openPromise(p, flags, mode) {
3175
3175
-
return this.openSync(p, flags, mode);
3176
3176
-
}
3177
3177
-
openSync(p, flags, mode) {
3178
3178
-
const fd = this.nextFd++;
3179
3179
-
this.fds.set(fd, { cursor: 0, p });
3180
3180
-
return fd;
3181
3181
-
}
3182
3182
-
hasOpenFileHandles() {
3183
3183
-
return !!this.fds.size;
3184
3184
-
}
3185
3185
-
async opendirPromise(p, opts) {
3186
3186
-
return this.opendirSync(p, opts);
3187
3187
-
}
3188
3188
-
opendirSync(p, opts = {}) {
3189
3189
-
const resolvedP = this.resolveFilename(`opendir '${p}'`, p);
3190
3190
-
if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
3191
3191
-
throw ENOENT(`opendir '${p}'`);
3192
3192
-
const directoryListing = this.listings.get(resolvedP);
3193
3193
-
if (!directoryListing)
3194
3194
-
throw ENOTDIR(`opendir '${p}'`);
3195
3195
-
const entries = [...directoryListing];
3196
3196
-
const fd = this.openSync(resolvedP, `r`);
3197
3197
-
const onClose = () => {
3198
3198
-
this.closeSync(fd);
3199
3199
-
};
3200
3200
-
return opendir(this, resolvedP, entries, { onClose });
3201
3201
-
}
3202
3202
-
async readPromise(fd, buffer, offset, length, position) {
3203
3203
-
return this.readSync(fd, buffer, offset, length, position);
3204
3204
-
}
3205
3205
-
readSync(fd, buffer, offset = 0, length = buffer.byteLength, position = -1) {
3206
3206
-
const entry = this.fds.get(fd);
3207
3207
-
if (typeof entry === `undefined`)
3208
3208
-
throw EBADF(`read`);
3209
3209
-
const realPosition = position === -1 || position === null ? entry.cursor : position;
3210
3210
-
const source = this.readFileSync(entry.p);
3211
3211
-
source.copy(buffer, offset, realPosition, realPosition + length);
3212
3212
-
const bytesRead = Math.max(0, Math.min(source.length - realPosition, length));
3213
3213
-
if (position === -1 || position === null)
3214
3214
-
entry.cursor += bytesRead;
3215
3215
-
return bytesRead;
3216
3216
-
}
3217
3217
-
async writePromise(fd, buffer, offset, length, position) {
3218
3218
-
if (typeof buffer === `string`) {
3219
3219
-
return this.writeSync(fd, buffer, position);
3220
3220
-
} else {
3221
3221
-
return this.writeSync(fd, buffer, offset, length, position);
3222
3222
-
}
3223
3223
-
}
3224
3224
-
writeSync(fd, buffer, offset, length, position) {
3225
3225
-
const entry = this.fds.get(fd);
3226
3226
-
if (typeof entry === `undefined`)
3227
3227
-
throw EBADF(`read`);
3228
3228
-
throw new Error(`Unimplemented`);
3229
3229
-
}
3230
3230
-
async closePromise(fd) {
3231
3231
-
return this.closeSync(fd);
3232
3232
-
}
3233
3233
-
closeSync(fd) {
3234
3234
-
const entry = this.fds.get(fd);
3235
3235
-
if (typeof entry === `undefined`)
3236
3236
-
throw EBADF(`read`);
3237
3237
-
this.fds.delete(fd);
3238
3238
-
}
3239
3239
-
createReadStream(p, { encoding } = {}) {
3240
3240
-
if (p === null)
3241
3241
-
throw new Error(`Unimplemented`);
3242
3242
-
const fd = this.openSync(p, `r`);
3243
3243
-
const stream$1 = Object.assign(
3244
3244
-
new stream.PassThrough({
3245
3245
-
emitClose: true,
3246
3246
-
autoDestroy: true,
3247
3247
-
destroy: (error, callback) => {
3248
3248
-
clearImmediate(immediate);
3249
3249
-
this.closeSync(fd);
3250
3250
-
callback(error);
3251
3251
-
}
3252
3252
-
}),
3253
3253
-
{
3254
3254
-
close() {
3255
3255
-
stream$1.destroy();
3256
3256
-
},
3257
3257
-
bytesRead: 0,
3258
3258
-
path: p
3259
3259
-
}
3260
3260
-
);
3261
3261
-
const immediate = setImmediate(async () => {
3262
3262
-
try {
3263
3263
-
const data = await this.readFilePromise(p, encoding);
3264
3264
-
stream$1.bytesRead = data.length;
3265
3265
-
stream$1.end(data);
3266
3266
-
} catch (error) {
3267
3267
-
stream$1.destroy(error);
3268
3268
-
}
3269
3269
-
});
3270
3270
-
return stream$1;
3271
3271
-
}
3272
3272
-
createWriteStream(p, { encoding } = {}) {
3273
3273
-
if (this.readOnly)
3274
3274
-
throw EROFS(`open '${p}'`);
3275
3275
-
if (p === null)
3276
3276
-
throw new Error(`Unimplemented`);
3277
3277
-
const chunks = [];
3278
3278
-
const fd = this.openSync(p, `w`);
3279
3279
-
const stream$1 = Object.assign(
3280
3280
-
new stream.PassThrough({
3281
3281
-
autoDestroy: true,
3282
3282
-
emitClose: true,
3283
3283
-
destroy: (error, callback) => {
3284
3284
-
try {
3285
3285
-
if (error) {
3286
3286
-
callback(error);
3287
3287
-
} else {
3288
3288
-
this.writeFileSync(p, Buffer.concat(chunks), encoding);
3289
3289
-
callback(null);
3290
3290
-
}
3291
3291
-
} catch (err) {
3292
3292
-
callback(err);
3293
3293
-
} finally {
3294
3294
-
this.closeSync(fd);
3295
3295
-
}
3296
3296
-
}
3297
3297
-
}),
3298
3298
-
{
3299
3299
-
bytesWritten: 0,
3300
3300
-
path: p,
3301
3301
-
close() {
3302
3302
-
stream$1.destroy();
3303
3303
-
}
3304
3304
-
}
3305
3305
-
);
3306
3306
-
stream$1.on(`data`, (chunk) => {
3307
3307
-
const chunkBuffer = Buffer.from(chunk);
3308
3308
-
stream$1.bytesWritten += chunkBuffer.length;
3309
3309
-
chunks.push(chunkBuffer);
3310
3310
-
});
3311
3311
-
return stream$1;
3312
3312
-
}
3313
3313
-
async realpathPromise(p) {
3314
3314
-
return this.realpathSync(p);
3315
3315
-
}
3316
3316
-
realpathSync(p) {
3317
3317
-
const resolvedP = this.resolveFilename(`lstat '${p}'`, p);
3318
3318
-
if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
3319
3319
-
throw ENOENT(`lstat '${p}'`);
3320
3320
-
return resolvedP;
3321
3321
-
}
3322
3322
-
async existsPromise(p) {
3323
3323
-
return this.existsSync(p);
3324
3324
-
}
3325
3325
-
existsSync(p) {
3326
3326
-
if (!this.ready)
3327
3327
-
throw EBUSY(`archive closed, existsSync '${p}'`);
3328
3328
-
if (this.symlinkCount === 0) {
3329
3329
-
const resolvedP2 = ppath.resolve(PortablePath.root, p);
3330
3330
-
return this.entries.has(resolvedP2) || this.listings.has(resolvedP2);
3331
3331
-
}
3332
3332
-
let resolvedP;
3333
3333
-
try {
3334
3334
-
resolvedP = this.resolveFilename(`stat '${p}'`, p, void 0, false);
3335
3335
-
} catch (error) {
3336
3336
-
return false;
3337
3337
-
}
3338
3338
-
if (resolvedP === void 0)
3339
3339
-
return false;
3340
3340
-
return this.entries.has(resolvedP) || this.listings.has(resolvedP);
3341
3341
-
}
3342
3342
-
async accessPromise(p, mode) {
3343
3343
-
return this.accessSync(p, mode);
3344
3344
-
}
3345
3345
-
accessSync(p, mode = fs.constants.F_OK) {
3346
3346
-
const resolvedP = this.resolveFilename(`access '${p}'`, p);
3347
3347
-
if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
3348
3348
-
throw ENOENT(`access '${p}'`);
3349
3349
-
if (this.readOnly && mode & fs.constants.W_OK) {
3350
3350
-
throw EROFS(`access '${p}'`);
3351
3351
-
}
3352
3352
-
}
3353
3353
-
async statPromise(p, opts = { bigint: false }) {
3354
3354
-
if (opts.bigint)
3355
3355
-
return this.statSync(p, { bigint: true });
3356
3356
-
return this.statSync(p);
3357
3357
-
}
3358
3358
-
statSync(p, opts = { bigint: false, throwIfNoEntry: true }) {
3359
3359
-
const resolvedP = this.resolveFilename(`stat '${p}'`, p, void 0, opts.throwIfNoEntry);
3360
3360
-
if (resolvedP === void 0)
3361
3361
-
return void 0;
3362
3362
-
if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) {
3363
3363
-
if (opts.throwIfNoEntry === false)
3364
3364
-
return void 0;
3365
3365
-
throw ENOENT(`stat '${p}'`);
3366
3366
-
}
3367
3367
-
if (p[p.length - 1] === `/` && !this.listings.has(resolvedP))
3368
3368
-
throw ENOTDIR(`stat '${p}'`);
3369
3369
-
return this.statImpl(`stat '${p}'`, resolvedP, opts);
3370
3370
-
}
3371
3371
-
async fstatPromise(fd, opts) {
3372
3372
-
return this.fstatSync(fd, opts);
3373
3373
-
}
3374
3374
-
fstatSync(fd, opts) {
3375
3375
-
const entry = this.fds.get(fd);
3376
3376
-
if (typeof entry === `undefined`)
3377
3377
-
throw EBADF(`fstatSync`);
3378
3378
-
const { p } = entry;
3379
3379
-
const resolvedP = this.resolveFilename(`stat '${p}'`, p);
3380
3380
-
if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
3381
3381
-
throw ENOENT(`stat '${p}'`);
3382
3382
-
if (p[p.length - 1] === `/` && !this.listings.has(resolvedP))
3383
3383
-
throw ENOTDIR(`stat '${p}'`);
3384
3384
-
return this.statImpl(`fstat '${p}'`, resolvedP, opts);
3385
3385
-
}
3386
3386
-
async lstatPromise(p, opts = { bigint: false }) {
3387
3387
-
if (opts.bigint)
3388
3388
-
return this.lstatSync(p, { bigint: true });
3389
3389
-
return this.lstatSync(p);
3390
3390
-
}
3391
3391
-
lstatSync(p, opts = { bigint: false, throwIfNoEntry: true }) {
3392
3392
-
const resolvedP = this.resolveFilename(`lstat '${p}'`, p, false, opts.throwIfNoEntry);
3393
3393
-
if (resolvedP === void 0)
3394
3394
-
return void 0;
3395
3395
-
if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) {
3396
3396
-
if (opts.throwIfNoEntry === false)
3397
3397
-
return void 0;
3398
3398
-
throw ENOENT(`lstat '${p}'`);
3399
3399
-
}
3400
3400
-
if (p[p.length - 1] === `/` && !this.listings.has(resolvedP))
3401
3401
-
throw ENOTDIR(`lstat '${p}'`);
3402
3402
-
return this.statImpl(`lstat '${p}'`, resolvedP, opts);
3403
3403
-
}
3404
3404
-
statImpl(reason, p, opts = {}) {
3405
3405
-
const entry = this.entries.get(p);
3406
3406
-
if (typeof entry !== `undefined`) {
3407
3407
-
const stat = this.libzip.struct.statS();
3408
3408
-
const rc = this.libzip.statIndex(this.zip, entry, 0, 0, stat);
3409
3409
-
if (rc === -1)
3410
3410
-
throw this.makeLibzipError(this.libzip.getError(this.zip));
3411
3411
-
const uid = this.stats.uid;
3412
3412
-
const gid = this.stats.gid;
3413
3413
-
const size = this.libzip.struct.statSize(stat) >>> 0;
3414
3414
-
const blksize = 512;
3415
3415
-
const blocks = Math.ceil(size / blksize);
3416
3416
-
const mtimeMs = (this.libzip.struct.statMtime(stat) >>> 0) * 1e3;
3417
3417
-
const atimeMs = mtimeMs;
3418
3418
-
const birthtimeMs = mtimeMs;
3419
3419
-
const ctimeMs = mtimeMs;
3420
3420
-
const atime = new Date(atimeMs);
3421
3421
-
const birthtime = new Date(birthtimeMs);
3422
3422
-
const ctime = new Date(ctimeMs);
3423
3423
-
const mtime = new Date(mtimeMs);
3424
3424
-
const type = this.listings.has(p) ? S_IFDIR : this.isSymbolicLink(entry) ? S_IFLNK : S_IFREG;
3425
3425
-
const defaultMode = type === S_IFDIR ? 493 : 420;
3426
3426
-
const mode = type | this.getUnixMode(entry, defaultMode) & 511;
3427
3427
-
const crc = this.libzip.struct.statCrc(stat);
3428
3428
-
const statInstance = Object.assign(new StatEntry(), { uid, gid, size, blksize, blocks, atime, birthtime, ctime, mtime, atimeMs, birthtimeMs, ctimeMs, mtimeMs, mode, crc });
3429
3429
-
return opts.bigint === true ? convertToBigIntStats(statInstance) : statInstance;
3430
3430
-
}
3431
3431
-
if (this.listings.has(p)) {
3432
3432
-
const uid = this.stats.uid;
3433
3433
-
const gid = this.stats.gid;
3434
3434
-
const size = 0;
3435
3435
-
const blksize = 512;
3436
3436
-
const blocks = 0;
3437
3437
-
const atimeMs = this.stats.mtimeMs;
3438
3438
-
const birthtimeMs = this.stats.mtimeMs;
3439
3439
-
const ctimeMs = this.stats.mtimeMs;
3440
3440
-
const mtimeMs = this.stats.mtimeMs;
3441
3441
-
const atime = new Date(atimeMs);
3442
3442
-
const birthtime = new Date(birthtimeMs);
3443
3443
-
const ctime = new Date(ctimeMs);
3444
3444
-
const mtime = new Date(mtimeMs);
3445
3445
-
const mode = S_IFDIR | 493;
3446
3446
-
const crc = 0;
3447
3447
-
const statInstance = Object.assign(new StatEntry(), { uid, gid, size, blksize, blocks, atime, birthtime, ctime, mtime, atimeMs, birthtimeMs, ctimeMs, mtimeMs, mode, crc });
3448
3448
-
return opts.bigint === true ? convertToBigIntStats(statInstance) : statInstance;
3449
3449
-
}
3450
3450
-
throw new Error(`Unreachable`);
3451
3451
-
}
3452
3452
-
getUnixMode(index, defaultMode) {
3453
3453
-
const rc = this.libzip.file.getExternalAttributes(this.zip, index, 0, 0, this.libzip.uint08S, this.libzip.uint32S);
3454
3454
-
if (rc === -1)
3455
3455
-
throw this.makeLibzipError(this.libzip.getError(this.zip));
3456
3456
-
const opsys = this.libzip.getValue(this.libzip.uint08S, `i8`) >>> 0;
3457
3457
-
if (opsys !== this.libzip.ZIP_OPSYS_UNIX)
3458
3458
-
return defaultMode;
3459
3459
-
return this.libzip.getValue(this.libzip.uint32S, `i32`) >>> 16;
3460
3460
-
}
3461
3461
-
registerListing(p) {
3462
3462
-
const existingListing = this.listings.get(p);
3463
3463
-
if (existingListing)
3464
3464
-
return existingListing;
3465
3465
-
const parentListing = this.registerListing(ppath.dirname(p));
3466
3466
-
parentListing.add(ppath.basename(p));
3467
3467
-
const newListing = /* @__PURE__ */ new Set();
3468
3468
-
this.listings.set(p, newListing);
3469
3469
-
return newListing;
3470
3470
-
}
3471
3471
-
registerEntry(p, index) {
3472
3472
-
const parentListing = this.registerListing(ppath.dirname(p));
3473
3473
-
parentListing.add(ppath.basename(p));
3474
3474
-
this.entries.set(p, index);
3475
3475
-
}
3476
3476
-
unregisterListing(p) {
3477
3477
-
this.listings.delete(p);
3478
3478
-
const parentListing = this.listings.get(ppath.dirname(p));
3479
3479
-
parentListing == null ? void 0 : parentListing.delete(ppath.basename(p));
3480
3480
-
}
3481
3481
-
unregisterEntry(p) {
3482
3482
-
this.unregisterListing(p);
3483
3483
-
const entry = this.entries.get(p);
3484
3484
-
this.entries.delete(p);
3485
3485
-
if (typeof entry === `undefined`)
3486
3486
-
return;
3487
3487
-
this.fileSources.delete(entry);
3488
3488
-
if (this.isSymbolicLink(entry)) {
3489
3489
-
this.symlinkCount--;
3490
3490
-
}
3491
3491
-
}
3492
3492
-
deleteEntry(p, index) {
3493
3493
-
this.unregisterEntry(p);
3494
3494
-
const rc = this.libzip.delete(this.zip, index);
3495
3495
-
if (rc === -1) {
3496
3496
-
throw this.makeLibzipError(this.libzip.getError(this.zip));
3497
3497
-
}
3498
3498
-
}
3499
3499
-
resolveFilename(reason, p, resolveLastComponent = true, throwIfNoEntry = true) {
3500
3500
-
if (!this.ready)
3501
3501
-
throw EBUSY(`archive closed, ${reason}`);
3502
3502
-
let resolvedP = ppath.resolve(PortablePath.root, p);
3503
3503
-
if (resolvedP === `/`)
3504
3504
-
return PortablePath.root;
3505
3505
-
const fileIndex = this.entries.get(resolvedP);
3506
3506
-
if (resolveLastComponent && fileIndex !== void 0) {
3507
3507
-
if (this.symlinkCount !== 0 && this.isSymbolicLink(fileIndex)) {
3508
3508
-
const target = this.getFileSource(fileIndex).toString();
3509
3509
-
return this.resolveFilename(reason, ppath.resolve(ppath.dirname(resolvedP), target), true, throwIfNoEntry);
3510
3510
-
} else {
3511
3511
-
return resolvedP;
3512
3512
-
}
3513
3513
-
}
3514
3514
-
while (true) {
3515
3515
-
const parentP = this.resolveFilename(reason, ppath.dirname(resolvedP), true, throwIfNoEntry);
3516
3516
-
if (parentP === void 0)
3517
3517
-
return parentP;
3518
3518
-
const isDir = this.listings.has(parentP);
3519
3519
-
const doesExist = this.entries.has(parentP);
3520
3520
-
if (!isDir && !doesExist) {
3521
3521
-
if (throwIfNoEntry === false)
3522
3522
-
return void 0;
3523
3523
-
throw ENOENT(reason);
3524
3524
-
}
3525
3525
-
if (!isDir)
3526
3526
-
throw ENOTDIR(reason);
3527
3527
-
resolvedP = ppath.resolve(parentP, ppath.basename(resolvedP));
3528
3528
-
if (!resolveLastComponent || this.symlinkCount === 0)
3529
3529
-
break;
3530
3530
-
const index = this.libzip.name.locate(this.zip, resolvedP.slice(1), 0);
3531
3531
-
if (index === -1)
3532
3532
-
break;
3533
3533
-
if (this.isSymbolicLink(index)) {
3534
3534
-
const target = this.getFileSource(index).toString();
3535
3535
-
resolvedP = ppath.resolve(ppath.dirname(resolvedP), target);
3536
3536
-
} else {
3537
3537
-
break;
3538
3538
-
}
3539
3539
-
}
3540
3540
-
return resolvedP;
3541
3541
-
}
3542
3542
-
allocateBuffer(content) {
3543
3543
-
if (!Buffer.isBuffer(content))
3544
3544
-
content = Buffer.from(content);
3545
3545
-
const buffer = this.libzip.malloc(content.byteLength);
3546
3546
-
if (!buffer)
3547
3547
-
throw new Error(`Couldn't allocate enough memory`);
3548
3548
-
const heap = new Uint8Array(this.libzip.HEAPU8.buffer, buffer, content.byteLength);
3549
3549
-
heap.set(content);
3550
3550
-
return { buffer, byteLength: content.byteLength };
3551
3551
-
}
3552
3552
-
allocateUnattachedSource(content) {
3553
3553
-
const error = this.libzip.struct.errorS();
3554
3554
-
const { buffer, byteLength } = this.allocateBuffer(content);
3555
3555
-
const source = this.libzip.source.fromUnattachedBuffer(buffer, byteLength, 0, 1, error);
3556
3556
-
if (source === 0) {
3557
3557
-
this.libzip.free(error);
3558
3558
-
throw this.makeLibzipError(error);
3559
3559
-
}
3560
3560
-
return source;
3561
3561
-
}
3562
3562
-
allocateSource(content) {
3563
3563
-
const { buffer, byteLength } = this.allocateBuffer(content);
3564
3564
-
const source = this.libzip.source.fromBuffer(this.zip, buffer, byteLength, 0, 1);
3565
3565
-
if (source === 0) {
3566
3566
-
this.libzip.free(buffer);
3567
3567
-
throw this.makeLibzipError(this.libzip.getError(this.zip));
3568
3568
-
}
3569
3569
-
return source;
3570
3570
-
}
3571
3571
-
setFileSource(p, content) {
3572
3572
-
const buffer = Buffer.isBuffer(content) ? content : Buffer.from(content);
3573
3573
-
const target = ppath.relative(PortablePath.root, p);
3574
3574
-
const lzSource = this.allocateSource(content);
3575
3575
-
try {
3576
3576
-
const newIndex = this.libzip.file.add(this.zip, target, lzSource, this.libzip.ZIP_FL_OVERWRITE);
3577
3577
-
if (newIndex === -1)
3578
3578
-
throw this.makeLibzipError(this.libzip.getError(this.zip));
3579
3579
-
if (this.level !== `mixed`) {
3580
3580
-
const method = this.level === 0 ? this.libzip.ZIP_CM_STORE : this.libzip.ZIP_CM_DEFLATE;
3581
3581
-
const rc = this.libzip.file.setCompression(this.zip, newIndex, 0, method, this.level);
3582
3582
-
if (rc === -1) {
3583
3583
-
throw this.makeLibzipError(this.libzip.getError(this.zip));
3584
3584
-
}
3585
3585
-
}
3586
3586
-
this.fileSources.set(newIndex, buffer);
3587
3587
-
return newIndex;
3588
3588
-
} catch (error) {
3589
3589
-
this.libzip.source.free(lzSource);
3590
3590
-
throw error;
3591
3591
-
}
3592
3592
-
}
3593
3593
-
isSymbolicLink(index) {
3594
3594
-
if (this.symlinkCount === 0)
3595
3595
-
return false;
3596
3596
-
const attrs = this.libzip.file.getExternalAttributes(this.zip, index, 0, 0, this.libzip.uint08S, this.libzip.uint32S);
3597
3597
-
if (attrs === -1)
3598
3598
-
throw this.makeLibzipError(this.libzip.getError(this.zip));
3599
3599
-
const opsys = this.libzip.getValue(this.libzip.uint08S, `i8`) >>> 0;
3600
3600
-
if (opsys !== this.libzip.ZIP_OPSYS_UNIX)
3601
3601
-
return false;
3602
3602
-
const attributes = this.libzip.getValue(this.libzip.uint32S, `i32`) >>> 16;
3603
3603
-
return (attributes & S_IFMT) === S_IFLNK;
3604
3604
-
}
3605
3605
-
getFileSource(index, opts = { asyncDecompress: false }) {
3606
3606
-
const cachedFileSource = this.fileSources.get(index);
3607
3607
-
if (typeof cachedFileSource !== `undefined`)
3608
3608
-
return cachedFileSource;
3609
3609
-
const stat = this.libzip.struct.statS();
3610
3610
-
const rc = this.libzip.statIndex(this.zip, index, 0, 0, stat);
3611
3611
-
if (rc === -1)
3612
3612
-
throw this.makeLibzipError(this.libzip.getError(this.zip));
3613
3613
-
const size = this.libzip.struct.statCompSize(stat);
3614
3614
-
const compressionMethod = this.libzip.struct.statCompMethod(stat);
3615
3615
-
const buffer = this.libzip.malloc(size);
3616
3616
-
try {
3617
3617
-
const file = this.libzip.fopenIndex(this.zip, index, 0, this.libzip.ZIP_FL_COMPRESSED);
3618
3618
-
if (file === 0)
3619
3619
-
throw this.makeLibzipError(this.libzip.getError(this.zip));
3620
3620
-
try {
3621
3621
-
const rc2 = this.libzip.fread(file, buffer, size, 0);
3622
3622
-
if (rc2 === -1)
3623
3623
-
throw this.makeLibzipError(this.libzip.file.getError(file));
3624
3624
-
else if (rc2 < size)
3625
3625
-
throw new Error(`Incomplete read`);
3626
3626
-
else if (rc2 > size)
3627
3627
-
throw new Error(`Overread`);
3628
3628
-
const memory = this.libzip.HEAPU8.subarray(buffer, buffer + size);
3629
3629
-
const data = Buffer.from(memory);
3630
3630
-
if (compressionMethod === 0) {
3631
3631
-
this.fileSources.set(index, data);
3632
3632
-
return data;
3633
3633
-
} else if (opts.asyncDecompress) {
3634
3634
-
return new Promise((resolve, reject) => {
3635
3635
-
zlib__default.default.inflateRaw(data, (error, result) => {
3636
3636
-
if (error) {
3637
3637
-
reject(error);
3638
3638
-
} else {
3639
3639
-
this.fileSources.set(index, result);
3640
3640
-
resolve(result);
3641
3641
-
}
3642
3642
-
});
3643
3643
-
});
3644
3644
-
} else {
3645
3645
-
const decompressedData = zlib__default.default.inflateRawSync(data);
3646
3646
-
this.fileSources.set(index, decompressedData);
3647
3647
-
return decompressedData;
3648
3648
-
}
3649
3649
-
} finally {
3650
3650
-
this.libzip.fclose(file);
3651
3651
-
}
3652
3652
-
} finally {
3653
3653
-
this.libzip.free(buffer);
3654
3654
-
}
3655
3655
-
}
3656
3656
-
async fchmodPromise(fd, mask) {
3657
3657
-
return this.chmodPromise(this.fdToPath(fd, `fchmod`), mask);
3658
3658
-
}
3659
3659
-
fchmodSync(fd, mask) {
3660
3660
-
return this.chmodSync(this.fdToPath(fd, `fchmodSync`), mask);
3661
3661
-
}
3662
3662
-
async chmodPromise(p, mask) {
3663
3663
-
return this.chmodSync(p, mask);
3664
3664
-
}
3665
3665
-
chmodSync(p, mask) {
3666
3666
-
if (this.readOnly)
3667
3667
-
throw EROFS(`chmod '${p}'`);
3668
3668
-
mask &= 493;
3669
3669
-
const resolvedP = this.resolveFilename(`chmod '${p}'`, p, false);
3670
3670
-
const entry = this.entries.get(resolvedP);
3671
3671
-
if (typeof entry === `undefined`)
3672
3672
-
throw new Error(`Assertion failed: The entry should have been registered (${resolvedP})`);
3673
3673
-
const oldMod = this.getUnixMode(entry, S_IFREG | 0);
3674
3674
-
const newMod = oldMod & ~511 | mask;
3675
3675
-
const rc = this.libzip.file.setExternalAttributes(this.zip, entry, 0, 0, this.libzip.ZIP_OPSYS_UNIX, newMod << 16);
3676
3676
-
if (rc === -1) {
3677
3677
-
throw this.makeLibzipError(this.libzip.getError(this.zip));
3678
3678
-
}
3679
3679
-
}
3680
3680
-
async fchownPromise(fd, uid, gid) {
3681
3681
-
return this.chownPromise(this.fdToPath(fd, `fchown`), uid, gid);
3682
3682
-
}
3683
3683
-
fchownSync(fd, uid, gid) {
3684
3684
-
return this.chownSync(this.fdToPath(fd, `fchownSync`), uid, gid);
3685
3685
-
}
3686
3686
-
async chownPromise(p, uid, gid) {
3687
3687
-
return this.chownSync(p, uid, gid);
3688
3688
-
}
3689
3689
-
chownSync(p, uid, gid) {
3690
3690
-
throw new Error(`Unimplemented`);
3691
3691
-
}
3692
3692
-
async renamePromise(oldP, newP) {
3693
3693
-
return this.renameSync(oldP, newP);
3694
3694
-
}
3695
3695
-
renameSync(oldP, newP) {
3696
3696
-
throw new Error(`Unimplemented`);
3697
3697
-
}
3698
3698
-
async copyFilePromise(sourceP, destP, flags) {
3699
3699
-
const { indexSource, indexDest, resolvedDestP } = this.prepareCopyFile(sourceP, destP, flags);
3700
3700
-
const source = await this.getFileSource(indexSource, { asyncDecompress: true });
3701
3701
-
const newIndex = this.setFileSource(resolvedDestP, source);
3702
3702
-
if (newIndex !== indexDest) {
3703
3703
-
this.registerEntry(resolvedDestP, newIndex);
3704
3704
-
}
3705
3705
-
}
3706
3706
-
copyFileSync(sourceP, destP, flags = 0) {
3707
3707
-
const { indexSource, indexDest, resolvedDestP } = this.prepareCopyFile(sourceP, destP, flags);
3708
3708
-
const source = this.getFileSource(indexSource);
3709
3709
-
const newIndex = this.setFileSource(resolvedDestP, source);
3710
3710
-
if (newIndex !== indexDest) {
3711
3711
-
this.registerEntry(resolvedDestP, newIndex);
3712
3712
-
}
3713
3713
-
}
3714
3714
-
prepareCopyFile(sourceP, destP, flags = 0) {
3715
3715
-
if (this.readOnly)
3716
3716
-
throw EROFS(`copyfile '${sourceP} -> '${destP}'`);
3717
3717
-
if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0)
3718
3718
-
throw ENOSYS(`unsupported clone operation`, `copyfile '${sourceP}' -> ${destP}'`);
3719
3719
-
const resolvedSourceP = this.resolveFilename(`copyfile '${sourceP} -> ${destP}'`, sourceP);
3720
3720
-
const indexSource = this.entries.get(resolvedSourceP);
3721
3721
-
if (typeof indexSource === `undefined`)
3722
3722
-
throw EINVAL(`copyfile '${sourceP}' -> '${destP}'`);
3723
3723
-
const resolvedDestP = this.resolveFilename(`copyfile '${sourceP}' -> ${destP}'`, destP);
3724
3724
-
const indexDest = this.entries.get(resolvedDestP);
3725
3725
-
if ((flags & (fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE_FORCE)) !== 0 && typeof indexDest !== `undefined`)
3726
3726
-
throw EEXIST(`copyfile '${sourceP}' -> '${destP}'`);
3727
3727
-
return {
3728
3728
-
indexSource,
3729
3729
-
resolvedDestP,
3730
3730
-
indexDest
3731
3731
-
};
3732
3732
-
}
3733
3733
-
async appendFilePromise(p, content, opts) {
3734
3734
-
if (this.readOnly)
3735
3735
-
throw EROFS(`open '${p}'`);
3736
3736
-
if (typeof opts === `undefined`)
3737
3737
-
opts = { flag: `a` };
3738
3738
-
else if (typeof opts === `string`)
3739
3739
-
opts = { flag: `a`, encoding: opts };
3740
3740
-
else if (typeof opts.flag === `undefined`)
3741
3741
-
opts = { flag: `a`, ...opts };
3742
3742
-
return this.writeFilePromise(p, content, opts);
3743
3743
-
}
3744
3744
-
appendFileSync(p, content, opts = {}) {
3745
3745
-
if (this.readOnly)
3746
3746
-
throw EROFS(`open '${p}'`);
3747
3747
-
if (typeof opts === `undefined`)
3748
3748
-
opts = { flag: `a` };
3749
3749
-
else if (typeof opts === `string`)
3750
3750
-
opts = { flag: `a`, encoding: opts };
3751
3751
-
else if (typeof opts.flag === `undefined`)
3752
3752
-
opts = { flag: `a`, ...opts };
3753
3753
-
return this.writeFileSync(p, content, opts);
3754
3754
-
}
3755
3755
-
fdToPath(fd, reason) {
3756
3756
-
var _a;
3757
3757
-
const path = (_a = this.fds.get(fd)) == null ? void 0 : _a.p;
3758
3758
-
if (typeof path === `undefined`)
3759
3759
-
throw EBADF(reason);
3760
3760
-
return path;
3761
3761
-
}
3762
3762
-
async writeFilePromise(p, content, opts) {
3763
3763
-
const { encoding, mode, index, resolvedP } = this.prepareWriteFile(p, opts);
3764
3764
-
if (index !== void 0 && typeof opts === `object` && opts.flag && opts.flag.includes(`a`))
3765
3765
-
content = Buffer.concat([await this.getFileSource(index, { asyncDecompress: true }), Buffer.from(content)]);
3766
3766
-
if (encoding !== null)
3767
3767
-
content = content.toString(encoding);
3768
3768
-
const newIndex = this.setFileSource(resolvedP, content);
3769
3769
-
if (newIndex !== index)
3770
3770
-
this.registerEntry(resolvedP, newIndex);
3771
3771
-
if (mode !== null) {
3772
3772
-
await this.chmodPromise(resolvedP, mode);
3773
3773
-
}
3774
3774
-
}
3775
3775
-
writeFileSync(p, content, opts) {
3776
3776
-
const { encoding, mode, index, resolvedP } = this.prepareWriteFile(p, opts);
3777
3777
-
if (index !== void 0 && typeof opts === `object` && opts.flag && opts.flag.includes(`a`))
3778
3778
-
content = Buffer.concat([this.getFileSource(index), Buffer.from(content)]);
3779
3779
-
if (encoding !== null)
3780
3780
-
content = content.toString(encoding);
3781
3781
-
const newIndex = this.setFileSource(resolvedP, content);
3782
3782
-
if (newIndex !== index)
3783
3783
-
this.registerEntry(resolvedP, newIndex);
3784
3784
-
if (mode !== null) {
3785
3785
-
this.chmodSync(resolvedP, mode);
3786
3786
-
}
3787
3787
-
}
3788
3788
-
prepareWriteFile(p, opts) {
3789
3789
-
if (typeof p === `number`)
3790
3790
-
p = this.fdToPath(p, `read`);
3791
3791
-
if (this.readOnly)
3792
3792
-
throw EROFS(`open '${p}'`);
3793
3793
-
const resolvedP = this.resolveFilename(`open '${p}'`, p);
3794
3794
-
if (this.listings.has(resolvedP))
3795
3795
-
throw EISDIR(`open '${p}'`);
3796
3796
-
let encoding = null, mode = null;
3797
3797
-
if (typeof opts === `string`) {
3798
3798
-
encoding = opts;
3799
3799
-
} else if (typeof opts === `object`) {
3800
3800
-
({
3801
3801
-
encoding = null,
3802
3802
-
mode = null
3803
3803
-
} = opts);
3804
3804
-
}
3805
3805
-
const index = this.entries.get(resolvedP);
3806
3806
-
return {
3807
3807
-
encoding,
3808
3808
-
mode,
3809
3809
-
resolvedP,
3810
3810
-
index
3811
3811
-
};
3812
3812
-
}
3813
3813
-
async unlinkPromise(p) {
3814
3814
-
return this.unlinkSync(p);
3815
3815
-
}
3816
3816
-
unlinkSync(p) {
3817
3817
-
if (this.readOnly)
3818
3818
-
throw EROFS(`unlink '${p}'`);
3819
3819
-
const resolvedP = this.resolveFilename(`unlink '${p}'`, p);
3820
3820
-
if (this.listings.has(resolvedP))
3821
3821
-
throw EISDIR(`unlink '${p}'`);
3822
3822
-
const index = this.entries.get(resolvedP);
3823
3823
-
if (typeof index === `undefined`)
3824
3824
-
throw EINVAL(`unlink '${p}'`);
3825
3825
-
this.deleteEntry(resolvedP, index);
3826
3826
-
}
3827
3827
-
async utimesPromise(p, atime, mtime) {
3828
3828
-
return this.utimesSync(p, atime, mtime);
3829
3829
-
}
3830
3830
-
utimesSync(p, atime, mtime) {
3831
3831
-
if (this.readOnly)
3832
3832
-
throw EROFS(`utimes '${p}'`);
3833
3833
-
const resolvedP = this.resolveFilename(`utimes '${p}'`, p);
3834
3834
-
this.utimesImpl(resolvedP, mtime);
3835
3835
-
}
3836
3836
-
async lutimesPromise(p, atime, mtime) {
3837
3837
-
return this.lutimesSync(p, atime, mtime);
3838
3838
-
}
3839
3839
-
lutimesSync(p, atime, mtime) {
3840
3840
-
if (this.readOnly)
3841
3841
-
throw EROFS(`lutimes '${p}'`);
3842
3842
-
const resolvedP = this.resolveFilename(`utimes '${p}'`, p, false);
3843
3843
-
this.utimesImpl(resolvedP, mtime);
3844
3844
-
}
3845
3845
-
utimesImpl(resolvedP, mtime) {
3846
3846
-
if (this.listings.has(resolvedP)) {
3847
3847
-
if (!this.entries.has(resolvedP))
3848
3848
-
this.hydrateDirectory(resolvedP);
3849
3849
-
}
3850
3850
-
const entry = this.entries.get(resolvedP);
3851
3851
-
if (entry === void 0)
3852
3852
-
throw new Error(`Unreachable`);
3853
3853
-
const rc = this.libzip.file.setMtime(this.zip, entry, 0, toUnixTimestamp(mtime), 0);
3854
3854
-
if (rc === -1) {
3855
3855
-
throw this.makeLibzipError(this.libzip.getError(this.zip));
3856
3856
-
}
3857
3857
-
}
3858
3858
-
async mkdirPromise(p, opts) {
3859
3859
-
return this.mkdirSync(p, opts);
3860
3860
-
}
3861
3861
-
mkdirSync(p, { mode = 493, recursive = false } = {}) {
3862
3862
-
if (recursive)
3863
3863
-
return this.mkdirpSync(p, { chmod: mode });
3864
3864
-
if (this.readOnly)
3865
3865
-
throw EROFS(`mkdir '${p}'`);
3866
3866
-
const resolvedP = this.resolveFilename(`mkdir '${p}'`, p);
3867
3867
-
if (this.entries.has(resolvedP) || this.listings.has(resolvedP))
3868
3868
-
throw EEXIST(`mkdir '${p}'`);
3869
3869
-
this.hydrateDirectory(resolvedP);
3870
3870
-
this.chmodSync(resolvedP, mode);
3871
3871
-
return void 0;
3872
3872
-
}
3873
3873
-
async rmdirPromise(p, opts) {
3874
3874
-
return this.rmdirSync(p, opts);
3875
3875
-
}
3876
3876
-
rmdirSync(p, { recursive = false } = {}) {
3877
3877
-
if (this.readOnly)
3878
3878
-
throw EROFS(`rmdir '${p}'`);
3879
3879
-
if (recursive) {
3880
3880
-
this.removeSync(p);
3881
3881
-
return;
3882
3882
-
}
3883
3883
-
const resolvedP = this.resolveFilename(`rmdir '${p}'`, p);
3884
3884
-
const directoryListing = this.listings.get(resolvedP);
3885
3885
-
if (!directoryListing)
3886
3886
-
throw ENOTDIR(`rmdir '${p}'`);
3887
3887
-
if (directoryListing.size > 0)
3888
3888
-
throw ENOTEMPTY(`rmdir '${p}'`);
3889
3889
-
const index = this.entries.get(resolvedP);
3890
3890
-
if (typeof index === `undefined`)
3891
3891
-
throw EINVAL(`rmdir '${p}'`);
3892
3892
-
this.deleteEntry(p, index);
3893
3893
-
}
3894
3894
-
hydrateDirectory(resolvedP) {
3895
3895
-
const index = this.libzip.dir.add(this.zip, ppath.relative(PortablePath.root, resolvedP));
3896
3896
-
if (index === -1)
3897
3897
-
throw this.makeLibzipError(this.libzip.getError(this.zip));
3898
3898
-
this.registerListing(resolvedP);
3899
3899
-
this.registerEntry(resolvedP, index);
3900
3900
-
return index;
3901
3901
-
}
3902
3902
-
async linkPromise(existingP, newP) {
3903
3903
-
return this.linkSync(existingP, newP);
3904
3904
-
}
3905
3905
-
linkSync(existingP, newP) {
3906
3906
-
throw EOPNOTSUPP(`link '${existingP}' -> '${newP}'`);
3907
3907
-
}
3908
3908
-
async symlinkPromise(target, p) {
3909
3909
-
return this.symlinkSync(target, p);
3910
3910
-
}
3911
3911
-
symlinkSync(target, p) {
3912
3912
-
if (this.readOnly)
3913
3913
-
throw EROFS(`symlink '${target}' -> '${p}'`);
3914
3914
-
const resolvedP = this.resolveFilename(`symlink '${target}' -> '${p}'`, p);
3915
3915
-
if (this.listings.has(resolvedP))
3916
3916
-
throw EISDIR(`symlink '${target}' -> '${p}'`);
3917
3917
-
if (this.entries.has(resolvedP))
3918
3918
-
throw EEXIST(`symlink '${target}' -> '${p}'`);
3919
3919
-
const index = this.setFileSource(resolvedP, target);
3920
3920
-
this.registerEntry(resolvedP, index);
3921
3921
-
const rc = this.libzip.file.setExternalAttributes(this.zip, index, 0, 0, this.libzip.ZIP_OPSYS_UNIX, (S_IFLNK | 511) << 16);
3922
3922
-
if (rc === -1)
3923
3923
-
throw this.makeLibzipError(this.libzip.getError(this.zip));
3924
3924
-
this.symlinkCount += 1;
3925
3925
-
}
3926
3926
-
async readFilePromise(p, encoding) {
3927
3927
-
if (typeof encoding === `object`)
3928
3928
-
encoding = encoding ? encoding.encoding : void 0;
3929
3929
-
const data = await this.readFileBuffer(p, { asyncDecompress: true });
3930
3930
-
return encoding ? data.toString(encoding) : data;
3931
3931
-
}
3932
3932
-
readFileSync(p, encoding) {
3933
3933
-
if (typeof encoding === `object`)
3934
3934
-
encoding = encoding ? encoding.encoding : void 0;
3935
3935
-
const data = this.readFileBuffer(p);
3936
3936
-
return encoding ? data.toString(encoding) : data;
3937
3937
-
}
3938
3938
-
readFileBuffer(p, opts = { asyncDecompress: false }) {
3939
3939
-
if (typeof p === `number`)
3940
3940
-
p = this.fdToPath(p, `read`);
3941
3941
-
const resolvedP = this.resolveFilename(`open '${p}'`, p);
3942
3942
-
if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
3943
3943
-
throw ENOENT(`open '${p}'`);
3944
3944
-
if (p[p.length - 1] === `/` && !this.listings.has(resolvedP))
3945
3945
-
throw ENOTDIR(`open '${p}'`);
3946
3946
-
if (this.listings.has(resolvedP))
3947
3947
-
throw EISDIR(`read`);
3948
3948
-
const entry = this.entries.get(resolvedP);
3949
3949
-
if (entry === void 0)
3950
3950
-
throw new Error(`Unreachable`);
3951
3951
-
return this.getFileSource(entry, opts);
3952
3952
-
}
3953
3953
-
async readdirPromise(p, opts) {
3954
3954
-
return this.readdirSync(p, opts);
3955
3955
-
}
3956
3956
-
readdirSync(p, opts) {
3957
3957
-
const resolvedP = this.resolveFilename(`scandir '${p}'`, p);
3958
3958
-
if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
3959
3959
-
throw ENOENT(`scandir '${p}'`);
3960
3960
-
const directoryListing = this.listings.get(resolvedP);
3961
3961
-
if (!directoryListing)
3962
3962
-
throw ENOTDIR(`scandir '${p}'`);
3963
3963
-
const entries = [...directoryListing];
3964
3964
-
if (!(opts == null ? void 0 : opts.withFileTypes))
3965
3965
-
return entries;
3966
3966
-
return entries.map((name) => {
3967
3967
-
return Object.assign(this.statImpl(`lstat`, ppath.join(p, name)), {
3968
3968
-
name
3969
3969
-
});
3970
3970
-
});
3971
3971
-
}
3972
3972
-
async readlinkPromise(p) {
3973
3973
-
const entry = this.prepareReadlink(p);
3974
3974
-
return (await this.getFileSource(entry, { asyncDecompress: true })).toString();
3975
3975
-
}
3976
3976
-
readlinkSync(p) {
3977
3977
-
const entry = this.prepareReadlink(p);
3978
3978
-
return this.getFileSource(entry).toString();
3979
3979
-
}
3980
3980
-
prepareReadlink(p) {
3981
3981
-
const resolvedP = this.resolveFilename(`readlink '${p}'`, p, false);
3982
3982
-
if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
3983
3983
-
throw ENOENT(`readlink '${p}'`);
3984
3984
-
if (p[p.length - 1] === `/` && !this.listings.has(resolvedP))
3985
3985
-
throw ENOTDIR(`open '${p}'`);
3986
3986
-
if (this.listings.has(resolvedP))
3987
3987
-
throw EINVAL(`readlink '${p}'`);
3988
3988
-
const entry = this.entries.get(resolvedP);
3989
3989
-
if (entry === void 0)
3990
3990
-
throw new Error(`Unreachable`);
3991
3991
-
if (!this.isSymbolicLink(entry))
3992
3992
-
throw EINVAL(`readlink '${p}'`);
3993
3993
-
return entry;
3994
3994
-
}
3995
3995
-
async truncatePromise(p, len = 0) {
3996
3996
-
const resolvedP = this.resolveFilename(`open '${p}'`, p);
3997
3997
-
const index = this.entries.get(resolvedP);
3998
3998
-
if (typeof index === `undefined`)
3999
3999
-
throw EINVAL(`open '${p}'`);
4000
4000
-
const source = await this.getFileSource(index, { asyncDecompress: true });
4001
4001
-
const truncated = Buffer.alloc(len, 0);
4002
4002
-
source.copy(truncated);
4003
4003
-
return await this.writeFilePromise(p, truncated);
4004
4004
-
}
4005
4005
-
truncateSync(p, len = 0) {
4006
4006
-
const resolvedP = this.resolveFilename(`open '${p}'`, p);
4007
4007
-
const index = this.entries.get(resolvedP);
4008
4008
-
if (typeof index === `undefined`)
4009
4009
-
throw EINVAL(`open '${p}'`);
4010
4010
-
const source = this.getFileSource(index);
4011
4011
-
const truncated = Buffer.alloc(len, 0);
4012
4012
-
source.copy(truncated);
4013
4013
-
return this.writeFileSync(p, truncated);
4014
4014
-
}
4015
4015
-
async ftruncatePromise(fd, len) {
4016
4016
-
return this.truncatePromise(this.fdToPath(fd, `ftruncate`), len);
4017
4017
-
}
4018
4018
-
ftruncateSync(fd, len) {
4019
4019
-
return this.truncateSync(this.fdToPath(fd, `ftruncateSync`), len);
4020
4020
-
}
4021
4021
-
watch(p, a, b) {
4022
4022
-
let persistent;
4023
4023
-
switch (typeof a) {
4024
4024
-
case `function`:
4025
4025
-
case `string`:
4026
4026
-
case `undefined`:
4027
4027
-
{
4028
4028
-
persistent = true;
4029
4029
-
}
4030
4030
-
break;
4031
4031
-
default:
4032
4032
-
{
4033
4033
-
({ persistent = true } = a);
4034
4034
-
}
4035
4035
-
break;
4036
4036
-
}
4037
4037
-
if (!persistent)
4038
4038
-
return { on: () => {
4039
4039
-
}, close: () => {
4040
4040
-
} };
4041
4041
-
const interval = setInterval(() => {
4042
4042
-
}, 24 * 60 * 60 * 1e3);
4043
4043
-
return { on: () => {
4044
4044
-
}, close: () => {
4045
4045
-
clearInterval(interval);
4046
4046
-
} };
4047
4047
-
}
4048
4048
-
watchFile(p, a, b) {
4049
4049
-
const resolvedP = ppath.resolve(PortablePath.root, p);
4050
4050
-
return watchFile(this, resolvedP, a, b);
4051
4051
-
}
4052
4052
-
unwatchFile(p, cb) {
4053
4053
-
const resolvedP = ppath.resolve(PortablePath.root, p);
4054
4054
-
return unwatchFile(this, resolvedP, cb);
4055
4055
-
}
4056
4056
-
}
4057
4057
-
4058
4058
-
class ProxiedFS extends FakeFS {
4059
4059
-
getExtractHint(hints) {
4060
4060
-
return this.baseFs.getExtractHint(hints);
4061
4061
-
}
4062
4062
-
resolve(path) {
4063
4063
-
return this.mapFromBase(this.baseFs.resolve(this.mapToBase(path)));
4064
4064
-
}
4065
4065
-
getRealPath() {
4066
4066
-
return this.mapFromBase(this.baseFs.getRealPath());
4067
4067
-
}
4068
4068
-
async openPromise(p, flags, mode) {
4069
4069
-
return this.baseFs.openPromise(this.mapToBase(p), flags, mode);
4070
4070
-
}
4071
4071
-
openSync(p, flags, mode) {
4072
4072
-
return this.baseFs.openSync(this.mapToBase(p), flags, mode);
4073
4073
-
}
4074
4074
-
async opendirPromise(p, opts) {
4075
4075
-
return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(p), opts), { path: p });
4076
4076
-
}
4077
4077
-
opendirSync(p, opts) {
4078
4078
-
return Object.assign(this.baseFs.opendirSync(this.mapToBase(p), opts), { path: p });
4079
4079
-
}
4080
4080
-
async readPromise(fd, buffer, offset, length, position) {
4081
4081
-
return await this.baseFs.readPromise(fd, buffer, offset, length, position);
4082
4082
-
}
4083
4083
-
readSync(fd, buffer, offset, length, position) {
4084
4084
-
return this.baseFs.readSync(fd, buffer, offset, length, position);
4085
4085
-
}
4086
4086
-
async writePromise(fd, buffer, offset, length, position) {
4087
4087
-
if (typeof buffer === `string`) {
4088
4088
-
return await this.baseFs.writePromise(fd, buffer, offset);
4089
4089
-
} else {
4090
4090
-
return await this.baseFs.writePromise(fd, buffer, offset, length, position);
4091
4091
-
}
4092
4092
-
}
4093
4093
-
writeSync(fd, buffer, offset, length, position) {
4094
4094
-
if (typeof buffer === `string`) {
4095
4095
-
return this.baseFs.writeSync(fd, buffer, offset);
4096
4096
-
} else {
4097
4097
-
return this.baseFs.writeSync(fd, buffer, offset, length, position);
4098
4098
-
}
4099
4099
-
}
4100
4100
-
async closePromise(fd) {
4101
4101
-
return this.baseFs.closePromise(fd);
4102
4102
-
}
4103
4103
-
closeSync(fd) {
4104
4104
-
this.baseFs.closeSync(fd);
4105
4105
-
}
4106
4106
-
createReadStream(p, opts) {
4107
4107
-
return this.baseFs.createReadStream(p !== null ? this.mapToBase(p) : p, opts);
4108
4108
-
}
4109
4109
-
createWriteStream(p, opts) {
4110
4110
-
return this.baseFs.createWriteStream(p !== null ? this.mapToBase(p) : p, opts);
4111
4111
-
}
4112
4112
-
async realpathPromise(p) {
4113
4113
-
return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(p)));
4114
4114
-
}
4115
4115
-
realpathSync(p) {
4116
4116
-
return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(p)));
4117
4117
-
}
4118
4118
-
async existsPromise(p) {
4119
4119
-
return this.baseFs.existsPromise(this.mapToBase(p));
4120
4120
-
}
4121
4121
-
existsSync(p) {
4122
4122
-
return this.baseFs.existsSync(this.mapToBase(p));
4123
4123
-
}
4124
4124
-
accessSync(p, mode) {
4125
4125
-
return this.baseFs.accessSync(this.mapToBase(p), mode);
4126
4126
-
}
4127
4127
-
async accessPromise(p, mode) {
4128
4128
-
return this.baseFs.accessPromise(this.mapToBase(p), mode);
4129
4129
-
}
4130
4130
-
async statPromise(p, opts) {
4131
4131
-
return this.baseFs.statPromise(this.mapToBase(p), opts);
4132
4132
-
}
4133
4133
-
statSync(p, opts) {
4134
4134
-
return this.baseFs.statSync(this.mapToBase(p), opts);
4135
4135
-
}
4136
4136
-
async fstatPromise(fd, opts) {
4137
4137
-
return this.baseFs.fstatPromise(fd, opts);
4138
4138
-
}
4139
4139
-
fstatSync(fd, opts) {
4140
4140
-
return this.baseFs.fstatSync(fd, opts);
4141
4141
-
}
4142
4142
-
lstatPromise(p, opts) {
4143
4143
-
return this.baseFs.lstatPromise(this.mapToBase(p), opts);
4144
4144
-
}
4145
4145
-
lstatSync(p, opts) {
4146
4146
-
return this.baseFs.lstatSync(this.mapToBase(p), opts);
4147
4147
-
}
4148
4148
-
async fchmodPromise(fd, mask) {
4149
4149
-
return this.baseFs.fchmodPromise(fd, mask);
4150
4150
-
}
4151
4151
-
fchmodSync(fd, mask) {
4152
4152
-
return this.baseFs.fchmodSync(fd, mask);
4153
4153
-
}
4154
4154
-
async chmodPromise(p, mask) {
4155
4155
-
return this.baseFs.chmodPromise(this.mapToBase(p), mask);
4156
4156
-
}
4157
4157
-
chmodSync(p, mask) {
4158
4158
-
return this.baseFs.chmodSync(this.mapToBase(p), mask);
4159
4159
-
}
4160
4160
-
async fchownPromise(fd, uid, gid) {
4161
4161
-
return this.baseFs.fchownPromise(fd, uid, gid);
4162
4162
-
}
4163
4163
-
fchownSync(fd, uid, gid) {
4164
4164
-
return this.baseFs.fchownSync(fd, uid, gid);
4165
4165
-
}
4166
4166
-
async chownPromise(p, uid, gid) {
4167
4167
-
return this.baseFs.chownPromise(this.mapToBase(p), uid, gid);
4168
4168
-
}
4169
4169
-
chownSync(p, uid, gid) {
4170
4170
-
return this.baseFs.chownSync(this.mapToBase(p), uid, gid);
4171
4171
-
}
4172
4172
-
async renamePromise(oldP, newP) {
4173
4173
-
return this.baseFs.renamePromise(this.mapToBase(oldP), this.mapToBase(newP));
4174
4174
-
}
4175
4175
-
renameSync(oldP, newP) {
4176
4176
-
return this.baseFs.renameSync(this.mapToBase(oldP), this.mapToBase(newP));
4177
4177
-
}
4178
4178
-
async copyFilePromise(sourceP, destP, flags = 0) {
4179
4179
-
return this.baseFs.copyFilePromise(this.mapToBase(sourceP), this.mapToBase(destP), flags);
4180
4180
-
}
4181
4181
-
copyFileSync(sourceP, destP, flags = 0) {
4182
4182
-
return this.baseFs.copyFileSync(this.mapToBase(sourceP), this.mapToBase(destP), flags);
4183
4183
-
}
4184
4184
-
async appendFilePromise(p, content, opts) {
4185
4185
-
return this.baseFs.appendFilePromise(this.fsMapToBase(p), content, opts);
4186
4186
-
}
4187
4187
-
appendFileSync(p, content, opts) {
4188
4188
-
return this.baseFs.appendFileSync(this.fsMapToBase(p), content, opts);
4189
4189
-
}
4190
4190
-
async writeFilePromise(p, content, opts) {
4191
4191
-
return this.baseFs.writeFilePromise(this.fsMapToBase(p), content, opts);
4192
4192
-
}
4193
4193
-
writeFileSync(p, content, opts) {
4194
4194
-
return this.baseFs.writeFileSync(this.fsMapToBase(p), content, opts);
4195
4195
-
}
4196
4196
-
async unlinkPromise(p) {
4197
4197
-
return this.baseFs.unlinkPromise(this.mapToBase(p));
4198
4198
-
}
4199
4199
-
unlinkSync(p) {
4200
4200
-
return this.baseFs.unlinkSync(this.mapToBase(p));
4201
4201
-
}
4202
4202
-
async utimesPromise(p, atime, mtime) {
4203
4203
-
return this.baseFs.utimesPromise(this.mapToBase(p), atime, mtime);
4204
4204
-
}
4205
4205
-
utimesSync(p, atime, mtime) {
4206
4206
-
return this.baseFs.utimesSync(this.mapToBase(p), atime, mtime);
4207
4207
-
}
4208
4208
-
async mkdirPromise(p, opts) {
4209
4209
-
return this.baseFs.mkdirPromise(this.mapToBase(p), opts);
4210
4210
-
}
4211
4211
-
mkdirSync(p, opts) {
4212
4212
-
return this.baseFs.mkdirSync(this.mapToBase(p), opts);
4213
4213
-
}
4214
4214
-
async rmdirPromise(p, opts) {
4215
4215
-
return this.baseFs.rmdirPromise(this.mapToBase(p), opts);
4216
4216
-
}
4217
4217
-
rmdirSync(p, opts) {
4218
4218
-
return this.baseFs.rmdirSync(this.mapToBase(p), opts);
4219
4219
-
}
4220
4220
-
async linkPromise(existingP, newP) {
4221
4221
-
return this.baseFs.linkPromise(this.mapToBase(existingP), this.mapToBase(newP));
4222
4222
-
}
4223
4223
-
linkSync(existingP, newP) {
4224
4224
-
return this.baseFs.linkSync(this.mapToBase(existingP), this.mapToBase(newP));
4225
4225
-
}
4226
4226
-
async symlinkPromise(target, p, type) {
4227
4227
-
const mappedP = this.mapToBase(p);
4228
4228
-
if (this.pathUtils.isAbsolute(target))
4229
4229
-
return this.baseFs.symlinkPromise(this.mapToBase(target), mappedP, type);
4230
4230
-
const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target));
4231
4231
-
const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget);
4232
4232
-
return this.baseFs.symlinkPromise(mappedTarget, mappedP, type);
4233
4233
-
}
4234
4234
-
symlinkSync(target, p, type) {
4235
4235
-
const mappedP = this.mapToBase(p);
4236
4236
-
if (this.pathUtils.isAbsolute(target))
4237
4237
-
return this.baseFs.symlinkSync(this.mapToBase(target), mappedP, type);
4238
4238
-
const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target));
4239
4239
-
const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget);
4240
4240
-
return this.baseFs.symlinkSync(mappedTarget, mappedP, type);
4241
4241
-
}
4242
4242
-
async readFilePromise(p, encoding) {
4243
4243
-
if (encoding === `utf8`) {
4244
4244
-
return this.baseFs.readFilePromise(this.fsMapToBase(p), encoding);
4245
4245
-
} else {
4246
4246
-
return this.baseFs.readFilePromise(this.fsMapToBase(p), encoding);
4247
4247
-
}
4248
4248
-
}
4249
4249
-
readFileSync(p, encoding) {
4250
4250
-
if (encoding === `utf8`) {
4251
4251
-
return this.baseFs.readFileSync(this.fsMapToBase(p), encoding);
4252
4252
-
} else {
4253
4253
-
return this.baseFs.readFileSync(this.fsMapToBase(p), encoding);
4254
4254
-
}
4255
4255
-
}
4256
4256
-
async readdirPromise(p, opts) {
4257
4257
-
return this.baseFs.readdirPromise(this.mapToBase(p), opts);
4258
4258
-
}
4259
4259
-
readdirSync(p, opts) {
4260
4260
-
return this.baseFs.readdirSync(this.mapToBase(p), opts);
4261
4261
-
}
4262
4262
-
async readlinkPromise(p) {
4263
4263
-
return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(p)));
4264
4264
-
}
4265
4265
-
readlinkSync(p) {
4266
4266
-
return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(p)));
4267
4267
-
}
4268
4268
-
async truncatePromise(p, len) {
4269
4269
-
return this.baseFs.truncatePromise(this.mapToBase(p), len);
4270
4270
-
}
4271
4271
-
truncateSync(p, len) {
4272
4272
-
return this.baseFs.truncateSync(this.mapToBase(p), len);
4273
4273
-
}
4274
4274
-
async ftruncatePromise(fd, len) {
4275
4275
-
return this.baseFs.ftruncatePromise(fd, len);
4276
4276
-
}
4277
4277
-
ftruncateSync(fd, len) {
4278
4278
-
return this.baseFs.ftruncateSync(fd, len);
4279
4279
-
}
4280
4280
-
watch(p, a, b) {
4281
4281
-
return this.baseFs.watch(
4282
4282
-
this.mapToBase(p),
4283
4283
-
a,
4284
4284
-
b
4285
4285
-
);
4286
4286
-
}
4287
4287
-
watchFile(p, a, b) {
4288
4288
-
return this.baseFs.watchFile(
4289
4289
-
this.mapToBase(p),
4290
4290
-
a,
4291
4291
-
b
4292
4292
-
);
4293
4293
-
}
4294
4294
-
unwatchFile(p, cb) {
4295
4295
-
return this.baseFs.unwatchFile(this.mapToBase(p), cb);
4296
4296
-
}
4297
4297
-
fsMapToBase(p) {
4298
4298
-
if (typeof p === `number`) {
4299
4299
-
return p;
4300
4300
-
} else {
4301
4301
-
return this.mapToBase(p);
4302
4302
-
}
4303
4303
-
}
4304
4304
-
}
4305
4305
-
4306
4306
-
class PosixFS extends ProxiedFS {
4307
4307
-
constructor(baseFs) {
4308
4308
-
super(npath);
4309
4309
-
this.baseFs = baseFs;
4310
4310
-
}
4311
4311
-
mapFromBase(path) {
4312
4312
-
return npath.fromPortablePath(path);
4313
4313
-
}
4314
4314
-
mapToBase(path) {
4315
4315
-
return npath.toPortablePath(path);
4316
4316
-
}
4317
4317
-
}
4318
4318
-
4319
4319
-
const NUMBER_REGEXP = /^[0-9]+$/;
4320
4320
-
const VIRTUAL_REGEXP = /^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/;
4321
4321
-
const VALID_COMPONENT = /^([^/]+-)?[a-f0-9]+$/;
4322
4322
-
class VirtualFS extends ProxiedFS {
4323
4323
-
constructor({ baseFs = new NodeFS() } = {}) {
4324
4324
-
super(ppath);
4325
4325
-
this.baseFs = baseFs;
4326
4326
-
}
4327
4327
-
static makeVirtualPath(base, component, to) {
4328
4328
-
if (ppath.basename(base) !== `__virtual__`)
4329
4329
-
throw new Error(`Assertion failed: Virtual folders must be named "__virtual__"`);
4330
4330
-
if (!ppath.basename(component).match(VALID_COMPONENT))
4331
4331
-
throw new Error(`Assertion failed: Virtual components must be ended by an hexadecimal hash`);
4332
4332
-
const target = ppath.relative(ppath.dirname(base), to);
4333
4333
-
const segments = target.split(`/`);
4334
4334
-
let depth = 0;
4335
4335
-
while (depth < segments.length && segments[depth] === `..`)
4336
4336
-
depth += 1;
4337
4337
-
const finalSegments = segments.slice(depth);
4338
4338
-
const fullVirtualPath = ppath.join(base, component, String(depth), ...finalSegments);
4339
4339
-
return fullVirtualPath;
4340
4340
-
}
4341
4341
-
static resolveVirtual(p) {
4342
4342
-
const match = p.match(VIRTUAL_REGEXP);
4343
4343
-
if (!match || !match[3] && match[5])
4344
4344
-
return p;
4345
4345
-
const target = ppath.dirname(match[1]);
4346
4346
-
if (!match[3] || !match[4])
4347
4347
-
return target;
4348
4348
-
const isnum = NUMBER_REGEXP.test(match[4]);
4349
4349
-
if (!isnum)
4350
4350
-
return p;
4351
4351
-
const depth = Number(match[4]);
4352
4352
-
const backstep = `../`.repeat(depth);
4353
4353
-
const subpath = match[5] || `.`;
4354
4354
-
return VirtualFS.resolveVirtual(ppath.join(target, backstep, subpath));
4355
4355
-
}
4356
4356
-
getExtractHint(hints) {
4357
4357
-
return this.baseFs.getExtractHint(hints);
4358
4358
-
}
4359
4359
-
getRealPath() {
4360
4360
-
return this.baseFs.getRealPath();
4361
4361
-
}
4362
4362
-
realpathSync(p) {
4363
4363
-
const match = p.match(VIRTUAL_REGEXP);
4364
4364
-
if (!match)
4365
4365
-
return this.baseFs.realpathSync(p);
4366
4366
-
if (!match[5])
4367
4367
-
return p;
4368
4368
-
const realpath = this.baseFs.realpathSync(this.mapToBase(p));
4369
4369
-
return VirtualFS.makeVirtualPath(match[1], match[3], realpath);
4370
4370
-
}
4371
4371
-
async realpathPromise(p) {
4372
4372
-
const match = p.match(VIRTUAL_REGEXP);
4373
4373
-
if (!match)
4374
4374
-
return await this.baseFs.realpathPromise(p);
4375
4375
-
if (!match[5])
4376
4376
-
return p;
4377
4377
-
const realpath = await this.baseFs.realpathPromise(this.mapToBase(p));
4378
4378
-
return VirtualFS.makeVirtualPath(match[1], match[3], realpath);
4379
4379
-
}
4380
4380
-
mapToBase(p) {
4381
4381
-
if (p === ``)
4382
4382
-
return p;
4383
4383
-
if (this.pathUtils.isAbsolute(p))
4384
4384
-
return VirtualFS.resolveVirtual(p);
4385
4385
-
const resolvedRoot = VirtualFS.resolveVirtual(this.baseFs.resolve(PortablePath.dot));
4386
4386
-
const resolvedP = VirtualFS.resolveVirtual(this.baseFs.resolve(p));
4387
4387
-
return ppath.relative(resolvedRoot, resolvedP) || PortablePath.dot;
4388
4388
-
}
4389
4389
-
mapFromBase(p) {
4390
4390
-
return p;
4391
4391
-
}
4392
4392
-
}
4393
4393
-
4394
4394
-
const ZIP_MASK = 4278190080;
4395
4395
-
const ZIP_MAGIC = 704643072;
4396
4396
-
const getArchivePart = (path, extension) => {
4397
4397
-
let idx = path.indexOf(extension);
4398
4398
-
if (idx <= 0)
4399
4399
-
return null;
4400
4400
-
let nextCharIdx = idx;
4401
4401
-
while (idx >= 0) {
4402
4402
-
nextCharIdx = idx + extension.length;
4403
4403
-
if (path[nextCharIdx] === ppath.sep)
4404
4404
-
break;
4405
4405
-
if (path[idx - 1] === ppath.sep)
4406
4406
-
return null;
4407
4407
-
idx = path.indexOf(extension, nextCharIdx);
4408
4408
-
}
4409
4409
-
if (path.length > nextCharIdx && path[nextCharIdx] !== ppath.sep)
4410
4410
-
return null;
4411
4411
-
return path.slice(0, nextCharIdx);
4412
4412
-
};
4413
4413
-
class ZipOpenFS extends BasePortableFakeFS {
4414
4414
-
constructor({ libzip, baseFs = new NodeFS(), filter = null, maxOpenFiles = Infinity, readOnlyArchives = false, useCache = true, maxAge = 5e3, fileExtensions = null }) {
4415
4415
-
super();
4416
4416
-
this.fdMap = /* @__PURE__ */ new Map();
4417
4417
-
this.nextFd = 3;
4418
4418
-
this.isZip = /* @__PURE__ */ new Set();
4419
4419
-
this.notZip = /* @__PURE__ */ new Set();
4420
4420
-
this.realPaths = /* @__PURE__ */ new Map();
4421
4421
-
this.limitOpenFilesTimeout = null;
4422
4422
-
this.libzipFactory = typeof libzip !== `function` ? () => libzip : libzip;
4423
4423
-
this.baseFs = baseFs;
4424
4424
-
this.zipInstances = useCache ? /* @__PURE__ */ new Map() : null;
4425
4425
-
this.filter = filter;
4426
4426
-
this.maxOpenFiles = maxOpenFiles;
4427
4427
-
this.readOnlyArchives = readOnlyArchives;
4428
4428
-
this.maxAge = maxAge;
4429
4429
-
this.fileExtensions = fileExtensions;
4430
4430
-
}
4431
4431
-
static async openPromise(fn, opts) {
4432
4432
-
const zipOpenFs = new ZipOpenFS(opts);
4433
4433
-
try {
4434
4434
-
return await fn(zipOpenFs);
4435
4435
-
} finally {
4436
4436
-
zipOpenFs.saveAndClose();
4437
4437
-
}
4438
4438
-
}
4439
4439
-
get libzip() {
4440
4440
-
if (typeof this.libzipInstance === `undefined`)
4441
4441
-
this.libzipInstance = this.libzipFactory();
4442
4442
-
return this.libzipInstance;
4443
4443
-
}
4444
4444
-
getExtractHint(hints) {
4445
4445
-
return this.baseFs.getExtractHint(hints);
4446
4446
-
}
4447
4447
-
getRealPath() {
4448
4448
-
return this.baseFs.getRealPath();
4449
4449
-
}
4450
4450
-
saveAndClose() {
4451
4451
-
unwatchAllFiles(this);
4452
4452
-
if (this.zipInstances) {
4453
4453
-
for (const [path, { zipFs }] of this.zipInstances.entries()) {
4454
4454
-
zipFs.saveAndClose();
4455
4455
-
this.zipInstances.delete(path);
4456
4456
-
}
4457
4457
-
}
4458
4458
-
}
4459
4459
-
discardAndClose() {
4460
4460
-
unwatchAllFiles(this);
4461
4461
-
if (this.zipInstances) {
4462
4462
-
for (const [path, { zipFs }] of this.zipInstances.entries()) {
4463
4463
-
zipFs.discardAndClose();
4464
4464
-
this.zipInstances.delete(path);
4465
4465
-
}
4466
4466
-
}
4467
4467
-
}
4468
4468
-
resolve(p) {
4469
4469
-
return this.baseFs.resolve(p);
4470
4470
-
}
4471
4471
-
remapFd(zipFs, fd) {
4472
4472
-
const remappedFd = this.nextFd++ | ZIP_MAGIC;
4473
4473
-
this.fdMap.set(remappedFd, [zipFs, fd]);
4474
4474
-
return remappedFd;
4475
4475
-
}
4476
4476
-
async openPromise(p, flags, mode) {
4477
4477
-
return await this.makeCallPromise(p, async () => {
4478
4478
-
return await this.baseFs.openPromise(p, flags, mode);
4479
4479
-
}, async (zipFs, { subPath }) => {
4480
4480
-
return this.remapFd(zipFs, await zipFs.openPromise(subPath, flags, mode));
4481
4481
-
});
4482
4482
-
}
4483
4483
-
openSync(p, flags, mode) {
4484
4484
-
return this.makeCallSync(p, () => {
4485
4485
-
return this.baseFs.openSync(p, flags, mode);
4486
4486
-
}, (zipFs, { subPath }) => {
4487
4487
-
return this.remapFd(zipFs, zipFs.openSync(subPath, flags, mode));
4488
4488
-
});
4489
4489
-
}
4490
4490
-
async opendirPromise(p, opts) {
4491
4491
-
return await this.makeCallPromise(p, async () => {
4492
4492
-
return await this.baseFs.opendirPromise(p, opts);
4493
4493
-
}, async (zipFs, { subPath }) => {
4494
4494
-
return await zipFs.opendirPromise(subPath, opts);
4495
4495
-
}, {
4496
4496
-
requireSubpath: false
4497
4497
-
});
4498
4498
-
}
4499
4499
-
opendirSync(p, opts) {
4500
4500
-
return this.makeCallSync(p, () => {
4501
4501
-
return this.baseFs.opendirSync(p, opts);
4502
4502
-
}, (zipFs, { subPath }) => {
4503
4503
-
return zipFs.opendirSync(subPath, opts);
4504
4504
-
}, {
4505
4505
-
requireSubpath: false
4506
4506
-
});
4507
4507
-
}
4508
4508
-
async readPromise(fd, buffer, offset, length, position) {
4509
4509
-
if ((fd & ZIP_MASK) !== ZIP_MAGIC)
4510
4510
-
return await this.baseFs.readPromise(fd, buffer, offset, length, position);
4511
4511
-
const entry = this.fdMap.get(fd);
4512
4512
-
if (typeof entry === `undefined`)
4513
4513
-
throw EBADF(`read`);
4514
4514
-
const [zipFs, realFd] = entry;
4515
4515
-
return await zipFs.readPromise(realFd, buffer, offset, length, position);
4516
4516
-
}
4517
4517
-
readSync(fd, buffer, offset, length, position) {
4518
4518
-
if ((fd & ZIP_MASK) !== ZIP_MAGIC)
4519
4519
-
return this.baseFs.readSync(fd, buffer, offset, length, position);
4520
4520
-
const entry = this.fdMap.get(fd);
4521
4521
-
if (typeof entry === `undefined`)
4522
4522
-
throw EBADF(`readSync`);
4523
4523
-
const [zipFs, realFd] = entry;
4524
4524
-
return zipFs.readSync(realFd, buffer, offset, length, position);
4525
4525
-
}
4526
4526
-
async writePromise(fd, buffer, offset, length, position) {
4527
4527
-
if ((fd & ZIP_MASK) !== ZIP_MAGIC) {
4528
4528
-
if (typeof buffer === `string`) {
4529
4529
-
return await this.baseFs.writePromise(fd, buffer, offset);
4530
4530
-
} else {
4531
4531
-
return await this.baseFs.writePromise(fd, buffer, offset, length, position);
4532
4532
-
}
4533
4533
-
}
4534
4534
-
const entry = this.fdMap.get(fd);
4535
4535
-
if (typeof entry === `undefined`)
4536
4536
-
throw EBADF(`write`);
4537
4537
-
const [zipFs, realFd] = entry;
4538
4538
-
if (typeof buffer === `string`) {
4539
4539
-
return await zipFs.writePromise(realFd, buffer, offset);
4540
4540
-
} else {
4541
4541
-
return await zipFs.writePromise(realFd, buffer, offset, length, position);
4542
4542
-
}
4543
4543
-
}
4544
4544
-
writeSync(fd, buffer, offset, length, position) {
4545
4545
-
if ((fd & ZIP_MASK) !== ZIP_MAGIC) {
4546
4546
-
if (typeof buffer === `string`) {
4547
4547
-
return this.baseFs.writeSync(fd, buffer, offset);
4548
4548
-
} else {
4549
4549
-
return this.baseFs.writeSync(fd, buffer, offset, length, position);
4550
4550
-
}
4551
4551
-
}
4552
4552
-
const entry = this.fdMap.get(fd);
4553
4553
-
if (typeof entry === `undefined`)
4554
4554
-
throw EBADF(`writeSync`);
4555
4555
-
const [zipFs, realFd] = entry;
4556
4556
-
if (typeof buffer === `string`) {
4557
4557
-
return zipFs.writeSync(realFd, buffer, offset);
4558
4558
-
} else {
4559
4559
-
return zipFs.writeSync(realFd, buffer, offset, length, position);
4560
4560
-
}
4561
4561
-
}
4562
4562
-
async closePromise(fd) {
4563
4563
-
if ((fd & ZIP_MASK) !== ZIP_MAGIC)
4564
4564
-
return await this.baseFs.closePromise(fd);
4565
4565
-
const entry = this.fdMap.get(fd);
4566
4566
-
if (typeof entry === `undefined`)
4567
4567
-
throw EBADF(`close`);
4568
4568
-
this.fdMap.delete(fd);
4569
4569
-
const [zipFs, realFd] = entry;
4570
4570
-
return await zipFs.closePromise(realFd);
4571
4571
-
}
4572
4572
-
closeSync(fd) {
4573
4573
-
if ((fd & ZIP_MASK) !== ZIP_MAGIC)
4574
4574
-
return this.baseFs.closeSync(fd);
4575
4575
-
const entry = this.fdMap.get(fd);
4576
4576
-
if (typeof entry === `undefined`)
4577
4577
-
throw EBADF(`closeSync`);
4578
4578
-
this.fdMap.delete(fd);
4579
4579
-
const [zipFs, realFd] = entry;
4580
4580
-
return zipFs.closeSync(realFd);
4581
4581
-
}
4582
4582
-
createReadStream(p, opts) {
4583
4583
-
if (p === null)
4584
4584
-
return this.baseFs.createReadStream(p, opts);
4585
4585
-
return this.makeCallSync(p, () => {
4586
4586
-
return this.baseFs.createReadStream(p, opts);
4587
4587
-
}, (zipFs, { archivePath, subPath }) => {
4588
4588
-
const stream = zipFs.createReadStream(subPath, opts);
4589
4589
-
stream.path = npath.fromPortablePath(this.pathUtils.join(archivePath, subPath));
4590
4590
-
return stream;
4591
4591
-
});
4592
4592
-
}
4593
4593
-
createWriteStream(p, opts) {
4594
4594
-
if (p === null)
4595
4595
-
return this.baseFs.createWriteStream(p, opts);
4596
4596
-
return this.makeCallSync(p, () => {
4597
4597
-
return this.baseFs.createWriteStream(p, opts);
4598
4598
-
}, (zipFs, { subPath }) => {
4599
4599
-
return zipFs.createWriteStream(subPath, opts);
4600
4600
-
});
4601
4601
-
}
4602
4602
-
async realpathPromise(p) {
4603
4603
-
return await this.makeCallPromise(p, async () => {
4604
4604
-
return await this.baseFs.realpathPromise(p);
4605
4605
-
}, async (zipFs, { archivePath, subPath }) => {
4606
4606
-
let realArchivePath = this.realPaths.get(archivePath);
4607
4607
-
if (typeof realArchivePath === `undefined`) {
4608
4608
-
realArchivePath = await this.baseFs.realpathPromise(archivePath);
4609
4609
-
this.realPaths.set(archivePath, realArchivePath);
4610
4610
-
}
4611
4611
-
return this.pathUtils.join(realArchivePath, this.pathUtils.relative(PortablePath.root, await zipFs.realpathPromise(subPath)));
4612
4612
-
});
4613
4613
-
}
4614
4614
-
realpathSync(p) {
4615
4615
-
return this.makeCallSync(p, () => {
4616
4616
-
return this.baseFs.realpathSync(p);
4617
4617
-
}, (zipFs, { archivePath, subPath }) => {
4618
4618
-
let realArchivePath = this.realPaths.get(archivePath);
4619
4619
-
if (typeof realArchivePath === `undefined`) {
4620
4620
-
realArchivePath = this.baseFs.realpathSync(archivePath);
4621
4621
-
this.realPaths.set(archivePath, realArchivePath);
4622
4622
-
}
4623
4623
-
return this.pathUtils.join(realArchivePath, this.pathUtils.relative(PortablePath.root, zipFs.realpathSync(subPath)));
4624
4624
-
});
4625
4625
-
}
4626
4626
-
async existsPromise(p) {
4627
4627
-
return await this.makeCallPromise(p, async () => {
4628
4628
-
return await this.baseFs.existsPromise(p);
4629
4629
-
}, async (zipFs, { subPath }) => {
4630
4630
-
return await zipFs.existsPromise(subPath);
4631
4631
-
});
4632
4632
-
}
4633
4633
-
existsSync(p) {
4634
4634
-
return this.makeCallSync(p, () => {
4635
4635
-
return this.baseFs.existsSync(p);
4636
4636
-
}, (zipFs, { subPath }) => {
4637
4637
-
return zipFs.existsSync(subPath);
4638
4638
-
});
4639
4639
-
}
4640
4640
-
async accessPromise(p, mode) {
4641
4641
-
return await this.makeCallPromise(p, async () => {
4642
4642
-
return await this.baseFs.accessPromise(p, mode);
4643
4643
-
}, async (zipFs, { subPath }) => {
4644
4644
-
return await zipFs.accessPromise(subPath, mode);
4645
4645
-
});
4646
4646
-
}
4647
4647
-
accessSync(p, mode) {
4648
4648
-
return this.makeCallSync(p, () => {
4649
4649
-
return this.baseFs.accessSync(p, mode);
4650
4650
-
}, (zipFs, { subPath }) => {
4651
4651
-
return zipFs.accessSync(subPath, mode);
4652
4652
-
});
4653
4653
-
}
4654
4654
-
async statPromise(p, opts) {
4655
4655
-
return await this.makeCallPromise(p, async () => {
4656
4656
-
return await this.baseFs.statPromise(p, opts);
4657
4657
-
}, async (zipFs, { subPath }) => {
4658
4658
-
return await zipFs.statPromise(subPath, opts);
4659
4659
-
});
4660
4660
-
}
4661
4661
-
statSync(p, opts) {
4662
4662
-
return this.makeCallSync(p, () => {
4663
4663
-
return this.baseFs.statSync(p, opts);
4664
4664
-
}, (zipFs, { subPath }) => {
4665
4665
-
return zipFs.statSync(subPath, opts);
4666
4666
-
});
4667
4667
-
}
4668
4668
-
async fstatPromise(fd, opts) {
4669
4669
-
if ((fd & ZIP_MASK) !== ZIP_MAGIC)
4670
4670
-
return this.baseFs.fstatPromise(fd, opts);
4671
4671
-
const entry = this.fdMap.get(fd);
4672
4672
-
if (typeof entry === `undefined`)
4673
4673
-
throw EBADF(`fstat`);
4674
4674
-
const [zipFs, realFd] = entry;
4675
4675
-
return zipFs.fstatPromise(realFd, opts);
4676
4676
-
}
4677
4677
-
fstatSync(fd, opts) {
4678
4678
-
if ((fd & ZIP_MASK) !== ZIP_MAGIC)
4679
4679
-
return this.baseFs.fstatSync(fd, opts);
4680
4680
-
const entry = this.fdMap.get(fd);
4681
4681
-
if (typeof entry === `undefined`)
4682
4682
-
throw EBADF(`fstatSync`);
4683
4683
-
const [zipFs, realFd] = entry;
4684
4684
-
return zipFs.fstatSync(realFd, opts);
4685
4685
-
}
4686
4686
-
async lstatPromise(p, opts) {
4687
4687
-
return await this.makeCallPromise(p, async () => {
4688
4688
-
return await this.baseFs.lstatPromise(p, opts);
4689
4689
-
}, async (zipFs, { subPath }) => {
4690
4690
-
return await zipFs.lstatPromise(subPath, opts);
4691
4691
-
});
4692
4692
-
}
4693
4693
-
lstatSync(p, opts) {
4694
4694
-
return this.makeCallSync(p, () => {
4695
4695
-
return this.baseFs.lstatSync(p, opts);
4696
4696
-
}, (zipFs, { subPath }) => {
4697
4697
-
return zipFs.lstatSync(subPath, opts);
4698
4698
-
});
4699
4699
-
}
4700
4700
-
async fchmodPromise(fd, mask) {
4701
4701
-
if ((fd & ZIP_MASK) !== ZIP_MAGIC)
4702
4702
-
return this.baseFs.fchmodPromise(fd, mask);
4703
4703
-
const entry = this.fdMap.get(fd);
4704
4704
-
if (typeof entry === `undefined`)
4705
4705
-
throw EBADF(`fchmod`);
4706
4706
-
const [zipFs, realFd] = entry;
4707
4707
-
return zipFs.fchmodPromise(realFd, mask);
4708
4708
-
}
4709
4709
-
fchmodSync(fd, mask) {
4710
4710
-
if ((fd & ZIP_MASK) !== ZIP_MAGIC)
4711
4711
-
return this.baseFs.fchmodSync(fd, mask);
4712
4712
-
const entry = this.fdMap.get(fd);
4713
4713
-
if (typeof entry === `undefined`)
4714
4714
-
throw EBADF(`fchmodSync`);
4715
4715
-
const [zipFs, realFd] = entry;
4716
4716
-
return zipFs.fchmodSync(realFd, mask);
4717
4717
-
}
4718
4718
-
async chmodPromise(p, mask) {
4719
4719
-
return await this.makeCallPromise(p, async () => {
4720
4720
-
return await this.baseFs.chmodPromise(p, mask);
4721
4721
-
}, async (zipFs, { subPath }) => {
4722
4722
-
return await zipFs.chmodPromise(subPath, mask);
4723
4723
-
});
4724
4724
-
}
4725
4725
-
chmodSync(p, mask) {
4726
4726
-
return this.makeCallSync(p, () => {
4727
4727
-
return this.baseFs.chmodSync(p, mask);
4728
4728
-
}, (zipFs, { subPath }) => {
4729
4729
-
return zipFs.chmodSync(subPath, mask);
4730
4730
-
});
4731
4731
-
}
4732
4732
-
async fchownPromise(fd, uid, gid) {
4733
4733
-
if ((fd & ZIP_MASK) !== ZIP_MAGIC)
4734
4734
-
return this.baseFs.fchownPromise(fd, uid, gid);
4735
4735
-
const entry = this.fdMap.get(fd);
4736
4736
-
if (typeof entry === `undefined`)
4737
4737
-
throw EBADF(`fchown`);
4738
4738
-
const [zipFs, realFd] = entry;
4739
4739
-
return zipFs.fchownPromise(realFd, uid, gid);
4740
4740
-
}
4741
4741
-
fchownSync(fd, uid, gid) {
4742
4742
-
if ((fd & ZIP_MASK) !== ZIP_MAGIC)
4743
4743
-
return this.baseFs.fchownSync(fd, uid, gid);
4744
4744
-
const entry = this.fdMap.get(fd);
4745
4745
-
if (typeof entry === `undefined`)
4746
4746
-
throw EBADF(`fchownSync`);
4747
4747
-
const [zipFs, realFd] = entry;
4748
4748
-
return zipFs.fchownSync(realFd, uid, gid);
4749
4749
-
}
4750
4750
-
async chownPromise(p, uid, gid) {
4751
4751
-
return await this.makeCallPromise(p, async () => {
4752
4752
-
return await this.baseFs.chownPromise(p, uid, gid);
4753
4753
-
}, async (zipFs, { subPath }) => {
4754
4754
-
return await zipFs.chownPromise(subPath, uid, gid);
4755
4755
-
});
4756
4756
-
}
4757
4757
-
chownSync(p, uid, gid) {
4758
4758
-
return this.makeCallSync(p, () => {
4759
4759
-
return this.baseFs.chownSync(p, uid, gid);
4760
4760
-
}, (zipFs, { subPath }) => {
4761
4761
-
return zipFs.chownSync(subPath, uid, gid);
4762
4762
-
});
4763
4763
-
}
4764
4764
-
async renamePromise(oldP, newP) {
4765
4765
-
return await this.makeCallPromise(oldP, async () => {
4766
4766
-
return await this.makeCallPromise(newP, async () => {
4767
4767
-
return await this.baseFs.renamePromise(oldP, newP);
4768
4768
-
}, async () => {
4769
4769
-
throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` });
4770
4770
-
});
4771
4771
-
}, async (zipFsO, { subPath: subPathO }) => {
4772
4772
-
return await this.makeCallPromise(newP, async () => {
4773
4773
-
throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` });
4774
4774
-
}, async (zipFsN, { subPath: subPathN }) => {
4775
4775
-
if (zipFsO !== zipFsN) {
4776
4776
-
throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` });
4777
4777
-
} else {
4778
4778
-
return await zipFsO.renamePromise(subPathO, subPathN);
4779
4779
-
}
4780
4780
-
});
4781
4781
-
});
4782
4782
-
}
4783
4783
-
renameSync(oldP, newP) {
4784
4784
-
return this.makeCallSync(oldP, () => {
4785
4785
-
return this.makeCallSync(newP, () => {
4786
4786
-
return this.baseFs.renameSync(oldP, newP);
4787
4787
-
}, () => {
4788
4788
-
throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` });
4789
4789
-
});
4790
4790
-
}, (zipFsO, { subPath: subPathO }) => {
4791
4791
-
return this.makeCallSync(newP, () => {
4792
4792
-
throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` });
4793
4793
-
}, (zipFsN, { subPath: subPathN }) => {
4794
4794
-
if (zipFsO !== zipFsN) {
4795
4795
-
throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` });
4796
4796
-
} else {
4797
4797
-
return zipFsO.renameSync(subPathO, subPathN);
4798
4798
-
}
4799
4799
-
});
4800
4800
-
});
4801
4801
-
}
4802
4802
-
async copyFilePromise(sourceP, destP, flags = 0) {
4803
4803
-
const fallback = async (sourceFs, sourceP2, destFs, destP2) => {
4804
4804
-
if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0)
4805
4805
-
throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${sourceP2}' -> ${destP2}'`), { code: `EXDEV` });
4806
4806
-
if (flags & fs.constants.COPYFILE_EXCL && await this.existsPromise(sourceP2))
4807
4807
-
throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EEXIST` });
4808
4808
-
let content;
4809
4809
-
try {
4810
4810
-
content = await sourceFs.readFilePromise(sourceP2);
4811
4811
-
} catch (error) {
4812
4812
-
throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EINVAL` });
4813
4813
-
}
4814
4814
-
await destFs.writeFilePromise(destP2, content);
4815
4815
-
};
4816
4816
-
return await this.makeCallPromise(sourceP, async () => {
4817
4817
-
return await this.makeCallPromise(destP, async () => {
4818
4818
-
return await this.baseFs.copyFilePromise(sourceP, destP, flags);
4819
4819
-
}, async (zipFsD, { subPath: subPathD }) => {
4820
4820
-
return await fallback(this.baseFs, sourceP, zipFsD, subPathD);
4821
4821
-
});
4822
4822
-
}, async (zipFsS, { subPath: subPathS }) => {
4823
4823
-
return await this.makeCallPromise(destP, async () => {
4824
4824
-
return await fallback(zipFsS, subPathS, this.baseFs, destP);
4825
4825
-
}, async (zipFsD, { subPath: subPathD }) => {
4826
4826
-
if (zipFsS !== zipFsD) {
4827
4827
-
return await fallback(zipFsS, subPathS, zipFsD, subPathD);
4828
4828
-
} else {
4829
4829
-
return await zipFsS.copyFilePromise(subPathS, subPathD, flags);
4830
4830
-
}
4831
4831
-
});
4832
4832
-
});
4833
4833
-
}
4834
4834
-
copyFileSync(sourceP, destP, flags = 0) {
4835
4835
-
const fallback = (sourceFs, sourceP2, destFs, destP2) => {
4836
4836
-
if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0)
4837
4837
-
throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${sourceP2}' -> ${destP2}'`), { code: `EXDEV` });
4838
4838
-
if (flags & fs.constants.COPYFILE_EXCL && this.existsSync(sourceP2))
4839
4839
-
throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EEXIST` });
4840
4840
-
let content;
4841
4841
-
try {
4842
4842
-
content = sourceFs.readFileSync(sourceP2);
4843
4843
-
} catch (error) {
4844
4844
-
throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EINVAL` });
4845
4845
-
}
4846
4846
-
destFs.writeFileSync(destP2, content);
4847
4847
-
};
4848
4848
-
return this.makeCallSync(sourceP, () => {
4849
4849
-
return this.makeCallSync(destP, () => {
4850
4850
-
return this.baseFs.copyFileSync(sourceP, destP, flags);
4851
4851
-
}, (zipFsD, { subPath: subPathD }) => {
4852
4852
-
return fallback(this.baseFs, sourceP, zipFsD, subPathD);
4853
4853
-
});
4854
4854
-
}, (zipFsS, { subPath: subPathS }) => {
4855
4855
-
return this.makeCallSync(destP, () => {
4856
4856
-
return fallback(zipFsS, subPathS, this.baseFs, destP);
4857
4857
-
}, (zipFsD, { subPath: subPathD }) => {
4858
4858
-
if (zipFsS !== zipFsD) {
4859
4859
-
return fallback(zipFsS, subPathS, zipFsD, subPathD);
4860
4860
-
} else {
4861
4861
-
return zipFsS.copyFileSync(subPathS, subPathD, flags);
4862
4862
-
}
4863
4863
-
});
4864
4864
-
});
4865
4865
-
}
4866
4866
-
async appendFilePromise(p, content, opts) {
4867
4867
-
return await this.makeCallPromise(p, async () => {
4868
4868
-
return await this.baseFs.appendFilePromise(p, content, opts);
4869
4869
-
}, async (zipFs, { subPath }) => {
4870
4870
-
return await zipFs.appendFilePromise(subPath, content, opts);
4871
4871
-
});
4872
4872
-
}
4873
4873
-
appendFileSync(p, content, opts) {
4874
4874
-
return this.makeCallSync(p, () => {
4875
4875
-
return this.baseFs.appendFileSync(p, content, opts);
4876
4876
-
}, (zipFs, { subPath }) => {
4877
4877
-
return zipFs.appendFileSync(subPath, content, opts);
4878
4878
-
});
4879
4879
-
}
4880
4880
-
async writeFilePromise(p, content, opts) {
4881
4881
-
return await this.makeCallPromise(p, async () => {
4882
4882
-
return await this.baseFs.writeFilePromise(p, content, opts);
4883
4883
-
}, async (zipFs, { subPath }) => {
4884
4884
-
return await zipFs.writeFilePromise(subPath, content, opts);
4885
4885
-
});
4886
4886
-
}
4887
4887
-
writeFileSync(p, content, opts) {
4888
4888
-
return this.makeCallSync(p, () => {
4889
4889
-
return this.baseFs.writeFileSync(p, content, opts);
4890
4890
-
}, (zipFs, { subPath }) => {
4891
4891
-
return zipFs.writeFileSync(subPath, content, opts);
4892
4892
-
});
4893
4893
-
}
4894
4894
-
async unlinkPromise(p) {
4895
4895
-
return await this.makeCallPromise(p, async () => {
4896
4896
-
return await this.baseFs.unlinkPromise(p);
4897
4897
-
}, async (zipFs, { subPath }) => {
4898
4898
-
return await zipFs.unlinkPromise(subPath);
4899
4899
-
});
4900
4900
-
}
4901
4901
-
unlinkSync(p) {
4902
4902
-
return this.makeCallSync(p, () => {
4903
4903
-
return this.baseFs.unlinkSync(p);
4904
4904
-
}, (zipFs, { subPath }) => {
4905
4905
-
return zipFs.unlinkSync(subPath);
4906
4906
-
});
4907
4907
-
}
4908
4908
-
async utimesPromise(p, atime, mtime) {
4909
4909
-
return await this.makeCallPromise(p, async () => {
4910
4910
-
return await this.baseFs.utimesPromise(p, atime, mtime);
4911
4911
-
}, async (zipFs, { subPath }) => {
4912
4912
-
return await zipFs.utimesPromise(subPath, atime, mtime);
4913
4913
-
});
4914
4914
-
}
4915
4915
-
utimesSync(p, atime, mtime) {
4916
4916
-
return this.makeCallSync(p, () => {
4917
4917
-
return this.baseFs.utimesSync(p, atime, mtime);
4918
4918
-
}, (zipFs, { subPath }) => {
4919
4919
-
return zipFs.utimesSync(subPath, atime, mtime);
4920
4920
-
});
4921
4921
-
}
4922
4922
-
async mkdirPromise(p, opts) {
4923
4923
-
return await this.makeCallPromise(p, async () => {
4924
4924
-
return await this.baseFs.mkdirPromise(p, opts);
4925
4925
-
}, async (zipFs, { subPath }) => {
4926
4926
-
return await zipFs.mkdirPromise(subPath, opts);
4927
4927
-
});
4928
4928
-
}
4929
4929
-
mkdirSync(p, opts) {
4930
4930
-
return this.makeCallSync(p, () => {
4931
4931
-
return this.baseFs.mkdirSync(p, opts);
4932
4932
-
}, (zipFs, { subPath }) => {
4933
4933
-
return zipFs.mkdirSync(subPath, opts);
4934
4934
-
});
4935
4935
-
}
4936
4936
-
async rmdirPromise(p, opts) {
4937
4937
-
return await this.makeCallPromise(p, async () => {
4938
4938
-
return await this.baseFs.rmdirPromise(p, opts);
4939
4939
-
}, async (zipFs, { subPath }) => {
4940
4940
-
return await zipFs.rmdirPromise(subPath, opts);
4941
4941
-
});
4942
4942
-
}
4943
4943
-
rmdirSync(p, opts) {
4944
4944
-
return this.makeCallSync(p, () => {
4945
4945
-
return this.baseFs.rmdirSync(p, opts);
4946
4946
-
}, (zipFs, { subPath }) => {
4947
4947
-
return zipFs.rmdirSync(subPath, opts);
4948
4948
-
});
4949
4949
-
}
4950
4950
-
async linkPromise(existingP, newP) {
4951
4951
-
return await this.makeCallPromise(newP, async () => {
4952
4952
-
return await this.baseFs.linkPromise(existingP, newP);
4953
4953
-
}, async (zipFs, { subPath }) => {
4954
4954
-
return await zipFs.linkPromise(existingP, subPath);
4955
4955
-
});
4956
4956
-
}
4957
4957
-
linkSync(existingP, newP) {
4958
4958
-
return this.makeCallSync(newP, () => {
4959
4959
-
return this.baseFs.linkSync(existingP, newP);
4960
4960
-
}, (zipFs, { subPath }) => {
4961
4961
-
return zipFs.linkSync(existingP, subPath);
4962
4962
-
});
4963
4963
-
}
4964
4964
-
async symlinkPromise(target, p, type) {
4965
4965
-
return await this.makeCallPromise(p, async () => {
4966
4966
-
return await this.baseFs.symlinkPromise(target, p, type);
4967
4967
-
}, async (zipFs, { subPath }) => {
4968
4968
-
return await zipFs.symlinkPromise(target, subPath);
4969
4969
-
});
4970
4970
-
}
4971
4971
-
symlinkSync(target, p, type) {
4972
4972
-
return this.makeCallSync(p, () => {
4973
4973
-
return this.baseFs.symlinkSync(target, p, type);
4974
4974
-
}, (zipFs, { subPath }) => {
4975
4975
-
return zipFs.symlinkSync(target, subPath);
4976
4976
-
});
4977
4977
-
}
4978
4978
-
async readFilePromise(p, encoding) {
4979
4979
-
return this.makeCallPromise(p, async () => {
4980
4980
-
switch (encoding) {
4981
4981
-
case `utf8`:
4982
4982
-
return await this.baseFs.readFilePromise(p, encoding);
4983
4983
-
default:
4984
4984
-
return await this.baseFs.readFilePromise(p, encoding);
4985
4985
-
}
4986
4986
-
}, async (zipFs, { subPath }) => {
4987
4987
-
return await zipFs.readFilePromise(subPath, encoding);
4988
4988
-
});
4989
4989
-
}
4990
4990
-
readFileSync(p, encoding) {
4991
4991
-
return this.makeCallSync(p, () => {
4992
4992
-
switch (encoding) {
4993
4993
-
case `utf8`:
4994
4994
-
return this.baseFs.readFileSync(p, encoding);
4995
4995
-
default:
4996
4996
-
return this.baseFs.readFileSync(p, encoding);
4997
4997
-
}
4998
4998
-
}, (zipFs, { subPath }) => {
4999
4999
-
return zipFs.readFileSync(subPath, encoding);
5000
5000
-
});
5001
5001
-
}
5002
5002
-
async readdirPromise(p, opts) {
5003
5003
-
return await this.makeCallPromise(p, async () => {
5004
5004
-
return await this.baseFs.readdirPromise(p, opts);
5005
5005
-
}, async (zipFs, { subPath }) => {
5006
5006
-
return await zipFs.readdirPromise(subPath, opts);
5007
5007
-
}, {
5008
5008
-
requireSubpath: false
5009
5009
-
});
5010
5010
-
}
5011
5011
-
readdirSync(p, opts) {
5012
5012
-
return this.makeCallSync(p, () => {
5013
5013
-
return this.baseFs.readdirSync(p, opts);
5014
5014
-
}, (zipFs, { subPath }) => {
5015
5015
-
return zipFs.readdirSync(subPath, opts);
5016
5016
-
}, {
5017
5017
-
requireSubpath: false
5018
5018
-
});
5019
5019
-
}
5020
5020
-
async readlinkPromise(p) {
5021
5021
-
return await this.makeCallPromise(p, async () => {
5022
5022
-
return await this.baseFs.readlinkPromise(p);
5023
5023
-
}, async (zipFs, { subPath }) => {
5024
5024
-
return await zipFs.readlinkPromise(subPath);
5025
5025
-
});
5026
5026
-
}
5027
5027
-
readlinkSync(p) {
5028
5028
-
return this.makeCallSync(p, () => {
5029
5029
-
return this.baseFs.readlinkSync(p);
5030
5030
-
}, (zipFs, { subPath }) => {
5031
5031
-
return zipFs.readlinkSync(subPath);
5032
5032
-
});
5033
5033
-
}
5034
5034
-
async truncatePromise(p, len) {
5035
5035
-
return await this.makeCallPromise(p, async () => {
5036
5036
-
return await this.baseFs.truncatePromise(p, len);
5037
5037
-
}, async (zipFs, { subPath }) => {
5038
5038
-
return await zipFs.truncatePromise(subPath, len);
5039
5039
-
});
5040
5040
-
}
5041
5041
-
truncateSync(p, len) {
5042
5042
-
return this.makeCallSync(p, () => {
5043
5043
-
return this.baseFs.truncateSync(p, len);
5044
5044
-
}, (zipFs, { subPath }) => {
5045
5045
-
return zipFs.truncateSync(subPath, len);
5046
5046
-
});
5047
5047
-
}
5048
5048
-
async ftruncatePromise(fd, len) {
5049
5049
-
if ((fd & ZIP_MASK) !== ZIP_MAGIC)
5050
5050
-
return this.baseFs.ftruncatePromise(fd, len);
5051
5051
-
const entry = this.fdMap.get(fd);
5052
5052
-
if (typeof entry === `undefined`)
5053
5053
-
throw EBADF(`ftruncate`);
5054
5054
-
const [zipFs, realFd] = entry;
5055
5055
-
return zipFs.ftruncatePromise(realFd, len);
5056
5056
-
}
5057
5057
-
ftruncateSync(fd, len) {
5058
5058
-
if ((fd & ZIP_MASK) !== ZIP_MAGIC)
5059
5059
-
return this.baseFs.ftruncateSync(fd, len);
5060
5060
-
const entry = this.fdMap.get(fd);
5061
5061
-
if (typeof entry === `undefined`)
5062
5062
-
throw EBADF(`ftruncateSync`);
5063
5063
-
const [zipFs, realFd] = entry;
5064
5064
-
return zipFs.ftruncateSync(realFd, len);
5065
5065
-
}
5066
5066
-
watch(p, a, b) {
5067
5067
-
return this.makeCallSync(p, () => {
5068
5068
-
return this.baseFs.watch(
5069
5069
-
p,
5070
5070
-
a,
5071
5071
-
b
5072
5072
-
);
5073
5073
-
}, (zipFs, { subPath }) => {
5074
5074
-
return zipFs.watch(
5075
5075
-
subPath,
5076
5076
-
a,
5077
5077
-
b
5078
5078
-
);
5079
5079
-
});
5080
5080
-
}
5081
5081
-
watchFile(p, a, b) {
5082
5082
-
return this.makeCallSync(p, () => {
5083
5083
-
return this.baseFs.watchFile(
5084
5084
-
p,
5085
5085
-
a,
5086
5086
-
b
5087
5087
-
);
5088
5088
-
}, () => {
5089
5089
-
return watchFile(this, p, a, b);
5090
5090
-
});
5091
5091
-
}
5092
5092
-
unwatchFile(p, cb) {
5093
5093
-
return this.makeCallSync(p, () => {
5094
5094
-
return this.baseFs.unwatchFile(p, cb);
5095
5095
-
}, () => {
5096
5096
-
return unwatchFile(this, p, cb);
5097
5097
-
});
5098
5098
-
}
5099
5099
-
async makeCallPromise(p, discard, accept, { requireSubpath = true } = {}) {
5100
5100
-
if (typeof p !== `string`)
5101
5101
-
return await discard();
5102
5102
-
const normalizedP = this.resolve(p);
5103
5103
-
const zipInfo = this.findZip(normalizedP);
5104
5104
-
if (!zipInfo)
5105
5105
-
return await discard();
5106
5106
-
if (requireSubpath && zipInfo.subPath === `/`)
5107
5107
-
return await discard();
5108
5108
-
return await this.getZipPromise(zipInfo.archivePath, async (zipFs) => await accept(zipFs, zipInfo));
5109
5109
-
}
5110
5110
-
makeCallSync(p, discard, accept, { requireSubpath = true } = {}) {
5111
5111
-
if (typeof p !== `string`)
5112
5112
-
return discard();
5113
5113
-
const normalizedP = this.resolve(p);
5114
5114
-
const zipInfo = this.findZip(normalizedP);
5115
5115
-
if (!zipInfo)
5116
5116
-
return discard();
5117
5117
-
if (requireSubpath && zipInfo.subPath === `/`)
5118
5118
-
return discard();
5119
5119
-
return this.getZipSync(zipInfo.archivePath, (zipFs) => accept(zipFs, zipInfo));
5120
5120
-
}
5121
5121
-
findZip(p) {
5122
5122
-
if (this.filter && !this.filter.test(p))
5123
5123
-
return null;
5124
5124
-
let filePath = ``;
5125
5125
-
while (true) {
5126
5126
-
const pathPartWithArchive = p.substring(filePath.length);
5127
5127
-
let archivePart;
5128
5128
-
if (!this.fileExtensions) {
5129
5129
-
archivePart = getArchivePart(pathPartWithArchive, `.zip`);
5130
5130
-
} else {
5131
5131
-
for (const ext of this.fileExtensions) {
5132
5132
-
archivePart = getArchivePart(pathPartWithArchive, ext);
5133
5133
-
if (archivePart) {
5134
5134
-
break;
5135
5135
-
}
5136
5136
-
}
5137
5137
-
}
5138
5138
-
if (!archivePart)
5139
5139
-
return null;
5140
5140
-
filePath = this.pathUtils.join(filePath, archivePart);
5141
5141
-
if (this.isZip.has(filePath) === false) {
5142
5142
-
if (this.notZip.has(filePath))
5143
5143
-
continue;
5144
5144
-
try {
5145
5145
-
if (!this.baseFs.lstatSync(filePath).isFile()) {
5146
5146
-
this.notZip.add(filePath);
5147
5147
-
continue;
5148
5148
-
}
5149
5149
-
} catch {
5150
5150
-
return null;
5151
5151
-
}
5152
5152
-
this.isZip.add(filePath);
5153
5153
-
}
5154
5154
-
return {
5155
5155
-
archivePath: filePath,
5156
5156
-
subPath: this.pathUtils.join(PortablePath.root, p.substring(filePath.length))
5157
5157
-
};
5158
5158
-
}
5159
5159
-
}
5160
5160
-
limitOpenFiles(max) {
5161
5161
-
if (this.zipInstances === null)
5162
5162
-
return;
5163
5163
-
const now = Date.now();
5164
5164
-
let nextExpiresAt = now + this.maxAge;
5165
5165
-
let closeCount = max === null ? 0 : this.zipInstances.size - max;
5166
5166
-
for (const [path, { zipFs, expiresAt, refCount }] of this.zipInstances.entries()) {
5167
5167
-
if (refCount !== 0 || zipFs.hasOpenFileHandles()) {
5168
5168
-
continue;
5169
5169
-
} else if (now >= expiresAt) {
5170
5170
-
zipFs.saveAndClose();
5171
5171
-
this.zipInstances.delete(path);
5172
5172
-
closeCount -= 1;
5173
5173
-
continue;
5174
5174
-
} else if (max === null || closeCount <= 0) {
5175
5175
-
nextExpiresAt = expiresAt;
5176
5176
-
break;
5177
5177
-
}
5178
5178
-
zipFs.saveAndClose();
5179
5179
-
this.zipInstances.delete(path);
5180
5180
-
closeCount -= 1;
5181
5181
-
}
5182
5182
-
if (this.limitOpenFilesTimeout === null && (max === null && this.zipInstances.size > 0 || max !== null)) {
5183
5183
-
this.limitOpenFilesTimeout = setTimeout(() => {
5184
5184
-
this.limitOpenFilesTimeout = null;
5185
5185
-
this.limitOpenFiles(null);
5186
5186
-
}, nextExpiresAt - now).unref();
5187
5187
-
}
5188
5188
-
}
5189
5189
-
async getZipPromise(p, accept) {
5190
5190
-
const getZipOptions = async () => ({
5191
5191
-
baseFs: this.baseFs,
5192
5192
-
libzip: this.libzip,
5193
5193
-
readOnly: this.readOnlyArchives,
5194
5194
-
stats: await this.baseFs.statPromise(p)
5195
5195
-
});
5196
5196
-
if (this.zipInstances) {
5197
5197
-
let cachedZipFs = this.zipInstances.get(p);
5198
5198
-
if (!cachedZipFs) {
5199
5199
-
const zipOptions = await getZipOptions();
5200
5200
-
cachedZipFs = this.zipInstances.get(p);
5201
5201
-
if (!cachedZipFs) {
5202
5202
-
cachedZipFs = {
5203
5203
-
zipFs: new ZipFS(p, zipOptions),
5204
5204
-
expiresAt: 0,
5205
5205
-
refCount: 0
5206
5206
-
};
5207
5207
-
}
5208
5208
-
}
5209
5209
-
this.zipInstances.delete(p);
5210
5210
-
this.limitOpenFiles(this.maxOpenFiles - 1);
5211
5211
-
this.zipInstances.set(p, cachedZipFs);
5212
5212
-
cachedZipFs.expiresAt = Date.now() + this.maxAge;
5213
5213
-
cachedZipFs.refCount += 1;
5214
5214
-
try {
5215
5215
-
return await accept(cachedZipFs.zipFs);
5216
5216
-
} finally {
5217
5217
-
cachedZipFs.refCount -= 1;
5218
5218
-
}
5219
5219
-
} else {
5220
5220
-
const zipFs = new ZipFS(p, await getZipOptions());
5221
5221
-
try {
5222
5222
-
return await accept(zipFs);
5223
5223
-
} finally {
5224
5224
-
zipFs.saveAndClose();
5225
5225
-
}
5226
5226
-
}
5227
5227
-
}
5228
5228
-
getZipSync(p, accept) {
5229
5229
-
const getZipOptions = () => ({
5230
5230
-
baseFs: this.baseFs,
5231
5231
-
libzip: this.libzip,
5232
5232
-
readOnly: this.readOnlyArchives,
5233
5233
-
stats: this.baseFs.statSync(p)
5234
5234
-
});
5235
5235
-
if (this.zipInstances) {
5236
5236
-
let cachedZipFs = this.zipInstances.get(p);
5237
5237
-
if (!cachedZipFs) {
5238
5238
-
cachedZipFs = {
5239
5239
-
zipFs: new ZipFS(p, getZipOptions()),
5240
5240
-
expiresAt: 0,
5241
5241
-
refCount: 0
5242
5242
-
};
5243
5243
-
}
5244
5244
-
this.zipInstances.delete(p);
5245
5245
-
this.limitOpenFiles(this.maxOpenFiles - 1);
5246
5246
-
this.zipInstances.set(p, cachedZipFs);
5247
5247
-
cachedZipFs.expiresAt = Date.now() + this.maxAge;
5248
5248
-
return accept(cachedZipFs.zipFs);
5249
5249
-
} else {
5250
5250
-
const zipFs = new ZipFS(p, getZipOptions());
5251
5251
-
try {
5252
5252
-
return accept(zipFs);
5253
5253
-
} finally {
5254
5254
-
zipFs.saveAndClose();
5255
5255
-
}
5256
5256
-
}
5257
5257
-
}
5258
5258
-
}
5259
5259
-
5260
5260
-
class NodePathFS extends ProxiedFS {
5261
5261
-
constructor(baseFs) {
5262
5262
-
super(npath);
5263
5263
-
this.baseFs = baseFs;
5264
5264
-
}
5265
5265
-
mapFromBase(path) {
5266
5266
-
return path;
5267
5267
-
}
5268
5268
-
mapToBase(path) {
5269
5269
-
if (typeof path === `string`)
5270
5270
-
return path;
5271
5271
-
if (path instanceof url.URL)
5272
5272
-
return url.fileURLToPath(path);
5273
5273
-
if (Buffer.isBuffer(path)) {
5274
5274
-
const str = path.toString();
5275
5275
-
if (Buffer.byteLength(str) !== path.byteLength)
5276
5276
-
throw new Error(`Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942`);
5277
5277
-
return str;
5278
5278
-
}
5279
5279
-
throw new Error(`Unsupported path type: ${nodeUtils.inspect(path)}`);
5280
5280
-
}
5281
5281
-
}
5282
5282
-
5283
5283
-
var _a, _b, _c, _d;
5284
5284
-
const kBaseFs = Symbol(`kBaseFs`);
5285
5285
-
const kFd = Symbol(`kFd`);
5286
5286
-
const kClosePromise = Symbol(`kClosePromise`);
5287
5287
-
const kCloseResolve = Symbol(`kCloseResolve`);
5288
5288
-
const kCloseReject = Symbol(`kCloseReject`);
5289
5289
-
const kRefs = Symbol(`kRefs`);
5290
5290
-
const kRef = Symbol(`kRef`);
5291
5291
-
const kUnref = Symbol(`kUnref`);
5292
5292
-
class FileHandle {
5293
5293
-
constructor(fd, baseFs) {
5294
5294
-
this[_a] = 1;
5295
5295
-
this[_b] = void 0;
5296
5296
-
this[_c] = void 0;
5297
5297
-
this[_d] = void 0;
5298
5298
-
this[kBaseFs] = baseFs;
5299
5299
-
this[kFd] = fd;
5300
5300
-
}
5301
5301
-
get fd() {
5302
5302
-
return this[kFd];
5303
5303
-
}
5304
5304
-
async appendFile(data, options) {
5305
5305
-
var _a2;
5306
5306
-
try {
5307
5307
-
this[kRef](this.appendFile);
5308
5308
-
const encoding = (_a2 = typeof options === `string` ? options : options == null ? void 0 : options.encoding) != null ? _a2 : void 0;
5309
5309
-
return await this[kBaseFs].appendFilePromise(this.fd, data, encoding ? { encoding } : void 0);
5310
5310
-
} finally {
5311
5311
-
this[kUnref]();
5312
5312
-
}
5313
5313
-
}
5314
5314
-
async chown(uid, gid) {
5315
5315
-
try {
5316
5316
-
this[kRef](this.chown);
5317
5317
-
return await this[kBaseFs].fchownPromise(this.fd, uid, gid);
5318
5318
-
} finally {
5319
5319
-
this[kUnref]();
5320
5320
-
}
5321
5321
-
}
5322
5322
-
async chmod(mode) {
5323
5323
-
try {
5324
5324
-
this[kRef](this.chmod);
5325
5325
-
return await this[kBaseFs].fchmodPromise(this.fd, mode);
5326
5326
-
} finally {
5327
5327
-
this[kUnref]();
5328
5328
-
}
5329
5329
-
}
5330
5330
-
createReadStream(options) {
5331
5331
-
return this[kBaseFs].createReadStream(null, { ...options, fd: this.fd });
5332
5332
-
}
5333
5333
-
createWriteStream(options) {
5334
5334
-
return this[kBaseFs].createWriteStream(null, { ...options, fd: this.fd });
5335
5335
-
}
5336
5336
-
datasync() {
5337
5337
-
throw new Error(`Method not implemented.`);
5338
5338
-
}
5339
5339
-
sync() {
5340
5340
-
throw new Error(`Method not implemented.`);
5341
5341
-
}
5342
5342
-
async read(bufferOrOptions, offset, length, position) {
5343
5343
-
var _a2, _b2, _c2;
5344
5344
-
try {
5345
5345
-
this[kRef](this.read);
5346
5346
-
let buffer;
5347
5347
-
if (!Buffer.isBuffer(bufferOrOptions)) {
5348
5348
-
bufferOrOptions != null ? bufferOrOptions : bufferOrOptions = {};
5349
5349
-
buffer = (_a2 = bufferOrOptions.buffer) != null ? _a2 : Buffer.alloc(16384);
5350
5350
-
offset = bufferOrOptions.offset || 0;
5351
5351
-
length = (_b2 = bufferOrOptions.length) != null ? _b2 : buffer.byteLength;
5352
5352
-
position = (_c2 = bufferOrOptions.position) != null ? _c2 : null;
5353
5353
-
} else {
5354
5354
-
buffer = bufferOrOptions;
5355
5355
-
}
5356
5356
-
offset != null ? offset : offset = 0;
5357
5357
-
length != null ? length : length = 0;
5358
5358
-
if (length === 0) {
5359
5359
-
return {
5360
5360
-
bytesRead: length,
5361
5361
-
buffer
5362
5362
-
};
5363
5363
-
}
5364
5364
-
const bytesRead = await this[kBaseFs].readPromise(this.fd, buffer, offset, length, position);
5365
5365
-
return {
5366
5366
-
bytesRead,
5367
5367
-
buffer
5368
5368
-
};
5369
5369
-
} finally {
5370
5370
-
this[kUnref]();
5371
5371
-
}
5372
5372
-
}
5373
5373
-
async readFile(options) {
5374
5374
-
var _a2;
5375
5375
-
try {
5376
5376
-
this[kRef](this.readFile);
5377
5377
-
const encoding = (_a2 = typeof options === `string` ? options : options == null ? void 0 : options.encoding) != null ? _a2 : void 0;
5378
5378
-
return await this[kBaseFs].readFilePromise(this.fd, encoding);
5379
5379
-
} finally {
5380
5380
-
this[kUnref]();
5381
5381
-
}
5382
5382
-
}
5383
5383
-
readLines(options) {
5384
5384
-
return readline.createInterface({
5385
5385
-
input: this.createReadStream(options),
5386
5386
-
crlfDelay: Infinity
5387
5387
-
});
5388
5388
-
}
5389
5389
-
async stat(opts) {
5390
5390
-
try {
5391
5391
-
this[kRef](this.stat);
5392
5392
-
return await this[kBaseFs].fstatPromise(this.fd, opts);
5393
5393
-
} finally {
5394
5394
-
this[kUnref]();
5395
5395
-
}
5396
5396
-
}
5397
5397
-
async truncate(len) {
5398
5398
-
try {
5399
5399
-
this[kRef](this.truncate);
5400
5400
-
return await this[kBaseFs].ftruncatePromise(this.fd, len);
5401
5401
-
} finally {
5402
5402
-
this[kUnref]();
5403
5403
-
}
5404
5404
-
}
5405
5405
-
utimes(atime, mtime) {
5406
5406
-
throw new Error(`Method not implemented.`);
5407
5407
-
}
5408
5408
-
async writeFile(data, options) {
5409
5409
-
var _a2;
5410
5410
-
try {
5411
5411
-
this[kRef](this.writeFile);
5412
5412
-
const encoding = (_a2 = typeof options === `string` ? options : options == null ? void 0 : options.encoding) != null ? _a2 : void 0;
5413
5413
-
await this[kBaseFs].writeFilePromise(this.fd, data, encoding);
5414
5414
-
} finally {
5415
5415
-
this[kUnref]();
5416
5416
-
}
5417
5417
-
}
5418
5418
-
async write(...args) {
5419
5419
-
try {
5420
5420
-
this[kRef](this.write);
5421
5421
-
if (ArrayBuffer.isView(args[0])) {
5422
5422
-
const [buffer, offset, length, position] = args;
5423
5423
-
const bytesWritten = await this[kBaseFs].writePromise(this.fd, buffer, offset != null ? offset : void 0, length != null ? length : void 0, position != null ? position : void 0);
5424
5424
-
return { bytesWritten, buffer };
5425
5425
-
} else {
5426
5426
-
const [data, position, encoding] = args;
5427
5427
-
const bytesWritten = await this[kBaseFs].writePromise(this.fd, data, position, encoding);
5428
5428
-
return { bytesWritten, buffer: data };
5429
5429
-
}
5430
5430
-
} finally {
5431
5431
-
this[kUnref]();
5432
5432
-
}
5433
5433
-
}
5434
5434
-
async writev(buffers, position) {
5435
5435
-
try {
5436
5436
-
this[kRef](this.writev);
5437
5437
-
let bytesWritten = 0;
5438
5438
-
if (typeof position !== `undefined`) {
5439
5439
-
for (const buffer of buffers) {
5440
5440
-
const writeResult = await this.write(buffer, void 0, void 0, position);
5441
5441
-
bytesWritten += writeResult.bytesWritten;
5442
5442
-
position += writeResult.bytesWritten;
5443
5443
-
}
5444
5444
-
} else {
5445
5445
-
for (const buffer of buffers) {
5446
5446
-
const writeResult = await this.write(buffer);
5447
5447
-
bytesWritten += writeResult.bytesWritten;
5448
5448
-
}
5449
5449
-
}
5450
5450
-
return {
5451
5451
-
buffers,
5452
5452
-
bytesWritten
5453
5453
-
};
5454
5454
-
} finally {
5455
5455
-
this[kUnref]();
5456
5456
-
}
5457
5457
-
}
5458
5458
-
readv(buffers, position) {
5459
5459
-
throw new Error(`Method not implemented.`);
5460
5460
-
}
5461
5461
-
close() {
5462
5462
-
if (this[kFd] === -1)
5463
5463
-
return Promise.resolve();
5464
5464
-
if (this[kClosePromise])
5465
5465
-
return this[kClosePromise];
5466
5466
-
this[kRefs]--;
5467
5467
-
if (this[kRefs] === 0) {
5468
5468
-
const fd = this[kFd];
5469
5469
-
this[kFd] = -1;
5470
5470
-
this[kClosePromise] = this[kBaseFs].closePromise(fd).finally(() => {
5471
5471
-
this[kClosePromise] = void 0;
5472
5472
-
});
5473
5473
-
} else {
5474
5474
-
this[kClosePromise] = new Promise((resolve, reject) => {
5475
5475
-
this[kCloseResolve] = resolve;
5476
5476
-
this[kCloseReject] = reject;
5477
5477
-
}).finally(() => {
5478
5478
-
this[kClosePromise] = void 0;
5479
5479
-
this[kCloseReject] = void 0;
5480
5480
-
this[kCloseResolve] = void 0;
5481
5481
-
});
5482
5482
-
}
5483
5483
-
return this[kClosePromise];
5484
5484
-
}
5485
5485
-
[(_a = kRefs, _b = kClosePromise, _c = kCloseResolve, _d = kCloseReject, kRef)](caller) {
5486
5486
-
if (this[kFd] === -1) {
5487
5487
-
const err = new Error(`file closed`);
5488
5488
-
err.code = `EBADF`;
5489
5489
-
err.syscall = caller.name;
5490
5490
-
throw err;
5491
5491
-
}
5492
5492
-
this[kRefs]++;
5493
5493
-
}
5494
5494
-
[kUnref]() {
5495
5495
-
this[kRefs]--;
5496
5496
-
if (this[kRefs] === 0) {
5497
5497
-
const fd = this[kFd];
5498
5498
-
this[kFd] = -1;
5499
5499
-
this[kBaseFs].closePromise(fd).then(this[kCloseResolve], this[kCloseReject]);
5500
5500
-
}
5501
5501
-
}
5502
5502
-
}
5503
5503
-
5504
5504
-
const SYNC_IMPLEMENTATIONS = /* @__PURE__ */ new Set([
5505
5505
-
`accessSync`,
5506
5506
-
`appendFileSync`,
5507
5507
-
`createReadStream`,
5508
5508
-
`createWriteStream`,
5509
5509
-
`chmodSync`,
5510
5510
-
`fchmodSync`,
5511
5511
-
`chownSync`,
5512
5512
-
`fchownSync`,
5513
5513
-
`closeSync`,
5514
5514
-
`copyFileSync`,
5515
5515
-
`linkSync`,
5516
5516
-
`lstatSync`,
5517
5517
-
`fstatSync`,
5518
5518
-
`lutimesSync`,
5519
5519
-
`mkdirSync`,
5520
5520
-
`openSync`,
5521
5521
-
`opendirSync`,
5522
5522
-
`readlinkSync`,
5523
5523
-
`readFileSync`,
5524
5524
-
`readdirSync`,
5525
5525
-
`readlinkSync`,
5526
5526
-
`realpathSync`,
5527
5527
-
`renameSync`,
5528
5528
-
`rmdirSync`,
5529
5529
-
`statSync`,
5530
5530
-
`symlinkSync`,
5531
5531
-
`truncateSync`,
5532
5532
-
`ftruncateSync`,
5533
5533
-
`unlinkSync`,
5534
5534
-
`unwatchFile`,
5535
5535
-
`utimesSync`,
5536
5536
-
`watch`,
5537
5537
-
`watchFile`,
5538
5538
-
`writeFileSync`,
5539
5539
-
`writeSync`
5540
5540
-
]);
5541
5541
-
const ASYNC_IMPLEMENTATIONS = /* @__PURE__ */ new Set([
5542
5542
-
`accessPromise`,
5543
5543
-
`appendFilePromise`,
5544
5544
-
`fchmodPromise`,
5545
5545
-
`chmodPromise`,
5546
5546
-
`fchownPromise`,
5547
5547
-
`chownPromise`,
5548
5548
-
`closePromise`,
5549
5549
-
`copyFilePromise`,
5550
5550
-
`linkPromise`,
5551
5551
-
`fstatPromise`,
5552
5552
-
`lstatPromise`,
5553
5553
-
`lutimesPromise`,
5554
5554
-
`mkdirPromise`,
5555
5555
-
`openPromise`,
5556
5556
-
`opendirPromise`,
5557
5557
-
`readdirPromise`,
5558
5558
-
`realpathPromise`,
5559
5559
-
`readFilePromise`,
5560
5560
-
`readdirPromise`,
5561
5561
-
`readlinkPromise`,
5562
5562
-
`renamePromise`,
5563
5563
-
`rmdirPromise`,
5564
5564
-
`statPromise`,
5565
5565
-
`symlinkPromise`,
5566
5566
-
`truncatePromise`,
5567
5567
-
`ftruncatePromise`,
5568
5568
-
`unlinkPromise`,
5569
5569
-
`utimesPromise`,
5570
5570
-
`writeFilePromise`,
5571
5571
-
`writeSync`
5572
5572
-
]);
5573
5573
-
function patchFs(patchedFs, fakeFs) {
5574
5574
-
fakeFs = new NodePathFS(fakeFs);
5575
5575
-
const setupFn = (target, name, replacement) => {
5576
5576
-
const orig = target[name];
5577
5577
-
target[name] = replacement;
5578
5578
-
if (typeof (orig == null ? void 0 : orig[nodeUtils.promisify.custom]) !== `undefined`) {
5579
5579
-
replacement[nodeUtils.promisify.custom] = orig[nodeUtils.promisify.custom];
5580
5580
-
}
5581
5581
-
};
5582
5582
-
{
5583
5583
-
setupFn(patchedFs, `exists`, (p, ...args) => {
5584
5584
-
const hasCallback = typeof args[args.length - 1] === `function`;
5585
5585
-
const callback = hasCallback ? args.pop() : () => {
5586
5586
-
};
5587
5587
-
process.nextTick(() => {
5588
5588
-
fakeFs.existsPromise(p).then((exists) => {
5589
5589
-
callback(exists);
5590
5590
-
}, () => {
5591
5591
-
callback(false);
5592
5592
-
});
5593
5593
-
});
5594
5594
-
});
5595
5595
-
setupFn(patchedFs, `read`, (...args) => {
5596
5596
-
let [fd, buffer, offset, length, position, callback] = args;
5597
5597
-
if (args.length <= 3) {
5598
5598
-
let options = {};
5599
5599
-
if (args.length < 3) {
5600
5600
-
callback = args[1];
5601
5601
-
} else {
5602
5602
-
options = args[1];
5603
5603
-
callback = args[2];
5604
5604
-
}
5605
5605
-
({
5606
5606
-
buffer = Buffer.alloc(16384),
5607
5607
-
offset = 0,
5608
5608
-
length = buffer.byteLength,
5609
5609
-
position
5610
5610
-
} = options);
5611
5611
-
}
5612
5612
-
if (offset == null)
5613
5613
-
offset = 0;
5614
5614
-
length |= 0;
5615
5615
-
if (length === 0) {
5616
5616
-
process.nextTick(() => {
5617
5617
-
callback(null, 0, buffer);
5618
5618
-
});
5619
5619
-
return;
5620
5620
-
}
5621
5621
-
if (position == null)
5622
5622
-
position = -1;
5623
5623
-
process.nextTick(() => {
5624
5624
-
fakeFs.readPromise(fd, buffer, offset, length, position).then((bytesRead) => {
5625
5625
-
callback(null, bytesRead, buffer);
5626
5626
-
}, (error) => {
5627
5627
-
callback(error, 0, buffer);
5628
5628
-
});
5629
5629
-
});
5630
5630
-
});
5631
5631
-
for (const fnName of ASYNC_IMPLEMENTATIONS) {
5632
5632
-
const origName = fnName.replace(/Promise$/, ``);
5633
5633
-
if (typeof patchedFs[origName] === `undefined`)
5634
5634
-
continue;
5635
5635
-
const fakeImpl = fakeFs[fnName];
5636
5636
-
if (typeof fakeImpl === `undefined`)
5637
5637
-
continue;
5638
5638
-
const wrapper = (...args) => {
5639
5639
-
const hasCallback = typeof args[args.length - 1] === `function`;
5640
5640
-
const callback = hasCallback ? args.pop() : () => {
5641
5641
-
};
5642
5642
-
process.nextTick(() => {
5643
5643
-
fakeImpl.apply(fakeFs, args).then((result) => {
5644
5644
-
callback(null, result);
5645
5645
-
}, (error) => {
5646
5646
-
callback(error);
5647
5647
-
});
5648
5648
-
});
5649
5649
-
};
5650
5650
-
setupFn(patchedFs, origName, wrapper);
5651
5651
-
}
5652
5652
-
patchedFs.realpath.native = patchedFs.realpath;
5653
5653
-
}
5654
5654
-
{
5655
5655
-
setupFn(patchedFs, `existsSync`, (p) => {
5656
5656
-
try {
5657
5657
-
return fakeFs.existsSync(p);
5658
5658
-
} catch (error) {
5659
5659
-
return false;
5660
5660
-
}
5661
5661
-
});
5662
5662
-
setupFn(patchedFs, `readSync`, (...args) => {
5663
5663
-
let [fd, buffer, offset, length, position] = args;
5664
5664
-
if (args.length <= 3) {
5665
5665
-
const options = args[2] || {};
5666
5666
-
({ offset = 0, length = buffer.byteLength, position } = options);
5667
5667
-
}
5668
5668
-
if (offset == null)
5669
5669
-
offset = 0;
5670
5670
-
length |= 0;
5671
5671
-
if (length === 0)
5672
5672
-
return 0;
5673
5673
-
if (position == null)
5674
5674
-
position = -1;
5675
5675
-
return fakeFs.readSync(fd, buffer, offset, length, position);
5676
5676
-
});
5677
5677
-
for (const fnName of SYNC_IMPLEMENTATIONS) {
5678
5678
-
const origName = fnName;
5679
5679
-
if (typeof patchedFs[origName] === `undefined`)
5680
5680
-
continue;
5681
5681
-
const fakeImpl = fakeFs[fnName];
5682
5682
-
if (typeof fakeImpl === `undefined`)
5683
5683
-
continue;
5684
5684
-
setupFn(patchedFs, origName, fakeImpl.bind(fakeFs));
5685
5685
-
}
5686
5686
-
patchedFs.realpathSync.native = patchedFs.realpathSync;
5687
5687
-
}
5688
5688
-
{
5689
5689
-
const origEmitWarning = process.emitWarning;
5690
5690
-
process.emitWarning = () => {
5691
5691
-
};
5692
5692
-
let patchedFsPromises;
5693
5693
-
try {
5694
5694
-
patchedFsPromises = patchedFs.promises;
5695
5695
-
} finally {
5696
5696
-
process.emitWarning = origEmitWarning;
5697
5697
-
}
5698
5698
-
if (typeof patchedFsPromises !== `undefined`) {
5699
5699
-
for (const fnName of ASYNC_IMPLEMENTATIONS) {
5700
5700
-
const origName = fnName.replace(/Promise$/, ``);
5701
5701
-
if (typeof patchedFsPromises[origName] === `undefined`)
5702
5702
-
continue;
5703
5703
-
const fakeImpl = fakeFs[fnName];
5704
5704
-
if (typeof fakeImpl === `undefined`)
5705
5705
-
continue;
5706
5706
-
if (fnName === `open`)
5707
5707
-
continue;
5708
5708
-
setupFn(patchedFsPromises, origName, (pathLike, ...args) => {
5709
5709
-
if (pathLike instanceof FileHandle) {
5710
5710
-
return pathLike[origName].apply(pathLike, args);
5711
5711
-
} else {
5712
5712
-
return fakeImpl.call(fakeFs, pathLike, ...args);
5713
5713
-
}
5714
5714
-
});
5715
5715
-
}
5716
5716
-
setupFn(patchedFsPromises, `open`, async (...args) => {
5717
5717
-
const fd = await fakeFs.openPromise(...args);
5718
5718
-
return new FileHandle(fd, fakeFs);
5719
5719
-
});
5720
5720
-
}
5721
5721
-
}
5722
5722
-
{
5723
5723
-
patchedFs.read[nodeUtils.promisify.custom] = async (fd, buffer, ...args) => {
5724
5724
-
const res = fakeFs.readPromise(fd, buffer, ...args);
5725
5725
-
return { bytesRead: await res, buffer };
5726
5726
-
};
5727
5727
-
patchedFs.write[nodeUtils.promisify.custom] = async (fd, buffer, ...args) => {
5728
5728
-
const res = fakeFs.writePromise(fd, buffer, ...args);
5729
5729
-
return { bytesWritten: await res, buffer };
5730
5730
-
};
5731
5731
-
}
5732
5732
-
}
5733
5733
-
5734
5734
-
var libzipSync = {exports: {}};
5735
5735
-
5736
5736
-
(function (module, exports) {
5737
5737
-
var frozenFs = Object.assign({}, fs__default.default);
5738
5738
-
var createModule = function() {
5739
5739
-
var _scriptDir = void 0;
5740
5740
-
if (typeof __filename !== "undefined")
5741
5741
-
_scriptDir = _scriptDir || __filename;
5742
5742
-
return function(createModule2) {
5743
5743
-
createModule2 = createModule2 || {};
5744
5744
-
var Module = typeof createModule2 !== "undefined" ? createModule2 : {};
5745
5745
-
var readyPromiseResolve, readyPromiseReject;
5746
5746
-
Module["ready"] = new Promise(function(resolve, reject) {
5747
5747
-
readyPromiseResolve = resolve;
5748
5748
-
readyPromiseReject = reject;
5749
5749
-
});
5750
5750
-
var moduleOverrides = {};
5751
5751
-
var key;
5752
5752
-
for (key in Module) {
5753
5753
-
if (Module.hasOwnProperty(key)) {
5754
5754
-
moduleOverrides[key] = Module[key];
5755
5755
-
}
5756
5756
-
}
5757
5757
-
var scriptDirectory = "";
5758
5758
-
function locateFile(path) {
5759
5759
-
if (Module["locateFile"]) {
5760
5760
-
return Module["locateFile"](path, scriptDirectory);
5761
5761
-
}
5762
5762
-
return scriptDirectory + path;
5763
5763
-
}
5764
5764
-
var read_, readBinary;
5765
5765
-
var nodeFS;
5766
5766
-
var nodePath;
5767
5767
-
{
5768
5768
-
{
5769
5769
-
scriptDirectory = __dirname + "/";
5770
5770
-
}
5771
5771
-
read_ = function shell_read(filename, binary) {
5772
5772
-
var ret = tryParseAsDataURI(filename);
5773
5773
-
if (ret) {
5774
5774
-
return binary ? ret : ret.toString();
5775
5775
-
}
5776
5776
-
if (!nodeFS)
5777
5777
-
nodeFS = frozenFs;
5778
5778
-
if (!nodePath)
5779
5779
-
nodePath = path__default.default;
5780
5780
-
filename = nodePath["normalize"](filename);
5781
5781
-
return nodeFS["readFileSync"](filename, binary ? null : "utf8");
5782
5782
-
};
5783
5783
-
readBinary = function readBinary2(filename) {
5784
5784
-
var ret = read_(filename, true);
5785
5785
-
if (!ret.buffer) {
5786
5786
-
ret = new Uint8Array(ret);
5787
5787
-
}
5788
5788
-
assert(ret.buffer);
5789
5789
-
return ret;
5790
5790
-
};
5791
5791
-
if (process["argv"].length > 1) {
5792
5792
-
process["argv"][1].replace(/\\/g, "/");
5793
5793
-
}
5794
5794
-
process["argv"].slice(2);
5795
5795
-
Module["inspect"] = function() {
5796
5796
-
return "[Emscripten Module object]";
5797
5797
-
};
5798
5798
-
}
5799
5799
-
var out = Module["print"] || console.log.bind(console);
5800
5800
-
var err = Module["printErr"] || console.warn.bind(console);
5801
5801
-
for (key in moduleOverrides) {
5802
5802
-
if (moduleOverrides.hasOwnProperty(key)) {
5803
5803
-
Module[key] = moduleOverrides[key];
5804
5804
-
}
5805
5805
-
}
5806
5806
-
moduleOverrides = null;
5807
5807
-
if (Module["arguments"])
5808
5808
-
;
5809
5809
-
if (Module["thisProgram"])
5810
5810
-
;
5811
5811
-
if (Module["quit"])
5812
5812
-
;
5813
5813
-
var STACK_ALIGN = 16;
5814
5814
-
function alignMemory(size, factor) {
5815
5815
-
if (!factor)
5816
5816
-
factor = STACK_ALIGN;
5817
5817
-
return Math.ceil(size / factor) * factor;
5818
5818
-
}
5819
5819
-
var wasmBinary;
5820
5820
-
if (Module["wasmBinary"])
5821
5821
-
wasmBinary = Module["wasmBinary"];
5822
5822
-
Module["noExitRuntime"] || true;
5823
5823
-
if (typeof WebAssembly !== "object") {
5824
5824
-
abort("no native wasm support detected");
5825
5825
-
}
5826
5826
-
function getValue(ptr, type, noSafe) {
5827
5827
-
type = type || "i8";
5828
5828
-
if (type.charAt(type.length - 1) === "*")
5829
5829
-
type = "i32";
5830
5830
-
switch (type) {
5831
5831
-
case "i1":
5832
5832
-
return HEAP8[ptr >> 0];
5833
5833
-
case "i8":
5834
5834
-
return HEAP8[ptr >> 0];
5835
5835
-
case "i16":
5836
5836
-
return HEAP16[ptr >> 1];
5837
5837
-
case "i32":
5838
5838
-
return HEAP32[ptr >> 2];
5839
5839
-
case "i64":
5840
5840
-
return HEAP32[ptr >> 2];
5841
5841
-
case "float":
5842
5842
-
return HEAPF32[ptr >> 2];
5843
5843
-
case "double":
5844
5844
-
return HEAPF64[ptr >> 3];
5845
5845
-
default:
5846
5846
-
abort("invalid type for getValue: " + type);
5847
5847
-
}
5848
5848
-
return null;
5849
5849
-
}
5850
5850
-
var wasmMemory;
5851
5851
-
var ABORT = false;
5852
5852
-
function assert(condition, text) {
5853
5853
-
if (!condition) {
5854
5854
-
abort("Assertion failed: " + text);
5855
5855
-
}
5856
5856
-
}
5857
5857
-
function getCFunc(ident) {
5858
5858
-
var func = Module["_" + ident];
5859
5859
-
assert(
5860
5860
-
func,
5861
5861
-
"Cannot call unknown function " + ident + ", make sure it is exported"
5862
5862
-
);
5863
5863
-
return func;
5864
5864
-
}
5865
5865
-
function ccall(ident, returnType, argTypes, args, opts) {
5866
5866
-
var toC = {
5867
5867
-
string: function(str) {
5868
5868
-
var ret2 = 0;
5869
5869
-
if (str !== null && str !== void 0 && str !== 0) {
5870
5870
-
var len = (str.length << 2) + 1;
5871
5871
-
ret2 = stackAlloc(len);
5872
5872
-
stringToUTF8(str, ret2, len);
5873
5873
-
}
5874
5874
-
return ret2;
5875
5875
-
},
5876
5876
-
array: function(arr) {
5877
5877
-
var ret2 = stackAlloc(arr.length);
5878
5878
-
writeArrayToMemory(arr, ret2);
5879
5879
-
return ret2;
5880
5880
-
}
5881
5881
-
};
5882
5882
-
function convertReturnValue(ret2) {
5883
5883
-
if (returnType === "string")
5884
5884
-
return UTF8ToString(ret2);
5885
5885
-
if (returnType === "boolean")
5886
5886
-
return Boolean(ret2);
5887
5887
-
return ret2;
5888
5888
-
}
5889
5889
-
var func = getCFunc(ident);
5890
5890
-
var cArgs = [];
5891
5891
-
var stack = 0;
5892
5892
-
if (args) {
5893
5893
-
for (var i = 0; i < args.length; i++) {
5894
5894
-
var converter = toC[argTypes[i]];
5895
5895
-
if (converter) {
5896
5896
-
if (stack === 0)
5897
5897
-
stack = stackSave();
5898
5898
-
cArgs[i] = converter(args[i]);
5899
5899
-
} else {
5900
5900
-
cArgs[i] = args[i];
5901
5901
-
}
5902
5902
-
}
5903
5903
-
}
5904
5904
-
var ret = func.apply(null, cArgs);
5905
5905
-
ret = convertReturnValue(ret);
5906
5906
-
if (stack !== 0)
5907
5907
-
stackRestore(stack);
5908
5908
-
return ret;
5909
5909
-
}
5910
5910
-
function cwrap(ident, returnType, argTypes, opts) {
5911
5911
-
argTypes = argTypes || [];
5912
5912
-
var numericArgs = argTypes.every(function(type) {
5913
5913
-
return type === "number";
5914
5914
-
});
5915
5915
-
var numericRet = returnType !== "string";
5916
5916
-
if (numericRet && numericArgs && !opts) {
5917
5917
-
return getCFunc(ident);
5918
5918
-
}
5919
5919
-
return function() {
5920
5920
-
return ccall(ident, returnType, argTypes, arguments);
5921
5921
-
};
5922
5922
-
}
5923
5923
-
var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : void 0;
5924
5924
-
function UTF8ArrayToString(heap, idx, maxBytesToRead) {
5925
5925
-
var endIdx = idx + maxBytesToRead;
5926
5926
-
var endPtr = idx;
5927
5927
-
while (heap[endPtr] && !(endPtr >= endIdx))
5928
5928
-
++endPtr;
5929
5929
-
if (endPtr - idx > 16 && heap.subarray && UTF8Decoder) {
5930
5930
-
return UTF8Decoder.decode(heap.subarray(idx, endPtr));
5931
5931
-
} else {
5932
5932
-
var str = "";
5933
5933
-
while (idx < endPtr) {
5934
5934
-
var u0 = heap[idx++];
5935
5935
-
if (!(u0 & 128)) {
5936
5936
-
str += String.fromCharCode(u0);
5937
5937
-
continue;
5938
5938
-
}
5939
5939
-
var u1 = heap[idx++] & 63;
5940
5940
-
if ((u0 & 224) == 192) {
5941
5941
-
str += String.fromCharCode((u0 & 31) << 6 | u1);
5942
5942
-
continue;
5943
5943
-
}
5944
5944
-
var u2 = heap[idx++] & 63;
5945
5945
-
if ((u0 & 240) == 224) {
5946
5946
-
u0 = (u0 & 15) << 12 | u1 << 6 | u2;
5947
5947
-
} else {
5948
5948
-
u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heap[idx++] & 63;
5949
5949
-
}
5950
5950
-
if (u0 < 65536) {
5951
5951
-
str += String.fromCharCode(u0);
5952
5952
-
} else {
5953
5953
-
var ch = u0 - 65536;
5954
5954
-
str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
5955
5955
-
}
5956
5956
-
}
5957
5957
-
}
5958
5958
-
return str;
5959
5959
-
}
5960
5960
-
function UTF8ToString(ptr, maxBytesToRead) {
5961
5961
-
return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";
5962
5962
-
}
5963
5963
-
function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {
5964
5964
-
if (!(maxBytesToWrite > 0))
5965
5965
-
return 0;
5966
5966
-
var startIdx = outIdx;
5967
5967
-
var endIdx = outIdx + maxBytesToWrite - 1;
5968
5968
-
for (var i = 0; i < str.length; ++i) {
5969
5969
-
var u = str.charCodeAt(i);
5970
5970
-
if (u >= 55296 && u <= 57343) {
5971
5971
-
var u1 = str.charCodeAt(++i);
5972
5972
-
u = 65536 + ((u & 1023) << 10) | u1 & 1023;
5973
5973
-
}
5974
5974
-
if (u <= 127) {
5975
5975
-
if (outIdx >= endIdx)
5976
5976
-
break;
5977
5977
-
heap[outIdx++] = u;
5978
5978
-
} else if (u <= 2047) {
5979
5979
-
if (outIdx + 1 >= endIdx)
5980
5980
-
break;
5981
5981
-
heap[outIdx++] = 192 | u >> 6;
5982
5982
-
heap[outIdx++] = 128 | u & 63;
5983
5983
-
} else if (u <= 65535) {
5984
5984
-
if (outIdx + 2 >= endIdx)
5985
5985
-
break;
5986
5986
-
heap[outIdx++] = 224 | u >> 12;
5987
5987
-
heap[outIdx++] = 128 | u >> 6 & 63;
5988
5988
-
heap[outIdx++] = 128 | u & 63;
5989
5989
-
} else {
5990
5990
-
if (outIdx + 3 >= endIdx)
5991
5991
-
break;
5992
5992
-
heap[outIdx++] = 240 | u >> 18;
5993
5993
-
heap[outIdx++] = 128 | u >> 12 & 63;
5994
5994
-
heap[outIdx++] = 128 | u >> 6 & 63;
5995
5995
-
heap[outIdx++] = 128 | u & 63;
5996
5996
-
}
5997
5997
-
}
5998
5998
-
heap[outIdx] = 0;
5999
5999
-
return outIdx - startIdx;
6000
6000
-
}
6001
6001
-
function stringToUTF8(str, outPtr, maxBytesToWrite) {
6002
6002
-
return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
6003
6003
-
}
6004
6004
-
function lengthBytesUTF8(str) {
6005
6005
-
var len = 0;
6006
6006
-
for (var i = 0; i < str.length; ++i) {
6007
6007
-
var u = str.charCodeAt(i);
6008
6008
-
if (u >= 55296 && u <= 57343)
6009
6009
-
u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;
6010
6010
-
if (u <= 127)
6011
6011
-
++len;
6012
6012
-
else if (u <= 2047)
6013
6013
-
len += 2;
6014
6014
-
else if (u <= 65535)
6015
6015
-
len += 3;
6016
6016
-
else
6017
6017
-
len += 4;
6018
6018
-
}
6019
6019
-
return len;
6020
6020
-
}
6021
6021
-
function allocateUTF8(str) {
6022
6022
-
var size = lengthBytesUTF8(str) + 1;
6023
6023
-
var ret = _malloc(size);
6024
6024
-
if (ret)
6025
6025
-
stringToUTF8Array(str, HEAP8, ret, size);
6026
6026
-
return ret;
6027
6027
-
}
6028
6028
-
function writeArrayToMemory(array, buffer2) {
6029
6029
-
HEAP8.set(array, buffer2);
6030
6030
-
}
6031
6031
-
function alignUp(x, multiple) {
6032
6032
-
if (x % multiple > 0) {
6033
6033
-
x += multiple - x % multiple;
6034
6034
-
}
6035
6035
-
return x;
6036
6036
-
}
6037
6037
-
var buffer, HEAP8, HEAPU8, HEAP16, HEAP32, HEAPF32, HEAPF64;
6038
6038
-
function updateGlobalBufferAndViews(buf) {
6039
6039
-
buffer = buf;
6040
6040
-
Module["HEAP8"] = HEAP8 = new Int8Array(buf);
6041
6041
-
Module["HEAP16"] = HEAP16 = new Int16Array(buf);
6042
6042
-
Module["HEAP32"] = HEAP32 = new Int32Array(buf);
6043
6043
-
Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf);
6044
6044
-
Module["HEAPU16"] = new Uint16Array(buf);
6045
6045
-
Module["HEAPU32"] = new Uint32Array(buf);
6046
6046
-
Module["HEAPF32"] = HEAPF32 = new Float32Array(buf);
6047
6047
-
Module["HEAPF64"] = HEAPF64 = new Float64Array(buf);
6048
6048
-
}
6049
6049
-
Module["INITIAL_MEMORY"] || 16777216;
6050
6050
-
var wasmTable;
6051
6051
-
var __ATPRERUN__ = [];
6052
6052
-
var __ATINIT__ = [];
6053
6053
-
var __ATPOSTRUN__ = [];
6054
6054
-
function preRun() {
6055
6055
-
if (Module["preRun"]) {
6056
6056
-
if (typeof Module["preRun"] == "function")
6057
6057
-
Module["preRun"] = [Module["preRun"]];
6058
6058
-
while (Module["preRun"].length) {
6059
6059
-
addOnPreRun(Module["preRun"].shift());
6060
6060
-
}
6061
6061
-
}
6062
6062
-
callRuntimeCallbacks(__ATPRERUN__);
6063
6063
-
}
6064
6064
-
function initRuntime() {
6065
6065
-
if (!Module["noFSInit"] && !FS.init.initialized)
6066
6066
-
FS.init();
6067
6067
-
callRuntimeCallbacks(__ATINIT__);
6068
6068
-
}
6069
6069
-
function postRun() {
6070
6070
-
if (Module["postRun"]) {
6071
6071
-
if (typeof Module["postRun"] == "function")
6072
6072
-
Module["postRun"] = [Module["postRun"]];
6073
6073
-
while (Module["postRun"].length) {
6074
6074
-
addOnPostRun(Module["postRun"].shift());
6075
6075
-
}
6076
6076
-
}
6077
6077
-
callRuntimeCallbacks(__ATPOSTRUN__);
6078
6078
-
}
6079
6079
-
function addOnPreRun(cb) {
6080
6080
-
__ATPRERUN__.unshift(cb);
6081
6081
-
}
6082
6082
-
function addOnInit(cb) {
6083
6083
-
__ATINIT__.unshift(cb);
6084
6084
-
}
6085
6085
-
function addOnPostRun(cb) {
6086
6086
-
__ATPOSTRUN__.unshift(cb);
6087
6087
-
}
6088
6088
-
var runDependencies = 0;
6089
6089
-
var dependenciesFulfilled = null;
6090
6090
-
function addRunDependency(id) {
6091
6091
-
runDependencies++;
6092
6092
-
if (Module["monitorRunDependencies"]) {
6093
6093
-
Module["monitorRunDependencies"](runDependencies);
6094
6094
-
}
6095
6095
-
}
6096
6096
-
function removeRunDependency(id) {
6097
6097
-
runDependencies--;
6098
6098
-
if (Module["monitorRunDependencies"]) {
6099
6099
-
Module["monitorRunDependencies"](runDependencies);
6100
6100
-
}
6101
6101
-
if (runDependencies == 0) {
6102
6102
-
if (dependenciesFulfilled) {
6103
6103
-
var callback = dependenciesFulfilled;
6104
6104
-
dependenciesFulfilled = null;
6105
6105
-
callback();
6106
6106
-
}
6107
6107
-
}
6108
6108
-
}
6109
6109
-
Module["preloadedImages"] = {};
6110
6110
-
Module["preloadedAudios"] = {};
6111
6111
-
function abort(what) {
6112
6112
-
if (Module["onAbort"]) {
6113
6113
-
Module["onAbort"](what);
6114
6114
-
}
6115
6115
-
what += "";
6116
6116
-
err(what);
6117
6117
-
ABORT = true;
6118
6118
-
what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info.";
6119
6119
-
var e = new WebAssembly.RuntimeError(what);
6120
6120
-
readyPromiseReject(e);
6121
6121
-
throw e;
6122
6122
-
}
6123
6123
-
var dataURIPrefix = "data:application/octet-stream;base64,";
6124
6124
-
function isDataURI(filename) {
6125
6125
-
return filename.startsWith(dataURIPrefix);
6126
6126
-
}
6127
6127
-
var wasmBinaryFile = "data:application/octet-stream;base64,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ACgCFC0AAiAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQADIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAQgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ABSAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAGIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAcgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ACCAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAJIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAogACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ACyAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAMIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAA0gACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ADiAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAPIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhRBEGo2AhQgACAAKAIIQQFrIgE2AgggAQ0ACyAAIAAoAhhB8f8DcDYCGCAAIAAoAgxB8f8DcDYCDAwBCwsgACgCEARAA0AgACgCEEEQTwRAIAAgACgCEEEQazYCECAAIAAoAhQtAAAgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0AASAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQACIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAMgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ABCAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAFIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAYgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0AByAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAIIAAoAhhqNgIYIAAgACgCGCAAKAIMajYC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NgIYIAEoAgxCADcDICABKAIMQgA3AyggASgCDEEANgIwIAEoAgxBADYCNCABKAIMQQA2AjggASgCDEEANgI8IAEoAgxBADsBQCABKAIMQYCA2I14NgJEIAEoAgxCADcDSCABKAIMQQA7AVAgASgCDEEAOwFSIAEoAgxBADYCVAvSEwEBfyMAQbABayIDJAAgAyAANgKoASADIAE2AqQBIAMgAjYCoAEgA0EANgKQASADIAMoAqQBKAIwQQAQOjYClAEgAyADKAKkASgCOEEAEDo2ApgBAkACQAJAAkAgAygClAFBAkYEQCADKAKYAUEBRg0BCyADKAKUAUEBRgRAIAMoApgBQQJGDQELIAMoApQBQQJHDQEgAygCmAFBAkcNAQsgAygCpAEiACAALwEMQYAQcjsBDAwBCyADKAKkASIAIAAvAQxB/+8DcTsBDCADKAKUAUECRgRAIANB9eABIAMoAqQBKAIwIAMoAqgBQQhqEI4BNgKQASADKAKQAUUEQCADQX82AqwBDAMLCwJAIAMoAqABQYACcQ0AIAMoApgBQQJHDQAgA0H1xgEgAygCpAEoAjggAygCqAFBCGoQjgE2AkggAygCSEUEQCADKAKQARAjIANBfzYCrAEMAwsgAygCSCADKAKQATYCACADIAMoAkg2ApABCwsCQCADKAKkAS8BUkUEQCADKAKkASIAIAAvAQxB/v8DcTsBDAwBCyADKAKkASIAIAAvAQxBAXI7AQwLIAMgAygCpAEgAygCoAEQZUEBcToAhgEgAyADKAKgAUGACnFBgApHBH8gAy0AhgEFQQELQQFxOgCHASADAn9BASADKAKkAS8BUkGBAkYNABpBASADKAKkAS8BUkGCAkYNABogAygCpAEvAVJBgwJGC0EBcToAhQEgAy0AhwFBAXEEQCADIANBIGpCHBApNgIcIAMoAhxFBEAgAygCqAFBCGpBDkEAEBQgAygCkAEQIyADQX82AqwBDAILAkAgAygCoAFBgAJxBEACQCADKAKgAUGACHENACADKAKkASkDIEL/////D1YNACADKAKkASkDKEL/////D1gNAgsgAygCHCADKAKkASkDKBAtIAMoAhwgAygCpAEpAyAQLQwBCwJAAkAgAygCoAFBgAhxDQAgAygCpAEpAyBC/////w9WDQAgAygCpAEpAyhC/////w9WDQAgAygCpAEpA0hC/////w9YDQELIAMoAqQBKQMoQv////8PWgRAIAMoAhwgAygCpAEpAygQLQsgAygCpAEpAyBC/////w9aBEAgAygCHCADKAKkASkDIBAtCyADKAKkASkDSEL/////D1oEQCADKAIcIAMoAqQBKQNIEC0LCwsCfyMAQRBrIgAgAygCHDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAIcEBYgAygCkAEQIyADQX82AqwBDAILIANBAQJ/IwBBEGsiACADKAIcNgIMAn4gACgCDC0AAEEBcQRAIAAoAgwpAxAMAQtCAAunQf//A3ELIANBIGpBgAYQVTYCjAEgAygCHBAWIAMoAowBIAMoApABNgIAIAMgAygCjAE2ApABCyADLQCFAUEBcQRAIAMgA0EVakIHECk2AhAgAygCEEUEQCADKAKoAUEIakEOQQAQFCADKAKQARAjIANBfzYCrAEMAgsgAygCEEECEB8gAygCEEG9EkECEEEgAygCECADKAKkAS8BUkH/AXEQlgEgAygCECADKAKkASgCEEH//wNxEB8CfyMAQRBrIgAgAygCEDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAIQEBYgAygCkAEQIyADQX82AqwBDAILIANBgbICQQcgA0EVakGABhBVNgIMIAMoAhAQFiADKAIMIAMoApABNgIAIAMgAygCDDYCkAELIAMgA0HQAGpCLhApIgA2AkwgAEUEQCADKAKoAUEIakEOQQAQFCADKAKQARAjIANBfzYCrAEMAQsgAygCTEHxEkH2EiADKAKgAUGAAnEbQQQQQSADKAKgAUGAAnFFBEAgAygCTCADLQCGAUEBcQR/QS0FIAMoAqQBLwEIC0H//wNxEB8LIAMoAkwgAy0AhgFBAXEEf0EtBSADKAKkAS8BCgtB//8DcRAfIAMoAkwgAygCpAEvAQwQHwJAIAMtAIUBQQFxBEAgAygCTEHjABAfDAELIAMoAkwgAygCpAEoAhBB//8DcRAfCyADKAKkASgCFCADQZ4BaiADQZwBahCNASADKAJMIAMvAZ4BEB8gAygCTCADLwGcARAfAkACQCADLQCFAUEBcUUNACADKAKkASkDKEIUWg0AIAMoAkxBABAhDAELIAMoAkwgAygCpAEoAhgQIQsCQAJAIAMoAqABQYACcUGAAkcNACADKAKkASkDIEL/////D1QEQCADKAKkASkDKEL/////D1QNAQsgAygCTEF/ECEgAygCTEF/ECEMAQsCQCADKAKkASkDIEL/////D1QEQCADKAJMIAMoAqQBKQMgpxAhDAELIAMoAkxBfxAhCwJAIAMoAqQBKQMoQv////8PVARAIAMoAkwgAygCpAEpAyinECEMAQsgAygCTEF/ECELCyADKAJMIAMoAqQBKAIwEFFB//8DcRAfIAMgAygCpAEoAjQgAygCoAEQkgFB//8DcSADKAKQAUGABhCSAUH//wNxajYCiAEgAygCTCADKAKIAUH//wNxEB8gAygCoAFBgAJxRQRAIAMoAkwgAygCpAEoAjgQUUH//wNxEB8gAygCTCADKAKkASgCPEH//wNxEB8gAygCTCADKAKkAS8BQBAfIAMoAkwgAygCpAEoAkQQIQJAIAMoAqQBKQNIQv////8PVARAIAMoAkwgAygCpAEpA0inECEMAQsgAygCTEF/ECELCwJ/IwBBEGsiACADKAJMNgIMIAAoAgwtAABBAXFFCwRAIAMoAqgBQQhqQRRBABAUIAMoAkwQFiADKAKQARAjIANBfzYCrAEMAQsgAygCqAEgA0HQAGoCfiMAQRBrIgAgAygCTDYCDAJ+IAAoAgwtAABBAXEEQCAAKAIMKQMQDAELQgALCxA2QQBIBEAgAygCTBAWIAMoApABECMgA0F/NgKsAQwBCyADKAJMEBYgAygCpAEoAjAEQCADKAKoASADKAKkASgCMBCFAUEASARAIAMoApABECMgA0F/NgKsAQwCCwsgAygCkAEEQCADKAKoASADKAKQAUGABhCRAUEASARAIAMoApABECMgA0F/NgKsAQwCCwsgAygCkAEQIyADKAKkASgCNARAIAMoAqgBIAMoAqQBKAI0IAMoAqABEJEBQQBIBEAgA0F/NgKsAQwCCwsgAygCoAFBgAJxRQRAIAMoAqQBKAI4BEAgAygCqAEgAygCpAEoAjgQhQFBAEgEQCADQX82AqwBDAMLCwsgAyADLQCHAUEBcTYCrAELIAMoAqwBIQAgA0GwAWokACAAC+ACAQF/IwBBIGsiBCQAIAQgADsBGiAEIAE7ARggBCACNgIUIAQgAzYCECAEQRAQGCIANgIMAkAg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AAAgAygCHEHcFmogAygCDEECdGooAgAgAygCHEHYKGpqLQAASg0ADAELIAMoAhxB3BZqIAMoAhRBAnRqIAMoAhxB3BZqIAMoAgxBAnRqKAIANgIAIAMgAygCDDYCFCADIAMoAgxBAXQ2AgwMAQsLIAMoAhxB3BZqIAMoAhRBAnRqIAMoAhA2AgAL1xMBA38jAEEwayICJAAgAiAANgIsIAIgATYCKCACIAIoAigoAgA2AiQgAiACKAIoKAIIKAIANgIgIAIgAigCKCgCCCgCDDYCHCACQX82AhAgAigCLEEANgLQKCACKAIsQb0ENgLUKCACQQA2AhgDQCACKAIYIAIoAhxIBEACQCACKAIkIAIoAhhBAnRqLwEABEAgAiACKAIYIgE2AhAgAigCLEHcFmohAyACKAIsIgQoAtAoQQFqIQAgBCAANgLQKCAAQQJ0IANqIAE2AgAgAigCGCACKAIsQdgoampBADoAAAwBCyACKAIkIAIoAhhBAnRqQQA7AQILIAIgAigCGEEBajYCGAwBCwsDQCACKAIsKALQKEECSARAAkAgAigCEEECSARAIAIgAigCEEEBaiIANgIQDAELQQAhAAsgAigCLEHcFmohAyACKAIsIgQoAtAoQQFqIQEgBCABNgLQKCABQQJ0IANqIAA2AgAgAiAANgIMIAIoAiQgAigCDEECdGpBATsBACACKAIMIAIoAixB2ChqakEAOgAAIAIoAiwiACAAKAKoLUEBazYCqC0gAigCIARAIAIoAiwiACAAKAKsLSACKAIgIAIoAgxBAnRqLwECazYCrC0LDAELCyACKAIoIAIoAhA2AgQgAiACKAIsKALQKEECbTYCGANAIAIoAhhBAU4EQCACKAIsIAIoAiQgAigCGBB5IAIgAigCGEEBazYCGAwBCwsgAiACKAIcNgIMA0AgAiACKAIsKALgFjYCGCACKAIsQdwWaiEBIAIoAiwiAygC0CghACADIABBAWs2AtAoIAIoAiwgAEECdCABaigCADYC4BYgAigCLCACKAIkQQEQeSACIAIoAiwoAuAWNgIUIAIoAhghASACKAIsQdwWaiEDIAIoAiwiBCgC1ChBAWshACAEIAA2AtQoIABBAnQgA2ogATYCACACKAIUIQEgAigCLEHcFmohAyACKAIsIgQoAtQoQQFrIQAgBCAANgLUKCAA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AQsgAigCCEEANgIAIAIoAghCADcDECACKAIIQgA3AwggAigCCEIANwMgIAIoAghCADcDGCACKAIIQQA2AiggAigCCEEAOgAsIAIoAgggAikDECACKAIMEI8BQQFxRQRAIAIoAggQJSACQQA2AhwMAQsgAiACKAIINgIcCyACKAIcIQEgAkEgaiQAIAEL1gIBAX8jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI2AhAgAyADQQxqQgQQKTYCCAJAIAMoAghFBEAgA0F/NgIcDAELA0AgAygCFARAIAMoAhQoAgQgAygCEHFBgAZxBEAgAygCCEIAECwaIAMoAgggAygCFC8BCBAfIAMoAgggAygCFC8BChAfAn8jAEEQayIAIAMoAgg2AgwgACgCDC0AAEEBcUULBEAgAygCGEEIakEUQQAQFCADKAIIEBYgA0F/NgIcDAQLIAMoAhggA0EMakIEEDZBAEgEQCADKAIIEBYgA0F/NgIcDAQLIAMoAhQvAQoEQCADKAIYIAMoAhQoAgwgAygCFC8BCq0QNkEASARAIAMoAggQFiADQX82AhwMBQsLCyADIAMoAhQoAgA2AhQMAQsLIAMoAggQFiADQQA2AhwLIAMoAhwhACADQSBqJAAgAAtoAQF/IwBBEGsiAiAANgIMIAIgATYCCCACQQA7AQYDQCACKAIMBEAgAigCDCgCBCACKAIIcUGABnEEQCACIAIoAgwvAQogAi8BBkEEamo7AQYLIAIgAigCDCgCADYCDAwBCwsgAi8BBgvwAQEBfyMAQRBrIgEkACABIAA2AgwgASABKAIMNgIIIAFBADYCBANAIAEoAgwEQAJAAkAgASgCDC8BCEH1xgFGDQAgASgCDC8BCEH14AFGDQAgASgCDC8BCEGBsgJGDQAgASgCDC8BCEEBRw0BCyABIAEoAgwoAgA2AgAgASgCCCABKAIMRgRAIAEgASgCADYCCAsgASgCDEEANgIAIAEoAgwQIyABKAIEBEAgASgCBCABKAIANgIACyABIAEoAgA2AgwMAgsgASABKAIMNgIEIAEgASgCDCgCADYCDAwBCwsgASgCCCEAIAFBEGokACAAC7IEAQF/IwBBQGoiBSQAIAUgADYCOCAFIAE7ATYgBSACNgIwIAUgAzYCLCAFIAQ2AiggBSAFKAI4IAUvATatECkiADYC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IAEoAhBB//8DRgRAIAEgASgCDDYCEAsgASgCCEH//wNGBEAgASABKAIENgIICwJAIAEoApQBQQRxRQ0AIAEoAgggASgCBEYEQCABKAIQIAEoAgxGDQELIAEoApABQRVBABAUIAEtABdBAXEEQCABKAKkARAWCyABQQA2AqwBDAELAkAgASgCEEUEQCABKAIIRQ0BCyABKAKQAUEBQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABIAEoAqQBEDE3AyggASABKAKkARAxNwMgIAEpAyggASkDIFIEQCABKAKQAUEBQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABIAEoAqQBEDE3AzAgASABKAKkARAxNwOAAQJ/IwBBEGsiBSABKAKkATYCDCAFKAIMLQAAQQFxRQsEQCABKAKQAUEUQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABLQAXQQFxBEAgASgCpAEQFgsCQCABKQOAAUL///////////8AWARAIAEpA4ABIAEpA4ABIAEpAzB8WA0BCyABKAKQAUEEQRYQFCABQQA2AqwBDAELIAEpA4ABIAEpAzB8IAEpA5gBIAEpAzh8VgRAIAEoApABQRVBABAUIAFBADYCrAEMAQsCQCABKAKUAUEEcUUNACABKQOAASABKQMwfCABKQOYASABKQM4fFENACABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEpAyggASkDMEIugFYEQCABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEgASkDKCABKAKQARCQASIFNgKMASAFRQRAIAFBADYCrAEMAQsgASgCjAFBAToALCABKAKMASABKQMwNwMYIAEoAowBIAEpA4ABNwMgIAEgASgCjAE2AqwBCyABKAKsASEFIAFBsAFqJAAgACAFNgJQDAELIAAoAmQgACkDMBAsGiAAKAJkIQUgACkDWCEJIAAoAmgoAhQhBiAAKAJUIQcjAEHQAGsiASQAIAEgBTYCSCABIAk3A0AgASAGNgI8IAEgBzYCOAJAIAEoAkgQMEIWVARAIAEoAjhBFUEAEBQgAUEANgJMDAELIwBBEGsiBSABKAJINgIMIAECfiAFKAIMLQAAQQFxBEAgBSgCDCkDEAwBC0IACzcDCCABKAJI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ECADQcgAEBgiADYCDAJAIABFBEAgAygCEEEBQbSbASgCABAUIANBADYCHAwBCyADKAIMIAMoAhA2AgAgAygCDCADLQAbQQFxOgAEIAMoAgwgAygCFDYCCAJAIAMoAgwoAghBAU4EQCADKAIMKAIIQQlMDQELIAMoAgxBCTYCCAsgAygCDEEAOgAMIAMoAgxBADYCMCADKAIMQQA2AjQgAygCDEEANgI4IAMgAygCDDYCHAsgAygCHCEAIANBIGokACAACzgBAX8jAEEQayIBIAA2AgwgASgCDEEANgIAIAEoAgxBADYCBCABKAIMQQA2AgggASgCDEEAOgAMC+MIAQF/IwBBQGoiAiAANgI4IAIgATYCNCACIAIoAjgoAnw2AjAgAiACKAI4KAI4IAIoAjgoAmxqNgIsIAIgAigCOCgCeDYCICACIAIoAjgoApABNgIcIAICfyACKAI4KAJsIAIoAjgoAixBhgJrSwRAIAIoAjgoAmwgAigCOCgCLEGGAmtrDAELQQALNgIYIAIgAigCOCgCQDYCFCACIAIoAjgoAjQ2AhAgAiACKAI4KAI4IAIoAjgoAmxqQYICajYCDCACIAIoAiwgAigCIEEBa2otAAA6AAsgAiACKAIsIAIoAiBqLQAAOgAKIAIoAjgoAnggAigCOCgCjAFPBEAgAiACKAIwQQJ2NgIwCyACKAIcIAIoAjgoAnRLBEAgAiACKAI4KAJ0NgIcCwNAAkAgAiACKAI4KAI4IAIoAjRqNgIoAkAgAigCKCACKAIgai0AACACLQAKRw0AIAIoAiggAigCIEEBa2otAAAgAi0AC0cNACACKAIoLQAAIAIoAiwtAABHDQAgAiACKAIoIgBBAWo2AiggAC0AASACKAIsLQABRwRADAELIAIgAigCLEECajYCLCACIAIoAihBAWo2AigDQCACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AigCf0EAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACKAIsIAIoAgxJC0EBcQ0ACyACQYICIAIoAgwgAigCLGtrNgIkIAIgAigCDEGCAms2AiwgAigCJCACKAIgSgRAIAIoAjggAigCNDYCcCACIAIoAiQ2AiAgAigCJCACKAIcTg0CIAIgAigCLCACKAIgQQFrai0AADoACyACIAIoAiwgAigCIGotAAA6AAoLCyACIAIoAhQgAigCNCACKAIQcUEBdGovAQAiATYCNEEAIQAgASACKAIYSwR/IAIgAigCMEEBayIANgIwIABBAEcFQQALQQFxDQELCwJAIAIoAiAgAigCOCgCdE0EQCACIAIoAiA2AjwMAQsgAiACKAI4KAJ0NgI8CyACKAI8C5IQAQF/IwBBMGsiAiQAIAIgADYCKCACIAE2AiQgAgJ/IAIoAigoAiwgAigCKCgCDEEFa0kEQCACKAIoKAIsDAELIAIoAigoAgxBBWsLNgIgIAJBADYCECACIAIoAigoAgAoAgQ2AgwDQAJAIAJB//8DNgIcIAIgAigCKCgCvC1BKmpBA3U2AhQgAigCKCgCACgCECACKAIUSQ0AIAIgAigCKCgCACgCECACKAIUazYCFCACIAIoAigoAmwgAigCKCgCXGs2AhggAigCHCACKAIYIAIoAigoAgAoAgRqSwRAIAIgAigCGCACKAIoKAIAKAIEajYCHAsgAigCHCACKAIUSwRAIAIgAigCFDYCHAsCQCACKAIcIAIoAiBPDQACQCACKAIcRQRAIAIoAiRBBEcNAQsgAigCJEUNACACKAIcIAIoAhggAigCKCgCACgCBGpGDQELDAELQQAhACACIAIoAiRBBEYEfyACKAIcIAIoAhggAigCKCgCACgCBGpGBUEAC0EBcTYCECACKAIoQQBBACACKAIQEF0gAigCKCgCCCACKAIoKAIUQQRraiACKAIcOgAAIAIoAigoAgggAigCKCgCFEEDa2ogAigCHEEIdjoAACACKAIoKAIIIAIoAigoAhRBAmtqIAIoAhxBf3M6AAAgAigCKCgCCCACKAIoKAIUQQFraiACKAIcQX9zQQh2OgAAIAIoAigoAgAQHCACKAIYBEAgAigCGCACKAIcSwRAIAIgAigCHDYCGAsgAigCKCgCACgCDCACKAIoKAI4IAIoAigoAlxqIAIoAhgQGRogAigCKCgCACIAIAIoAhggACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCGGs2AhAgAigCKCgCACIAIAIoAhggACgCFGo2AhQgAigCKCIAIAIoAhggACgCXGo2AlwgAiACKAIcIAIoAhhrNgIcCyACKAIcBEAgAigCKCgCACACKAIoKAIAKAIMIAIoAhwQdhogAigCKCgCACIAIAIoAhwgACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCHGs2AhAgAigCKCgCACIAIAIoAhwgACgCFGo2AhQLIAIoAhBFDQELCyACIAIoAgwgAigCKCgCACgCBGs2AgwgAigCDARAAkAgAigCDCACKAIoKAIsTwRAIAIoAihBAjYCsC0gAigCKCgCOCACKAIoKAIAKAIAIAIoAigoAixrIAIoAigoAiwQGRogAigCKCACKAIoKAIsNgJsDAELIAIoAgwgAigCKCgCPCACKAIoKAJsa08EQCACKAIoIgAgACgCbCACKAIoKAIsazYCbCACKAIoKAI4IAIoAigoAjggAigCKCgCLGogAigCKCgCbBAZGiACKAIoKAKwLUECSQRAIAIoAigiACAAKAKwLUEBajYCsC0LCyACKAIoKAI4IAIoAigoAmxqIAIoAigoAgAoAgAgAigCDGsgAigCDBAZGiACKAIoIgAgAigCDCAAKAJsajYCbAsgAigCKCACKAIoKAJsNgJcIAIoAigiAQJ/IAIoAgwgAigCKCgCLCACKAIoKAK0LWtLBEAgAigCKCgCLCACKAIoKAK0LWsMAQsgAigCDAsgASgCtC1qNgK0LQsgAigCKCgCwC0gAigCKCgCbEkEQCACKAIoIAIoAigoAmw2AsAtCwJAIAIoAhAEQCACQQM2AiwMAQsCQCACKAIkRQ0AIAIoAiRBBEYNACACKAIoKAIAKAIEDQAgAigCKCgCbCACKAIoKAJcRw0AIAJBATYCLAwBCyACIAIoAigoAjwgAigCKCgCbGtBAWs2AhQCQCACKAIoKAIAKAIEIAIoAhRNDQAgAigCKCgCXCACKAIoKAIsSA0AIAIoAigiACAAKAJcIAIoAigoAixrNgJcIAIoAigiACAAKAJsIAIoAigoAixrNgJsIAIoAigoAjggAigCKCgCOCACKAIoKAIsaiACKAIoKAJsEBkaIAIoAigoArAtQQJJBEAgAigCKCIAIAAoArAtQQFqNgKwLQsgAiACKAIoKAIsIAIoAhRqNgIUCyACKAIUIAIoAigoAgAoAgRLBEAgAiACKAIoKAIAKAIENgIUCyACKAIUBEAgAigCKCgCACACKAIoKAI4IAIoAigoAmxqIAIoAhQQdhogAigCKCIAIAIoAhQgACgCbGo2AmwLIAIoAigoAsAtIAIoAigoAmxJBEAgAigCKCACKAIoKAJsNgLALQsgAiACKAIoKAK8LUEqakEDdTYCFCACIAIoAigoAgwgAigCFGtB//8DSwR/Qf//AwUgAigCKCgCDCACKAIUaws2AhQgAgJ/IAIoAhQgAigCKCgCLEsEQCACKAIoKAIsDAELIAIoAhQLNgIgIAIgAigCKCgCbCACKAIoKAJcazYCGAJAIAIoAhggAigCIEkEQCACKAIYRQRAIAIoAiRBBEcNAgsgAigCJEUNASACKAIoKAIAKAIEDQEgAigCGCACKAIUSw0BCyACAn8gAigCGCACKAIUSwRAIAIoAhQMAQsgAigCGAs2AhwgAgJ/QQAgAigCJEEERw0AGkEAIAIoAigoAgAoAgQNABogAigCHCACKAIYRgtBAXE2AhAgAigCKCACKAIoKAI4IAIoAigoAlxqIAIoAhwgAigCEBBdIAIoAigiACACKAIcIAAoAlxqNgJcIAIoAigoAgAQHAsgAkECQQAgAigCEBs2AiwLIAIoAiwhACACQTBqJAAgAAuyAgEBfyMAQRBrIgEkACABIAA2AggCQCABKAIIEHgEQCABQX42AgwMAQsgASABKAIIKAIcKAIENgIEIAEoAggoAhwoAggEQCABKAIIKAIoIAEoAggoAhwoAgggASgCCCgCJBEEAAsgASgCCCgCHCgCRARAIAEoAggoAiggASgCCCgCHCgCRCABKAIIKAIkEQQACyABKAIIKAIc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DQAgAiEAIANBAWsiAw0ACwsgBCgCFBogASACNgKgAQwCCyMAQRBrIgAgASgCqAEoAgQ2AgwgAUEAIAAoAgxrQQJ0QajZAGooAgA2AqABDAELIAFBADYCoAELCwJAIAEoAqABRQRAIAEgASgCpAE2AqwBDAELIAEgASgCoAEQLgJ/IAEoAqQBBEAgASgCpAEQLkECagwBC0EAC2pBAWoQGCIANgIcIABFBEAgAUG4EygCADYCrAEMAQsgASgCHCEAAn8gASgCpAEEQCABKAKkAQwBC0H6EgshA0HfEkH6EiABKAKkARshAiABIAEoAqABNgIIIAEgAjYCBCABIAM2AgAgAEG+CiABEG8gASgCqAEgASgCHDYCCCABIAEoAhw2AqwBCyABKAKsASEAIAFBsAFqJAAgAAsIAEEBQTgQfwszAQF/IAAoAhQiAyABIAIgACgCECADayIBIAEgAksbIgEQGRogACAAKAIUIAFqNgIUIAILjwUCBn4BfyABIAEoAgBBD2pBcHEiAUEQajYCACAAAnwgASkDACEDIAEpAwghBiMAQSBrIggkAAJAIAZC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBkIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAiFQgBSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBkIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIAQZH3AEkNACADIQIgBkL///////8/g0KAgICAgIDAAIQiBSEHAkAgAEGB9wBrIgFBwABxBEAgAiABQUBqrYYhB0IAIQIMAQsgAUUNACAHIAGtIgSGIAJBwAAgAWutiIQhByACIASGIQILIAggAjcDECAIIAc3AxgCQEGB+AAgAGsiAEHAAHEEQCAFIABBQGqtiCEDQgAhBQwBCyAARQ0AIAVBwAAgAGuthiADIACtIgKIhCEDIAUgAoghBQsgCCADNwMAIAggBTcDCCAIKQMI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ADYCtC0gASgCFEEERgRAIAEoAhgCfyABKAIYKAJcQQBOBEAgASgCGCgCOCABKAIYKAJcagwBC0EACyABKAIYKAJsIAEoAhgoAlxrQQEQKCABKAIYIAEoAhgoAmw2AlwgASgCGCgCABAcIAEoAhgoAgAoAhBFBEAgAUECNgIcDAILIAFBAzYCHAwBCyABKAIYKAKgLQRAIAEoAhgCfyABKAIYKAJcQQBOBEAgASgCGCgCOCABKAIYKAJcagwBC0EACyABKAIYKAJsIAEoAhgoAlxrQQAQKCABKAIYIAEoAhgoAmw2AlwgASgCGCgCABAcIAEoAhgoAgAoAhBFBEAgAUEANgIcDAILCyABQQE2AhwLIAEoAhwhAiABQSBqJAAgAgwBCwJ/IAAoAiwoAogBQQNGBEAgACgCLCECIAAoAjQhAyMAQTBrIgEkACABIAI2AiggASADNgIkAkADQAJAIAEoAigoAnRBggJNBEAgASgCKBBcAkAgASgCKCgCdEGCAksNACABKAIkDQAgAUEANgIsDAQLIAEoAigoAnRFDQELIAEoAihBADYCYAJAIAEoAigoAnRBA0kNACABKAIoKAJsRQ0AIAEgASgCKCgCOCABKAIoKAJsakEBazYCGCABIAEoAhgtAAA2AhwgASgCHCECIAEgASgCGCIDQQFqNgIYAkAgAy0AASACRw0AIAEoAhwhAiABIAEoAhgiA0EBajYCGCADLQABIAJHDQAgASgCHCECIAEgASgCGCIDQQFqNgIYIAMtAAEgAkcNACABIAEoAigoAjggASgCKCgCbGpBggJqNgIUA0AgASgCHCECIAEgASgCGCIDQQFqNgIYAn9BACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCHCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCHCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABog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AS8BEiECIAEgASgCSCIDQQFqNgJIIAMgAjoAAAwCCyABKAIMQRBxBEAgASABLwESNgIIIAEgASgCDEEPcTYCDCABKAIMBEAgASgCKCABKAIMSQRAIAEgASgCUCICQQFqNgJQIAEgASgCLCACLQAAIAEoAih0ajYCLCABIAEoAihBCGo2AigLIAEgASgCCCABKAIsQQEgASgCDHRBAWtxajYCCCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoCyABKAIoQQ9JBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABIAEoAlAiAkEBajYCUCABIAEoAiwgAi0AACABKAIodGo2AiwgASABKAIoQQhqNgIoCyABIAEoAiAgASgCLCABKAIYcUECdGooAQA2ARACQANAIAEgAS0AETYCDCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgAS0AEDYCDCABKAIMQRBxBEAgASABLwESNgIEIAEgASgCDEEPcTYCDCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKAsLIAEgASgCBCABKAIsQQEgASgCDHRBAWtxajYCBCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgASgCSCABKAJEazYCDAJAIAEoAgQgASgCDEsEQCABIAEoAgQgASgCDGs2AgwgASgCDCABKAI4SwRAIAEoAlQoAsQ3BEAgASgCXEHdDDYCGCABKAJUQdH+ADYCBAwKCwsgASABKAIwNgIAAkAgASgCNEUEQCABIAEoAgAgASgCPCABKAIMa2o2AgAgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAkggASgCBGs2AgALDAELAkAgASgCNCABKAIMSQRAIAEgASgCACABKAI8IAEoAjRqIAEoAgxrajYCACABIAEoAgwgASgCNGs2AgwgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAjA2AgAgASgCNCABKAIISQRAIAEgASgCNDYCDCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsMAQsgASABKAIAIAEoAjQgASgCDGtqNgIAIAEoAgwgASgCCEkEQCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsLA0AgASgCCEECSwRAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCCEEDazYCCAwBCwsMAQsgASABKAJIIAEoAgRrNgIAA0AgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIIQQNrNgIIIAEoAghBAksNAAsLIAEoAggEQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEoAghBAUsEQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAACwsMAgsgASgCDEHAAHFFBEAgASABKAIgIAEvARIgASgCLEEBIAEoAgx0QQFrcWpBAnRqKAEANgEQDAELCyAB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AG5hbgAvZGV2L3VyYW5kb20AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoAGluZgBpbnZhbGlkIHdpbmRvdyBzaXplAFJlYWQtb25seSBhcmNoaXZlAE5vdCBhIHppcCBhcmNoaXZlAFJlc291cmNlIHN0aWxsIGluIHVzZQBNYWxsb2MgZmFpbHVyZQBpbnZhbGlkIGJsb2NrIHR5cGUARmFpbHVyZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUAQ2FuJ3Qgb3BlbiBmaWxlAE5vIHN1Y2ggZmlsZQBQcmVtYXR1cmUgZW5kIG9mIGZpbGUAQ2FuJ3QgcmVtb3ZlIGZpbGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZABzdHJlYW0gZW5kAENvbXByZXNzZWQgZGF0YSBpbnZhbGlkAE11bHRpLWRpc2sgemlwIGFyY2hpdmVzIG5vdCBzdXBwb3J0ZWQAT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQARW5jcnlwdGlvbiBtZXRob2Qgbm90IHN1cHBvcnRlZABDb21wcmVzc2lvbiBtZXRob2Qgbm90IHN1cHBvcnRlZABFbnRyeSBoYXMgYmVlbiBkZWxldGVkAENvbnRhaW5pbmcgemlwIGFyY2hpdmUgd2FzIGNsb3NlZABDbG9zaW5nIHppcCBhcmNoaXZlIGZhaWxlZABSZW5hbWluZyB0ZW1wb3JhcnkgZmlsZSBmYWlsZWQARW50cnkgaGFzIGJlZW4gY2hhbmdlZABObyBwYXNzd29yZCBwcm92aWRlZABXcm9uZyBwYXNzd29yZCBwcm92aWRlZABVbmtub3duIGVycm9yICVkAHJiAHIrYgByd2EAJXMuWFhYWFhYAE5BTgBJTkYAQUUAMS4yLjExAC9wcm9jL3NlbGYvZmQvAC4AKG51bGwpADogAFBLBgcA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0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgAEwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJANMBCQAzAAkAMwEJALMACQCzAQkAcwAJAHMBCQDzAAkA8wEJAAsACQALAQkAiwAJAIsBCQBLAAkASwEJAMsACQDLAQkAKwAJACsBCQCrAAkAqwEJAGsACQBrAQkA6wAJAOsBCQAbAAkAGwEJAJsACQCbAQkAWwAJAFsBCQDbAAkA2wEJADsACQA7AQkAuwAJALsBCQB7AAkAewEJAPsACQD7AQkABwAJAAcBCQCHAAkAhwEJAEcACQBHAQkAxwAJAMcBCQAnAAkAJwEJAKcACQCnAQkAZwAJAGcBCQDnAAkA5wEJABcACQAXAQkAlwAJAJcBCQBXAAkAVwEJANcACQDXAQkANwAJADcBCQC3AAkAtwEJAHcACQB3AQkA9wAJAPcBCQAPAAkADwEJAI8ACQCPAQkATwAJAE8BCQDPAAkAzwEJAC8ACQAvAQkArwAJAK8BCQBvAAkAbwEJAO8ACQDvAQkAHwAJAB8BCQCfAAkAnwEJAF8ACQBfAQkA3wAJAN8BCQA/AAkAPwEJAL8ACQC/AQkAfwAJAH8BCQD/AAkA/wEJAAAABwBAAAcAIAAHAGAABwAQAAcAUAAHADAABwBwAAcACAAHAEgABwAoAAcAaAAHABgABwBYAAcAOAAHAHgABwAEAAcARAAHACQABwBkAAcAFAAHAFQABwA0AAcAdAAHAAMACACDAAgAQwAIAMMACAAjAAgAowAIAGMACADjAAgAAAAFABAABQAIAAUAGAAFAAQABQAUAAUADAAFABwABQACAAUAEgAFAAoABQAaAAUABgAFABYABQAOAAUAHgAFAAEABQARAAUACQAFABkABQAFAAUAFQAFAA0ABQAdAAUAAwAFABMABQALAAUAGwAFAAcABQAXAAUAQbDqAAtNAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQaDrAAtlAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AQdDsAAsjAgAAAAMAAAAHAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AQYTtAAtpAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAEGE7gALegEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAAABAACAAQAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAMS4yLjExAEGI7wALbQcAAAAEAAQACAAEAAgAAAAEAAUAEAAIAAgAAAAEAAYAIAAgAAgAAAAEAAQAEAAQAAkAAAAIABAAIAAgAAkAAAAIABAAgACAAAkAAAAIACAAgAAAAQkAAAAgAIAAAgEABAkAAAAgAAIBAgEAEAkAQYDwAAulAgMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAAAAAAAQABAAEAAQABAAEAAQABAAEQARABEAEQASABIAEgASABMAEwATABMAFAAUABQAFAAVABUAFQAVABAATQDKAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAAAAABAAEAAQABAAEQARABIAEgATABMAFAAUABUAFQAWABYAFwAXABgAGAAZABkAGgAaABsAGwAcABwAHQAdAEAAQAAQABEAEgAAAAgABwAJAAYACgAFAAsABAAMAAMADQACAA4AAQAPAEGw8gALwRFgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnAABAHCgAACGAAAAggAAAJoAAACAAAAAiAAAAIQAAACeAAEAcGAAAIWAAACBgAAAmQABMHOwAACHgAAAg4AAAJ0AARBxEAAAhoAAAIKAAACbAAAAgIAAAIiAAACEgAAAnwABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACcgAEQcNAAAIZAAACCQAAAmoAAAIBAAACIQAAAhEAAAJ6AAQBwgAAAhcAAAIHAAACZgAFAdTAAAIfAAACDwAAAnYABIHFwAACGwAAAgsAAAJuAAACAwAAAiMAAAITAAACfgAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxAARBwsAAAhiAAAIIgAACaQAAAgCAAAIggAACEIAAAnkABAHBwAACFoAAAgaAAAJlAAUB0MAAAh6AAAIOgAACdQAEgcTAAAIagAACCoAAAm0AAAICgAACIoAAAhKAAAJ9AAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnMABEHDwAACGYAAAgmAAAJrAAACAYAAAiGAAAIRgAACewAEAcJAAAIXgAACB4AAAmcABQHYwAACH4AAAg+AAAJ3AASBxsAAAhuAAAILgAACbwAAAgOAAAIjgAACE4AAAn8AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcIAEAcKAAAIYQAACCEAAAmiAAAIAQAACIEAAAhBAAAJ4gAQBwYAAAhZAAAIGQAACZIAEwc7AAAIeQAACDkAAAnSABEHEQAACGkAAAgpAAAJsgAACAkAAAiJAAAISQAACfIAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJygARBw0AAAhlAAAIJQAACaoAAAgFAAAIhQAACEUAAAnqABAHCAAACF0AAAgdAAAJmgAUB1MAAAh9AAAIPQAACdoAEgcXAAAIbQAACC0AAAm6AAAIDQAACI0AAAhNAAAJ+gAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnGABEHCwAACGMAAAgjAAAJpgAACAMAAAiDAAAIQwAACeYAEAcHAAAIWwAACBsAAAmWABQHQwAACHsAAAg7AAAJ1gASBxMAAAhrAAAIKwAACbYAAAgLAAAIiwAACEsAAAn2ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc4AEQcPAAAIZwAACCcAAAmuAAAIBwAACIcAAAhHAAAJ7gAQBwkAAAhfAAAIHwAACZ4AFAdjAAAIfwAACD8AAAneABIHGwAACG8AAAgvAAAJvgAACA8AAAiPAAAITwAACf4AYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwQAQBwoAAAhgAAAIIAAACaEAAAgAAAAIgAAACEAAAAnhABAHBgAACFgAAAgYAAAJkQATBzsAAAh4AAAIOAAACdEAEQcRAAAIaAAACCgAAAmxAAAICAAACIgAAAhIAAAJ8QAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnJABEHDQAACGQAAAgkAAAJqQAACAQAAAiEAAAIRAAACekAEAcIAAAIXAAACBwAAAmZABQHUwAACHwAAAg8AAAJ2QASBxcAAAhsAAAILAAACbkAAAgMAAAIjAAACEwAAAn5ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcUAEQcLAAAIYgAACCIAAAmlAAAIAgAACIIAAAhCAAAJ5QAQBwcAAAhaAAAIGgAACZUAFAdDAAAIegAACDoAAAnVABIHEwAACGoAAAgqAAAJtQAACAoAAAiKAAAISgAACfUAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzQARBw8AAAhmAAAIJgAACa0AAAgGAAAIhgAACEYAAAntABAHCQAACF4AAAgeAAAJnQAUB2MAAAh+AAAIPgAACd0AEgcbAAAIbgAACC4AAAm9AAAIDgAACI4AAAhOAAAJ/QBgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnDABAHCgAACGEAAAghAAAJowAACAEAAAiBAAAIQQAACeMAEAcGAAAIWQAACBkAAAmTABMHOwAACHkAAAg5AAAJ0wARBxEAAAhpAAAIKQAACbMAAAgJAAAIiQAACEkAAAnzABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcsAEQcNAAAIZQAACCUAAAmrAAAIBQAACIUAAAhFAAAJ6wAQBwgAAAhdAAAIHQAACZsAFAdTAAAIfQAACD0AAAnbABIHFwAACG0AAAgtAAAJuwAACA0AAAiNAAAITQAACfsAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxwARBwsAAAhjAAAIIwAACacAAAgDAAAIgwAACEMAAAnnABAHBwAACFsAAAgbAAAJlwAUB0MAAAh7AAAIOwAACdcAEgcTAAAIawAACCsAAAm3AAAICwAACIsAAAhLAAAJ9wAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnPABEHDwAACGcAAAgnAAAJrwAACAcAAAiHAAAIRwAACe8AEAcJAAAIXwAACB8AAAmfABQHYwAACH8AAAg/AAAJ3wASBxsAAAhvAAAILwAACb8AAAgPAAAIjwAACE8AAAn/ABAFAQAXBQEBEwURABsFARARBQUAGQUBBBUFQQAdBQFAEAUDABgFAQIUBSEAHAUBIBIFCQAaBQEIFgWBAEAFAAAQBQIAFwWBARMFGQAbBQEYEQUHABkFAQYVBWEAHQUBYBAFBAAYBQEDFAUxABwFATASBQ0AGgUBDBYFwQBABQAAEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEACQsLAAAJBgsAAAsABhEAAAAREREAQYGEAQshCwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAALAEG7hAELAQwAQceEAQsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEH1hAELAQ4AQYGFAQsVDQAAAAQNAAAAAAkOAAAAAAAOAAAOAEGvhQELARAAQbuFAQseDwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhISAEHyhQELDhIAAAASEhIAAAAAAAAJAEGjhgELAQsAQa+GAQsVCgAAAAAKAAAAAAkLAAAAAAALAAALAEHdhgELAQwAQemGAQsnDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGAEG0hwELARkAQduHAQsF//////8AQaCIAQtXGRJEOwI/LEcUPTMwChsGRktFNw9JDo4XA0AdPGkrNh9KLRwBICUpIQgMFRYiLhA4Pgs0MRhkdHV2L0EJfzkRI0MyQomKiwUEJignDSoeNYwHGkiTE5SVAEGAiQELig5JbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgBBkJcBC1JQUFAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAAAEAAAAIAAAAlEsAALRLAEGQmQELAgxQAEHImQELCR8AAADkTAAAAwBB5JkBC4wBLfRRWM+MscBG9rXLKTEDxwRbcDC0Xf0geH+LmthZKVBoSImrp1YDbP+3zYg/1He0K6WjcPG65Kj8QYP92W/hinovLXSWBx8NCV4Ddixw90ClLKdvV0GoqnTfoFhkA0rHxDxTrq9fGAQVseNtKIarDKS/Q/DpUIE5VxZSN/////////////////////8=";
6128
6128
-
if (!isDataURI(wasmBinaryFile)) {
6129
6129
-
wasmBinaryFile = locateFile(wasmBinaryFile);
6130
6130
-
}
6131
6131
-
function getBinary(file) {
6132
6132
-
try {
6133
6133
-
if (file == wasmBinaryFile && wasmBinary) {
6134
6134
-
return new Uint8Array(wasmBinary);
6135
6135
-
}
6136
6136
-
var binary = tryParseAsDataURI(file);
6137
6137
-
if (binary) {
6138
6138
-
return binary;
6139
6139
-
}
6140
6140
-
if (readBinary) {
6141
6141
-
return readBinary(file);
6142
6142
-
} else {
6143
6143
-
throw "sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)";
6144
6144
-
}
6145
6145
-
} catch (err2) {
6146
6146
-
abort(err2);
6147
6147
-
}
6148
6148
-
}
6149
6149
-
function instantiateSync(file, info) {
6150
6150
-
var instance;
6151
6151
-
var module2;
6152
6152
-
var binary;
6153
6153
-
try {
6154
6154
-
binary = getBinary(file);
6155
6155
-
module2 = new WebAssembly.Module(binary);
6156
6156
-
instance = new WebAssembly.Instance(module2, info);
6157
6157
-
} catch (e) {
6158
6158
-
var str = e.toString();
6159
6159
-
err("failed to compile wasm module: " + str);
6160
6160
-
if (str.includes("imported Memory") || str.includes("memory import")) {
6161
6161
-
err(
6162
6162
-
"Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."
6163
6163
-
);
6164
6164
-
}
6165
6165
-
throw e;
6166
6166
-
}
6167
6167
-
return [instance, module2];
6168
6168
-
}
6169
6169
-
function createWasm() {
6170
6170
-
var info = { a: asmLibraryArg };
6171
6171
-
function receiveInstance(instance, module2) {
6172
6172
-
var exports3 = instance.exports;
6173
6173
-
Module["asm"] = exports3;
6174
6174
-
wasmMemory = Module["asm"]["u"];
6175
6175
-
updateGlobalBufferAndViews(wasmMemory.buffer);
6176
6176
-
wasmTable = Module["asm"]["pa"];
6177
6177
-
addOnInit(Module["asm"]["v"]);
6178
6178
-
removeRunDependency();
6179
6179
-
}
6180
6180
-
addRunDependency();
6181
6181
-
if (Module["instantiateWasm"]) {
6182
6182
-
try {
6183
6183
-
var exports2 = Module["instantiateWasm"](info, receiveInstance);
6184
6184
-
return exports2;
6185
6185
-
} catch (e) {
6186
6186
-
err("Module.instantiateWasm callback failed with error: " + e);
6187
6187
-
return false;
6188
6188
-
}
6189
6189
-
}
6190
6190
-
var result = instantiateSync(wasmBinaryFile, info);
6191
6191
-
receiveInstance(result[0]);
6192
6192
-
return Module["asm"];
6193
6193
-
}
6194
6194
-
var tempDouble;
6195
6195
-
var tempI64;
6196
6196
-
function callRuntimeCallbacks(callbacks) {
6197
6197
-
while (callbacks.length > 0) {
6198
6198
-
var callback = callbacks.shift();
6199
6199
-
if (typeof callback == "function") {
6200
6200
-
callback(Module);
6201
6201
-
continue;
6202
6202
-
}
6203
6203
-
var func = callback.func;
6204
6204
-
if (typeof func === "number") {
6205
6205
-
if (callback.arg === void 0) {
6206
6206
-
wasmTable.get(func)();
6207
6207
-
} else {
6208
6208
-
wasmTable.get(func)(callback.arg);
6209
6209
-
}
6210
6210
-
} else {
6211
6211
-
func(callback.arg === void 0 ? null : callback.arg);
6212
6212
-
}
6213
6213
-
}
6214
6214
-
}
6215
6215
-
function _gmtime_r(time, tmPtr) {
6216
6216
-
var date = new Date(HEAP32[time >> 2] * 1e3);
6217
6217
-
HEAP32[tmPtr >> 2] = date.getUTCSeconds();
6218
6218
-
HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes();
6219
6219
-
HEAP32[tmPtr + 8 >> 2] = date.getUTCHours();
6220
6220
-
HEAP32[tmPtr + 12 >> 2] = date.getUTCDate();
6221
6221
-
HEAP32[tmPtr + 16 >> 2] = date.getUTCMonth();
6222
6222
-
HEAP32[tmPtr + 20 >> 2] = date.getUTCFullYear() - 1900;
6223
6223
-
HEAP32[tmPtr + 24 >> 2] = date.getUTCDay();
6224
6224
-
HEAP32[tmPtr + 36 >> 2] = 0;
6225
6225
-
HEAP32[tmPtr + 32 >> 2] = 0;
6226
6226
-
var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);
6227
6227
-
var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;
6228
6228
-
HEAP32[tmPtr + 28 >> 2] = yday;
6229
6229
-
if (!_gmtime_r.GMTString)
6230
6230
-
_gmtime_r.GMTString = allocateUTF8("GMT");
6231
6231
-
HEAP32[tmPtr + 40 >> 2] = _gmtime_r.GMTString;
6232
6232
-
return tmPtr;
6233
6233
-
}
6234
6234
-
function ___gmtime_r(a0, a1) {
6235
6235
-
return _gmtime_r(a0, a1);
6236
6236
-
}
6237
6237
-
var PATH = {
6238
6238
-
splitPath: function(filename) {
6239
6239
-
var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
6240
6240
-
return splitPathRe.exec(filename).slice(1);
6241
6241
-
},
6242
6242
-
normalizeArray: function(parts, allowAboveRoot) {
6243
6243
-
var up = 0;
6244
6244
-
for (var i = parts.length - 1; i >= 0; i--) {
6245
6245
-
var last = parts[i];
6246
6246
-
if (last === ".") {
6247
6247
-
parts.splice(i, 1);
6248
6248
-
} else if (last === "..") {
6249
6249
-
parts.splice(i, 1);
6250
6250
-
up++;
6251
6251
-
} else if (up) {
6252
6252
-
parts.splice(i, 1);
6253
6253
-
up--;
6254
6254
-
}
6255
6255
-
}
6256
6256
-
if (allowAboveRoot) {
6257
6257
-
for (; up; up--) {
6258
6258
-
parts.unshift("..");
6259
6259
-
}
6260
6260
-
}
6261
6261
-
return parts;
6262
6262
-
},
6263
6263
-
normalize: function(path) {
6264
6264
-
var isAbsolute = path.charAt(0) === "/", trailingSlash = path.substr(-1) === "/";
6265
6265
-
path = PATH.normalizeArray(
6266
6266
-
path.split("/").filter(function(p) {
6267
6267
-
return !!p;
6268
6268
-
}),
6269
6269
-
!isAbsolute
6270
6270
-
).join("/");
6271
6271
-
if (!path && !isAbsolute) {
6272
6272
-
path = ".";
6273
6273
-
}
6274
6274
-
if (path && trailingSlash) {
6275
6275
-
path += "/";
6276
6276
-
}
6277
6277
-
return (isAbsolute ? "/" : "") + path;
6278
6278
-
},
6279
6279
-
dirname: function(path) {
6280
6280
-
var result = PATH.splitPath(path), root = result[0], dir = result[1];
6281
6281
-
if (!root && !dir) {
6282
6282
-
return ".";
6283
6283
-
}
6284
6284
-
if (dir) {
6285
6285
-
dir = dir.substr(0, dir.length - 1);
6286
6286
-
}
6287
6287
-
return root + dir;
6288
6288
-
},
6289
6289
-
basename: function(path) {
6290
6290
-
if (path === "/")
6291
6291
-
return "/";
6292
6292
-
path = PATH.normalize(path);
6293
6293
-
path = path.replace(/\/$/, "");
6294
6294
-
var lastSlash = path.lastIndexOf("/");
6295
6295
-
if (lastSlash === -1)
6296
6296
-
return path;
6297
6297
-
return path.substr(lastSlash + 1);
6298
6298
-
},
6299
6299
-
extname: function(path) {
6300
6300
-
return PATH.splitPath(path)[3];
6301
6301
-
},
6302
6302
-
join: function() {
6303
6303
-
var paths = Array.prototype.slice.call(arguments, 0);
6304
6304
-
return PATH.normalize(paths.join("/"));
6305
6305
-
},
6306
6306
-
join2: function(l, r) {
6307
6307
-
return PATH.normalize(l + "/" + r);
6308
6308
-
}
6309
6309
-
};
6310
6310
-
function getRandomDevice() {
6311
6311
-
{
6312
6312
-
try {
6313
6313
-
var crypto_module = require("crypto");
6314
6314
-
return function() {
6315
6315
-
return crypto_module["randomBytes"](1)[0];
6316
6316
-
};
6317
6317
-
} catch (e) {
6318
6318
-
}
6319
6319
-
}
6320
6320
-
return function() {
6321
6321
-
abort("randomDevice");
6322
6322
-
};
6323
6323
-
}
6324
6324
-
var PATH_FS = {
6325
6325
-
resolve: function() {
6326
6326
-
var resolvedPath = "", resolvedAbsolute = false;
6327
6327
-
for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
6328
6328
-
var path = i >= 0 ? arguments[i] : FS.cwd();
6329
6329
-
if (typeof path !== "string") {
6330
6330
-
throw new TypeError("Arguments to path.resolve must be strings");
6331
6331
-
} else if (!path) {
6332
6332
-
return "";
6333
6333
-
}
6334
6334
-
resolvedPath = path + "/" + resolvedPath;
6335
6335
-
resolvedAbsolute = path.charAt(0) === "/";
6336
6336
-
}
6337
6337
-
resolvedPath = PATH.normalizeArray(
6338
6338
-
resolvedPath.split("/").filter(function(p) {
6339
6339
-
return !!p;
6340
6340
-
}),
6341
6341
-
!resolvedAbsolute
6342
6342
-
).join("/");
6343
6343
-
return (resolvedAbsolute ? "/" : "") + resolvedPath || ".";
6344
6344
-
},
6345
6345
-
relative: function(from, to) {
6346
6346
-
from = PATH_FS.resolve(from).substr(1);
6347
6347
-
to = PATH_FS.resolve(to).substr(1);
6348
6348
-
function trim(arr) {
6349
6349
-
var start = 0;
6350
6350
-
for (; start < arr.length; start++) {
6351
6351
-
if (arr[start] !== "")
6352
6352
-
break;
6353
6353
-
}
6354
6354
-
var end = arr.length - 1;
6355
6355
-
for (; end >= 0; end--) {
6356
6356
-
if (arr[end] !== "")
6357
6357
-
break;
6358
6358
-
}
6359
6359
-
if (start > end)
6360
6360
-
return [];
6361
6361
-
return arr.slice(start, end - start + 1);
6362
6362
-
}
6363
6363
-
var fromParts = trim(from.split("/"));
6364
6364
-
var toParts = trim(to.split("/"));
6365
6365
-
var length = Math.min(fromParts.length, toParts.length);
6366
6366
-
var samePartsLength = length;
6367
6367
-
for (var i = 0; i < length; i++) {
6368
6368
-
if (fromParts[i] !== toParts[i]) {
6369
6369
-
samePartsLength = i;
6370
6370
-
break;
6371
6371
-
}
6372
6372
-
}
6373
6373
-
var outputParts = [];
6374
6374
-
for (var i = samePartsLength; i < fromParts.length; i++) {
6375
6375
-
outputParts.push("..");
6376
6376
-
}
6377
6377
-
outputParts = outputParts.concat(toParts.slice(samePartsLength));
6378
6378
-
return outputParts.join("/");
6379
6379
-
}
6380
6380
-
};
6381
6381
-
var TTY = {
6382
6382
-
ttys: [],
6383
6383
-
init: function() {
6384
6384
-
},
6385
6385
-
shutdown: function() {
6386
6386
-
},
6387
6387
-
register: function(dev, ops) {
6388
6388
-
TTY.ttys[dev] = { input: [], output: [], ops };
6389
6389
-
FS.registerDevice(dev, TTY.stream_ops);
6390
6390
-
},
6391
6391
-
stream_ops: {
6392
6392
-
open: function(stream) {
6393
6393
-
var tty = TTY.ttys[stream.node.rdev];
6394
6394
-
if (!tty) {
6395
6395
-
throw new FS.ErrnoError(43);
6396
6396
-
}
6397
6397
-
stream.tty = tty;
6398
6398
-
stream.seekable = false;
6399
6399
-
},
6400
6400
-
close: function(stream) {
6401
6401
-
stream.tty.ops.flush(stream.tty);
6402
6402
-
},
6403
6403
-
flush: function(stream) {
6404
6404
-
stream.tty.ops.flush(stream.tty);
6405
6405
-
},
6406
6406
-
read: function(stream, buffer2, offset, length, pos) {
6407
6407
-
if (!stream.tty || !stream.tty.ops.get_char) {
6408
6408
-
throw new FS.ErrnoError(60);
6409
6409
-
}
6410
6410
-
var bytesRead = 0;
6411
6411
-
for (var i = 0; i < length; i++) {
6412
6412
-
var result;
6413
6413
-
try {
6414
6414
-
result = stream.tty.ops.get_char(stream.tty);
6415
6415
-
} catch (e) {
6416
6416
-
throw new FS.ErrnoError(29);
6417
6417
-
}
6418
6418
-
if (result === void 0 && bytesRead === 0) {
6419
6419
-
throw new FS.ErrnoError(6);
6420
6420
-
}
6421
6421
-
if (result === null || result === void 0)
6422
6422
-
break;
6423
6423
-
bytesRead++;
6424
6424
-
buffer2[offset + i] = result;
6425
6425
-
}
6426
6426
-
if (bytesRead) {
6427
6427
-
stream.node.timestamp = Date.now();
6428
6428
-
}
6429
6429
-
return bytesRead;
6430
6430
-
},
6431
6431
-
write: function(stream, buffer2, offset, length, pos) {
6432
6432
-
if (!stream.tty || !stream.tty.ops.put_char) {
6433
6433
-
throw new FS.ErrnoError(60);
6434
6434
-
}
6435
6435
-
try {
6436
6436
-
for (var i = 0; i < length; i++) {
6437
6437
-
stream.tty.ops.put_char(stream.tty, buffer2[offset + i]);
6438
6438
-
}
6439
6439
-
} catch (e) {
6440
6440
-
throw new FS.ErrnoError(29);
6441
6441
-
}
6442
6442
-
if (length) {
6443
6443
-
stream.node.timestamp = Date.now();
6444
6444
-
}
6445
6445
-
return i;
6446
6446
-
}
6447
6447
-
},
6448
6448
-
default_tty_ops: {
6449
6449
-
get_char: function(tty) {
6450
6450
-
if (!tty.input.length) {
6451
6451
-
var result = null;
6452
6452
-
{
6453
6453
-
var BUFSIZE = 256;
6454
6454
-
var buf = Buffer.alloc ? Buffer.alloc(BUFSIZE) : new Buffer(BUFSIZE);
6455
6455
-
var bytesRead = 0;
6456
6456
-
try {
6457
6457
-
bytesRead = nodeFS.readSync(
6458
6458
-
process.stdin.fd,
6459
6459
-
buf,
6460
6460
-
0,
6461
6461
-
BUFSIZE,
6462
6462
-
null
6463
6463
-
);
6464
6464
-
} catch (e) {
6465
6465
-
if (e.toString().includes("EOF"))
6466
6466
-
bytesRead = 0;
6467
6467
-
else
6468
6468
-
throw e;
6469
6469
-
}
6470
6470
-
if (bytesRead > 0) {
6471
6471
-
result = buf.slice(0, bytesRead).toString("utf-8");
6472
6472
-
} else {
6473
6473
-
result = null;
6474
6474
-
}
6475
6475
-
}
6476
6476
-
if (!result) {
6477
6477
-
return null;
6478
6478
-
}
6479
6479
-
tty.input = intArrayFromString(result, true);
6480
6480
-
}
6481
6481
-
return tty.input.shift();
6482
6482
-
},
6483
6483
-
put_char: function(tty, val) {
6484
6484
-
if (val === null || val === 10) {
6485
6485
-
out(UTF8ArrayToString(tty.output, 0));
6486
6486
-
tty.output = [];
6487
6487
-
} else {
6488
6488
-
if (val != 0)
6489
6489
-
tty.output.push(val);
6490
6490
-
}
6491
6491
-
},
6492
6492
-
flush: function(tty) {
6493
6493
-
if (tty.output && tty.output.length > 0) {
6494
6494
-
out(UTF8ArrayToString(tty.output, 0));
6495
6495
-
tty.output = [];
6496
6496
-
}
6497
6497
-
}
6498
6498
-
},
6499
6499
-
default_tty1_ops: {
6500
6500
-
put_char: function(tty, val) {
6501
6501
-
if (val === null || val === 10) {
6502
6502
-
err(UTF8ArrayToString(tty.output, 0));
6503
6503
-
tty.output = [];
6504
6504
-
} else {
6505
6505
-
if (val != 0)
6506
6506
-
tty.output.push(val);
6507
6507
-
}
6508
6508
-
},
6509
6509
-
flush: function(tty) {
6510
6510
-
if (tty.output && tty.output.length > 0) {
6511
6511
-
err(UTF8ArrayToString(tty.output, 0));
6512
6512
-
tty.output = [];
6513
6513
-
}
6514
6514
-
}
6515
6515
-
}
6516
6516
-
};
6517
6517
-
function mmapAlloc(size) {
6518
6518
-
var alignedSize = alignMemory(size, 65536);
6519
6519
-
var ptr = _malloc(alignedSize);
6520
6520
-
while (size < alignedSize)
6521
6521
-
HEAP8[ptr + size++] = 0;
6522
6522
-
return ptr;
6523
6523
-
}
6524
6524
-
var MEMFS = {
6525
6525
-
ops_table: null,
6526
6526
-
mount: function(mount) {
6527
6527
-
return MEMFS.createNode(null, "/", 16384 | 511, 0);
6528
6528
-
},
6529
6529
-
createNode: function(parent, name, mode, dev) {
6530
6530
-
if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
6531
6531
-
throw new FS.ErrnoError(63);
6532
6532
-
}
6533
6533
-
if (!MEMFS.ops_table) {
6534
6534
-
MEMFS.ops_table = {
6535
6535
-
dir: {
6536
6536
-
node: {
6537
6537
-
getattr: MEMFS.node_ops.getattr,
6538
6538
-
setattr: MEMFS.node_ops.setattr,
6539
6539
-
lookup: MEMFS.node_ops.lookup,
6540
6540
-
mknod: MEMFS.node_ops.mknod,
6541
6541
-
rename: MEMFS.node_ops.rename,
6542
6542
-
unlink: MEMFS.node_ops.unlink,
6543
6543
-
rmdir: MEMFS.node_ops.rmdir,
6544
6544
-
readdir: MEMFS.node_ops.readdir,
6545
6545
-
symlink: MEMFS.node_ops.symlink
6546
6546
-
},
6547
6547
-
stream: { llseek: MEMFS.stream_ops.llseek }
6548
6548
-
},
6549
6549
-
file: {
6550
6550
-
node: {
6551
6551
-
getattr: MEMFS.node_ops.getattr,
6552
6552
-
setattr: MEMFS.node_ops.setattr
6553
6553
-
},
6554
6554
-
stream: {
6555
6555
-
llseek: MEMFS.stream_ops.llseek,
6556
6556
-
read: MEMFS.stream_ops.read,
6557
6557
-
write: MEMFS.stream_ops.write,
6558
6558
-
allocate: MEMFS.stream_ops.allocate,
6559
6559
-
mmap: MEMFS.stream_ops.mmap,
6560
6560
-
msync: MEMFS.stream_ops.msync
6561
6561
-
}
6562
6562
-
},
6563
6563
-
link: {
6564
6564
-
node: {
6565
6565
-
getattr: MEMFS.node_ops.getattr,
6566
6566
-
setattr: MEMFS.node_ops.setattr,
6567
6567
-
readlink: MEMFS.node_ops.readlink
6568
6568
-
},
6569
6569
-
stream: {}
6570
6570
-
},
6571
6571
-
chrdev: {
6572
6572
-
node: {
6573
6573
-
getattr: MEMFS.node_ops.getattr,
6574
6574
-
setattr: MEMFS.node_ops.setattr
6575
6575
-
},
6576
6576
-
stream: FS.chrdev_stream_ops
6577
6577
-
}
6578
6578
-
};
6579
6579
-
}
6580
6580
-
var node = FS.createNode(parent, name, mode, dev);
6581
6581
-
if (FS.isDir(node.mode)) {
6582
6582
-
node.node_ops = MEMFS.ops_table.dir.node;
6583
6583
-
node.stream_ops = MEMFS.ops_table.dir.stream;
6584
6584
-
node.contents = {};
6585
6585
-
} else if (FS.isFile(node.mode)) {
6586
6586
-
node.node_ops = MEMFS.ops_table.file.node;
6587
6587
-
node.stream_ops = MEMFS.ops_table.file.stream;
6588
6588
-
node.usedBytes = 0;
6589
6589
-
node.contents = null;
6590
6590
-
} else if (FS.isLink(node.mode)) {
6591
6591
-
node.node_ops = MEMFS.ops_table.link.node;
6592
6592
-
node.stream_ops = MEMFS.ops_table.link.stream;
6593
6593
-
} else if (FS.isChrdev(node.mode)) {
6594
6594
-
node.node_ops = MEMFS.ops_table.chrdev.node;
6595
6595
-
node.stream_ops = MEMFS.ops_table.chrdev.stream;
6596
6596
-
}
6597
6597
-
node.timestamp = Date.now();
6598
6598
-
if (parent) {
6599
6599
-
parent.contents[name] = node;
6600
6600
-
parent.timestamp = node.timestamp;
6601
6601
-
}
6602
6602
-
return node;
6603
6603
-
},
6604
6604
-
getFileDataAsTypedArray: function(node) {
6605
6605
-
if (!node.contents)
6606
6606
-
return new Uint8Array(0);
6607
6607
-
if (node.contents.subarray)
6608
6608
-
return node.contents.subarray(0, node.usedBytes);
6609
6609
-
return new Uint8Array(node.contents);
6610
6610
-
},
6611
6611
-
expandFileStorage: function(node, newCapacity) {
6612
6612
-
var prevCapacity = node.contents ? node.contents.length : 0;
6613
6613
-
if (prevCapacity >= newCapacity)
6614
6614
-
return;
6615
6615
-
var CAPACITY_DOUBLING_MAX = 1024 * 1024;
6616
6616
-
newCapacity = Math.max(
6617
6617
-
newCapacity,
6618
6618
-
prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0
6619
6619
-
);
6620
6620
-
if (prevCapacity != 0)
6621
6621
-
newCapacity = Math.max(newCapacity, 256);
6622
6622
-
var oldContents = node.contents;
6623
6623
-
node.contents = new Uint8Array(newCapacity);
6624
6624
-
if (node.usedBytes > 0)
6625
6625
-
node.contents.set(oldContents.subarray(0, node.usedBytes), 0);
6626
6626
-
},
6627
6627
-
resizeFileStorage: function(node, newSize) {
6628
6628
-
if (node.usedBytes == newSize)
6629
6629
-
return;
6630
6630
-
if (newSize == 0) {
6631
6631
-
node.contents = null;
6632
6632
-
node.usedBytes = 0;
6633
6633
-
} else {
6634
6634
-
var oldContents = node.contents;
6635
6635
-
node.contents = new Uint8Array(newSize);
6636
6636
-
if (oldContents) {
6637
6637
-
node.contents.set(
6638
6638
-
oldContents.subarray(0, Math.min(newSize, node.usedBytes))
6639
6639
-
);
6640
6640
-
}
6641
6641
-
node.usedBytes = newSize;
6642
6642
-
}
6643
6643
-
},
6644
6644
-
node_ops: {
6645
6645
-
getattr: function(node) {
6646
6646
-
var attr = {};
6647
6647
-
attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
6648
6648
-
attr.ino = node.id;
6649
6649
-
attr.mode = node.mode;
6650
6650
-
attr.nlink = 1;
6651
6651
-
attr.uid = 0;
6652
6652
-
attr.gid = 0;
6653
6653
-
attr.rdev = node.rdev;
6654
6654
-
if (FS.isDir(node.mode)) {
6655
6655
-
attr.size = 4096;
6656
6656
-
} else if (FS.isFile(node.mode)) {
6657
6657
-
attr.size = node.usedBytes;
6658
6658
-
} else if (FS.isLink(node.mode)) {
6659
6659
-
attr.size = node.link.length;
6660
6660
-
} else {
6661
6661
-
attr.size = 0;
6662
6662
-
}
6663
6663
-
attr.atime = new Date(node.timestamp);
6664
6664
-
attr.mtime = new Date(node.timestamp);
6665
6665
-
attr.ctime = new Date(node.timestamp);
6666
6666
-
attr.blksize = 4096;
6667
6667
-
attr.blocks = Math.ceil(attr.size / attr.blksize);
6668
6668
-
return attr;
6669
6669
-
},
6670
6670
-
setattr: function(node, attr) {
6671
6671
-
if (attr.mode !== void 0) {
6672
6672
-
node.mode = attr.mode;
6673
6673
-
}
6674
6674
-
if (attr.timestamp !== void 0) {
6675
6675
-
node.timestamp = attr.timestamp;
6676
6676
-
}
6677
6677
-
if (attr.size !== void 0) {
6678
6678
-
MEMFS.resizeFileStorage(node, attr.size);
6679
6679
-
}
6680
6680
-
},
6681
6681
-
lookup: function(parent, name) {
6682
6682
-
throw FS.genericErrors[44];
6683
6683
-
},
6684
6684
-
mknod: function(parent, name, mode, dev) {
6685
6685
-
return MEMFS.createNode(parent, name, mode, dev);
6686
6686
-
},
6687
6687
-
rename: function(old_node, new_dir, new_name) {
6688
6688
-
if (FS.isDir(old_node.mode)) {
6689
6689
-
var new_node;
6690
6690
-
try {
6691
6691
-
new_node = FS.lookupNode(new_dir, new_name);
6692
6692
-
} catch (e) {
6693
6693
-
}
6694
6694
-
if (new_node) {
6695
6695
-
for (var i in new_node.contents) {
6696
6696
-
throw new FS.ErrnoError(55);
6697
6697
-
}
6698
6698
-
}
6699
6699
-
}
6700
6700
-
delete old_node.parent.contents[old_node.name];
6701
6701
-
old_node.parent.timestamp = Date.now();
6702
6702
-
old_node.name = new_name;
6703
6703
-
new_dir.contents[new_name] = old_node;
6704
6704
-
new_dir.timestamp = old_node.parent.timestamp;
6705
6705
-
old_node.parent = new_dir;
6706
6706
-
},
6707
6707
-
unlink: function(parent, name) {
6708
6708
-
delete parent.contents[name];
6709
6709
-
parent.timestamp = Date.now();
6710
6710
-
},
6711
6711
-
rmdir: function(parent, name) {
6712
6712
-
var node = FS.lookupNode(parent, name);
6713
6713
-
for (var i in node.contents) {
6714
6714
-
throw new FS.ErrnoError(55);
6715
6715
-
}
6716
6716
-
delete parent.contents[name];
6717
6717
-
parent.timestamp = Date.now();
6718
6718
-
},
6719
6719
-
readdir: function(node) {
6720
6720
-
var entries = [".", ".."];
6721
6721
-
for (var key2 in node.contents) {
6722
6722
-
if (!node.contents.hasOwnProperty(key2)) {
6723
6723
-
continue;
6724
6724
-
}
6725
6725
-
entries.push(key2);
6726
6726
-
}
6727
6727
-
return entries;
6728
6728
-
},
6729
6729
-
symlink: function(parent, newname, oldpath) {
6730
6730
-
var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);
6731
6731
-
node.link = oldpath;
6732
6732
-
return node;
6733
6733
-
},
6734
6734
-
readlink: function(node) {
6735
6735
-
if (!FS.isLink(node.mode)) {
6736
6736
-
throw new FS.ErrnoError(28);
6737
6737
-
}
6738
6738
-
return node.link;
6739
6739
-
}
6740
6740
-
},
6741
6741
-
stream_ops: {
6742
6742
-
read: function(stream, buffer2, offset, length, position) {
6743
6743
-
var contents = stream.node.contents;
6744
6744
-
if (position >= stream.node.usedBytes)
6745
6745
-
return 0;
6746
6746
-
var size = Math.min(stream.node.usedBytes - position, length);
6747
6747
-
if (size > 8 && contents.subarray) {
6748
6748
-
buffer2.set(contents.subarray(position, position + size), offset);
6749
6749
-
} else {
6750
6750
-
for (var i = 0; i < size; i++)
6751
6751
-
buffer2[offset + i] = contents[position + i];
6752
6752
-
}
6753
6753
-
return size;
6754
6754
-
},
6755
6755
-
write: function(stream, buffer2, offset, length, position, canOwn) {
6756
6756
-
if (buffer2.buffer === HEAP8.buffer) {
6757
6757
-
canOwn = false;
6758
6758
-
}
6759
6759
-
if (!length)
6760
6760
-
return 0;
6761
6761
-
var node = stream.node;
6762
6762
-
node.timestamp = Date.now();
6763
6763
-
if (buffer2.subarray && (!node.contents || node.contents.subarray)) {
6764
6764
-
if (canOwn) {
6765
6765
-
node.contents = buffer2.subarray(offset, offset + length);
6766
6766
-
node.usedBytes = length;
6767
6767
-
return length;
6768
6768
-
} else if (node.usedBytes === 0 && position === 0) {
6769
6769
-
node.contents = buffer2.slice(offset, offset + length);
6770
6770
-
node.usedBytes = length;
6771
6771
-
return length;
6772
6772
-
} else if (position + length <= node.usedBytes) {
6773
6773
-
node.contents.set(
6774
6774
-
buffer2.subarray(offset, offset + length),
6775
6775
-
position
6776
6776
-
);
6777
6777
-
return length;
6778
6778
-
}
6779
6779
-
}
6780
6780
-
MEMFS.expandFileStorage(node, position + length);
6781
6781
-
if (node.contents.subarray && buffer2.subarray) {
6782
6782
-
node.contents.set(
6783
6783
-
buffer2.subarray(offset, offset + length),
6784
6784
-
position
6785
6785
-
);
6786
6786
-
} else {
6787
6787
-
for (var i = 0; i < length; i++) {
6788
6788
-
node.contents[position + i] = buffer2[offset + i];
6789
6789
-
}
6790
6790
-
}
6791
6791
-
node.usedBytes = Math.max(node.usedBytes, position + length);
6792
6792
-
return length;
6793
6793
-
},
6794
6794
-
llseek: function(stream, offset, whence) {
6795
6795
-
var position = offset;
6796
6796
-
if (whence === 1) {
6797
6797
-
position += stream.position;
6798
6798
-
} else if (whence === 2) {
6799
6799
-
if (FS.isFile(stream.node.mode)) {
6800
6800
-
position += stream.node.usedBytes;
6801
6801
-
}
6802
6802
-
}
6803
6803
-
if (position < 0) {
6804
6804
-
throw new FS.ErrnoError(28);
6805
6805
-
}
6806
6806
-
return position;
6807
6807
-
},
6808
6808
-
allocate: function(stream, offset, length) {
6809
6809
-
MEMFS.expandFileStorage(stream.node, offset + length);
6810
6810
-
stream.node.usedBytes = Math.max(
6811
6811
-
stream.node.usedBytes,
6812
6812
-
offset + length
6813
6813
-
);
6814
6814
-
},
6815
6815
-
mmap: function(stream, address, length, position, prot, flags) {
6816
6816
-
if (address !== 0) {
6817
6817
-
throw new FS.ErrnoError(28);
6818
6818
-
}
6819
6819
-
if (!FS.isFile(stream.node.mode)) {
6820
6820
-
throw new FS.ErrnoError(43);
6821
6821
-
}
6822
6822
-
var ptr;
6823
6823
-
var allocated;
6824
6824
-
var contents = stream.node.contents;
6825
6825
-
if (!(flags & 2) && contents.buffer === buffer) {
6826
6826
-
allocated = false;
6827
6827
-
ptr = contents.byteOffset;
6828
6828
-
} else {
6829
6829
-
if (position > 0 || position + length < contents.length) {
6830
6830
-
if (contents.subarray) {
6831
6831
-
contents = contents.subarray(position, position + length);
6832
6832
-
} else {
6833
6833
-
contents = Array.prototype.slice.call(
6834
6834
-
contents,
6835
6835
-
position,
6836
6836
-
position + length
6837
6837
-
);
6838
6838
-
}
6839
6839
-
}
6840
6840
-
allocated = true;
6841
6841
-
ptr = mmapAlloc(length);
6842
6842
-
if (!ptr) {
6843
6843
-
throw new FS.ErrnoError(48);
6844
6844
-
}
6845
6845
-
HEAP8.set(contents, ptr);
6846
6846
-
}
6847
6847
-
return { ptr, allocated };
6848
6848
-
},
6849
6849
-
msync: function(stream, buffer2, offset, length, mmapFlags) {
6850
6850
-
if (!FS.isFile(stream.node.mode)) {
6851
6851
-
throw new FS.ErrnoError(43);
6852
6852
-
}
6853
6853
-
if (mmapFlags & 2) {
6854
6854
-
return 0;
6855
6855
-
}
6856
6856
-
MEMFS.stream_ops.write(
6857
6857
-
stream,
6858
6858
-
buffer2,
6859
6859
-
0,
6860
6860
-
length,
6861
6861
-
offset,
6862
6862
-
false
6863
6863
-
);
6864
6864
-
return 0;
6865
6865
-
}
6866
6866
-
}
6867
6867
-
};
6868
6868
-
var ERRNO_CODES = {
6869
6869
-
EPERM: 63,
6870
6870
-
ENOENT: 44,
6871
6871
-
ESRCH: 71,
6872
6872
-
EINTR: 27,
6873
6873
-
EIO: 29,
6874
6874
-
ENXIO: 60,
6875
6875
-
E2BIG: 1,
6876
6876
-
ENOEXEC: 45,
6877
6877
-
EBADF: 8,
6878
6878
-
ECHILD: 12,
6879
6879
-
EAGAIN: 6,
6880
6880
-
EWOULDBLOCK: 6,
6881
6881
-
ENOMEM: 48,
6882
6882
-
EACCES: 2,
6883
6883
-
EFAULT: 21,
6884
6884
-
ENOTBLK: 105,
6885
6885
-
EBUSY: 10,
6886
6886
-
EEXIST: 20,
6887
6887
-
EXDEV: 75,
6888
6888
-
ENODEV: 43,
6889
6889
-
ENOTDIR: 54,
6890
6890
-
EISDIR: 31,
6891
6891
-
EINVAL: 28,
6892
6892
-
ENFILE: 41,
6893
6893
-
EMFILE: 33,
6894
6894
-
ENOTTY: 59,
6895
6895
-
ETXTBSY: 74,
6896
6896
-
EFBIG: 22,
6897
6897
-
ENOSPC: 51,
6898
6898
-
ESPIPE: 70,
6899
6899
-
EROFS: 69,
6900
6900
-
EMLINK: 34,
6901
6901
-
EPIPE: 64,
6902
6902
-
EDOM: 18,
6903
6903
-
ERANGE: 68,
6904
6904
-
ENOMSG: 49,
6905
6905
-
EIDRM: 24,
6906
6906
-
ECHRNG: 106,
6907
6907
-
EL2NSYNC: 156,
6908
6908
-
EL3HLT: 107,
6909
6909
-
EL3RST: 108,
6910
6910
-
ELNRNG: 109,
6911
6911
-
EUNATCH: 110,
6912
6912
-
ENOCSI: 111,
6913
6913
-
EL2HLT: 112,
6914
6914
-
EDEADLK: 16,
6915
6915
-
ENOLCK: 46,
6916
6916
-
EBADE: 113,
6917
6917
-
EBADR: 114,
6918
6918
-
EXFULL: 115,
6919
6919
-
ENOANO: 104,
6920
6920
-
EBADRQC: 103,
6921
6921
-
EBADSLT: 102,
6922
6922
-
EDEADLOCK: 16,
6923
6923
-
EBFONT: 101,
6924
6924
-
ENOSTR: 100,
6925
6925
-
ENODATA: 116,
6926
6926
-
ETIME: 117,
6927
6927
-
ENOSR: 118,
6928
6928
-
ENONET: 119,
6929
6929
-
ENOPKG: 120,
6930
6930
-
EREMOTE: 121,
6931
6931
-
ENOLINK: 47,
6932
6932
-
EADV: 122,
6933
6933
-
ESRMNT: 123,
6934
6934
-
ECOMM: 124,
6935
6935
-
EPROTO: 65,
6936
6936
-
EMULTIHOP: 36,
6937
6937
-
EDOTDOT: 125,
6938
6938
-
EBADMSG: 9,
6939
6939
-
ENOTUNIQ: 126,
6940
6940
-
EBADFD: 127,
6941
6941
-
EREMCHG: 128,
6942
6942
-
ELIBACC: 129,
6943
6943
-
ELIBBAD: 130,
6944
6944
-
ELIBSCN: 131,
6945
6945
-
ELIBMAX: 132,
6946
6946
-
ELIBEXEC: 133,
6947
6947
-
ENOSYS: 52,
6948
6948
-
ENOTEMPTY: 55,
6949
6949
-
ENAMETOOLONG: 37,
6950
6950
-
ELOOP: 32,
6951
6951
-
EOPNOTSUPP: 138,
6952
6952
-
EPFNOSUPPORT: 139,
6953
6953
-
ECONNRESET: 15,
6954
6954
-
ENOBUFS: 42,
6955
6955
-
EAFNOSUPPORT: 5,
6956
6956
-
EPROTOTYPE: 67,
6957
6957
-
ENOTSOCK: 57,
6958
6958
-
ENOPROTOOPT: 50,
6959
6959
-
ESHUTDOWN: 140,
6960
6960
-
ECONNREFUSED: 14,
6961
6961
-
EADDRINUSE: 3,
6962
6962
-
ECONNABORTED: 13,
6963
6963
-
ENETUNREACH: 40,
6964
6964
-
ENETDOWN: 38,
6965
6965
-
ETIMEDOUT: 73,
6966
6966
-
EHOSTDOWN: 142,
6967
6967
-
EHOSTUNREACH: 23,
6968
6968
-
EINPROGRESS: 26,
6969
6969
-
EALREADY: 7,
6970
6970
-
EDESTADDRREQ: 17,
6971
6971
-
EMSGSIZE: 35,
6972
6972
-
EPROTONOSUPPORT: 66,
6973
6973
-
ESOCKTNOSUPPORT: 137,
6974
6974
-
EADDRNOTAVAIL: 4,
6975
6975
-
ENETRESET: 39,
6976
6976
-
EISCONN: 30,
6977
6977
-
ENOTCONN: 53,
6978
6978
-
ETOOMANYREFS: 141,
6979
6979
-
EUSERS: 136,
6980
6980
-
EDQUOT: 19,
6981
6981
-
ESTALE: 72,
6982
6982
-
ENOTSUP: 138,
6983
6983
-
ENOMEDIUM: 148,
6984
6984
-
EILSEQ: 25,
6985
6985
-
EOVERFLOW: 61,
6986
6986
-
ECANCELED: 11,
6987
6987
-
ENOTRECOVERABLE: 56,
6988
6988
-
EOWNERDEAD: 62,
6989
6989
-
ESTRPIPE: 135
6990
6990
-
};
6991
6991
-
var NODEFS = {
6992
6992
-
isWindows: false,
6993
6993
-
staticInit: function() {
6994
6994
-
NODEFS.isWindows = !!process.platform.match(/^win/);
6995
6995
-
var flags = { fs: fs.constants };
6996
6996
-
if (flags["fs"]) {
6997
6997
-
flags = flags["fs"];
6998
6998
-
}
6999
6999
-
NODEFS.flagsForNodeMap = {
7000
7000
-
1024: flags["O_APPEND"],
7001
7001
-
64: flags["O_CREAT"],
7002
7002
-
128: flags["O_EXCL"],
7003
7003
-
256: flags["O_NOCTTY"],
7004
7004
-
0: flags["O_RDONLY"],
7005
7005
-
2: flags["O_RDWR"],
7006
7006
-
4096: flags["O_SYNC"],
7007
7007
-
512: flags["O_TRUNC"],
7008
7008
-
1: flags["O_WRONLY"]
7009
7009
-
};
7010
7010
-
},
7011
7011
-
bufferFrom: function(arrayBuffer) {
7012
7012
-
return Buffer["alloc"] ? Buffer.from(arrayBuffer) : new Buffer(arrayBuffer);
7013
7013
-
},
7014
7014
-
convertNodeCode: function(e) {
7015
7015
-
var code = e.code;
7016
7016
-
return ERRNO_CODES[code];
7017
7017
-
},
7018
7018
-
mount: function(mount) {
7019
7019
-
return NODEFS.createNode(null, "/", NODEFS.getMode(mount.opts.root), 0);
7020
7020
-
},
7021
7021
-
createNode: function(parent, name, mode, dev) {
7022
7022
-
if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {
7023
7023
-
throw new FS.ErrnoError(28);
7024
7024
-
}
7025
7025
-
var node = FS.createNode(parent, name, mode);
7026
7026
-
node.node_ops = NODEFS.node_ops;
7027
7027
-
node.stream_ops = NODEFS.stream_ops;
7028
7028
-
return node;
7029
7029
-
},
7030
7030
-
getMode: function(path) {
7031
7031
-
var stat;
7032
7032
-
try {
7033
7033
-
stat = fs.lstatSync(path);
7034
7034
-
if (NODEFS.isWindows) {
7035
7035
-
stat.mode = stat.mode | (stat.mode & 292) >> 2;
7036
7036
-
}
7037
7037
-
} catch (e) {
7038
7038
-
if (!e.code)
7039
7039
-
throw e;
7040
7040
-
throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7041
7041
-
}
7042
7042
-
return stat.mode;
7043
7043
-
},
7044
7044
-
realPath: function(node) {
7045
7045
-
var parts = [];
7046
7046
-
while (node.parent !== node) {
7047
7047
-
parts.push(node.name);
7048
7048
-
node = node.parent;
7049
7049
-
}
7050
7050
-
parts.push(node.mount.opts.root);
7051
7051
-
parts.reverse();
7052
7052
-
return PATH.join.apply(null, parts);
7053
7053
-
},
7054
7054
-
flagsForNode: function(flags) {
7055
7055
-
flags &= ~2097152;
7056
7056
-
flags &= ~2048;
7057
7057
-
flags &= ~32768;
7058
7058
-
flags &= ~524288;
7059
7059
-
var newFlags = 0;
7060
7060
-
for (var k in NODEFS.flagsForNodeMap) {
7061
7061
-
if (flags & k) {
7062
7062
-
newFlags |= NODEFS.flagsForNodeMap[k];
7063
7063
-
flags ^= k;
7064
7064
-
}
7065
7065
-
}
7066
7066
-
if (!flags) {
7067
7067
-
return newFlags;
7068
7068
-
} else {
7069
7069
-
throw new FS.ErrnoError(28);
7070
7070
-
}
7071
7071
-
},
7072
7072
-
node_ops: {
7073
7073
-
getattr: function(node) {
7074
7074
-
var path = NODEFS.realPath(node);
7075
7075
-
var stat;
7076
7076
-
try {
7077
7077
-
stat = fs.lstatSync(path);
7078
7078
-
} catch (e) {
7079
7079
-
if (!e.code)
7080
7080
-
throw e;
7081
7081
-
throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7082
7082
-
}
7083
7083
-
if (NODEFS.isWindows && !stat.blksize) {
7084
7084
-
stat.blksize = 4096;
7085
7085
-
}
7086
7086
-
if (NODEFS.isWindows && !stat.blocks) {
7087
7087
-
stat.blocks = (stat.size + stat.blksize - 1) / stat.blksize | 0;
7088
7088
-
}
7089
7089
-
return {
7090
7090
-
dev: stat.dev,
7091
7091
-
ino: stat.ino,
7092
7092
-
mode: stat.mode,
7093
7093
-
nlink: stat.nlink,
7094
7094
-
uid: stat.uid,
7095
7095
-
gid: stat.gid,
7096
7096
-
rdev: stat.rdev,
7097
7097
-
size: stat.size,
7098
7098
-
atime: stat.atime,
7099
7099
-
mtime: stat.mtime,
7100
7100
-
ctime: stat.ctime,
7101
7101
-
blksize: stat.blksize,
7102
7102
-
blocks: stat.blocks
7103
7103
-
};
7104
7104
-
},
7105
7105
-
setattr: function(node, attr) {
7106
7106
-
var path = NODEFS.realPath(node);
7107
7107
-
try {
7108
7108
-
if (attr.mode !== void 0) {
7109
7109
-
fs.chmodSync(path, attr.mode);
7110
7110
-
node.mode = attr.mode;
7111
7111
-
}
7112
7112
-
if (attr.timestamp !== void 0) {
7113
7113
-
var date = new Date(attr.timestamp);
7114
7114
-
fs.utimesSync(path, date, date);
7115
7115
-
}
7116
7116
-
if (attr.size !== void 0) {
7117
7117
-
fs.truncateSync(path, attr.size);
7118
7118
-
}
7119
7119
-
} catch (e) {
7120
7120
-
if (!e.code)
7121
7121
-
throw e;
7122
7122
-
throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7123
7123
-
}
7124
7124
-
},
7125
7125
-
lookup: function(parent, name) {
7126
7126
-
var path = PATH.join2(NODEFS.realPath(parent), name);
7127
7127
-
var mode = NODEFS.getMode(path);
7128
7128
-
return NODEFS.createNode(parent, name, mode);
7129
7129
-
},
7130
7130
-
mknod: function(parent, name, mode, dev) {
7131
7131
-
var node = NODEFS.createNode(parent, name, mode, dev);
7132
7132
-
var path = NODEFS.realPath(node);
7133
7133
-
try {
7134
7134
-
if (FS.isDir(node.mode)) {
7135
7135
-
fs.mkdirSync(path, node.mode);
7136
7136
-
} else {
7137
7137
-
fs.writeFileSync(path, "", { mode: node.mode });
7138
7138
-
}
7139
7139
-
} catch (e) {
7140
7140
-
if (!e.code)
7141
7141
-
throw e;
7142
7142
-
throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7143
7143
-
}
7144
7144
-
return node;
7145
7145
-
},
7146
7146
-
rename: function(oldNode, newDir, newName) {
7147
7147
-
var oldPath = NODEFS.realPath(oldNode);
7148
7148
-
var newPath = PATH.join2(NODEFS.realPath(newDir), newName);
7149
7149
-
try {
7150
7150
-
fs.renameSync(oldPath, newPath);
7151
7151
-
} catch (e) {
7152
7152
-
if (!e.code)
7153
7153
-
throw e;
7154
7154
-
throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7155
7155
-
}
7156
7156
-
oldNode.name = newName;
7157
7157
-
},
7158
7158
-
unlink: function(parent, name) {
7159
7159
-
var path = PATH.join2(NODEFS.realPath(parent), name);
7160
7160
-
try {
7161
7161
-
fs.unlinkSync(path);
7162
7162
-
} catch (e) {
7163
7163
-
if (!e.code)
7164
7164
-
throw e;
7165
7165
-
throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7166
7166
-
}
7167
7167
-
},
7168
7168
-
rmdir: function(parent, name) {
7169
7169
-
var path = PATH.join2(NODEFS.realPath(parent), name);
7170
7170
-
try {
7171
7171
-
fs.rmdirSync(path);
7172
7172
-
} catch (e) {
7173
7173
-
if (!e.code)
7174
7174
-
throw e;
7175
7175
-
throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7176
7176
-
}
7177
7177
-
},
7178
7178
-
readdir: function(node) {
7179
7179
-
var path = NODEFS.realPath(node);
7180
7180
-
try {
7181
7181
-
return fs.readdirSync(path);
7182
7182
-
} catch (e) {
7183
7183
-
if (!e.code)
7184
7184
-
throw e;
7185
7185
-
throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7186
7186
-
}
7187
7187
-
},
7188
7188
-
symlink: function(parent, newName, oldPath) {
7189
7189
-
var newPath = PATH.join2(NODEFS.realPath(parent), newName);
7190
7190
-
try {
7191
7191
-
fs.symlinkSync(oldPath, newPath);
7192
7192
-
} catch (e) {
7193
7193
-
if (!e.code)
7194
7194
-
throw e;
7195
7195
-
throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7196
7196
-
}
7197
7197
-
},
7198
7198
-
readlink: function(node) {
7199
7199
-
var path = NODEFS.realPath(node);
7200
7200
-
try {
7201
7201
-
path = fs.readlinkSync(path);
7202
7202
-
path = NODEJS_PATH.relative(
7203
7203
-
NODEJS_PATH.resolve(node.mount.opts.root),
7204
7204
-
path
7205
7205
-
);
7206
7206
-
return path;
7207
7207
-
} catch (e) {
7208
7208
-
if (!e.code)
7209
7209
-
throw e;
7210
7210
-
throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7211
7211
-
}
7212
7212
-
}
7213
7213
-
},
7214
7214
-
stream_ops: {
7215
7215
-
open: function(stream) {
7216
7216
-
var path = NODEFS.realPath(stream.node);
7217
7217
-
try {
7218
7218
-
if (FS.isFile(stream.node.mode)) {
7219
7219
-
stream.nfd = fs.openSync(path, NODEFS.flagsForNode(stream.flags));
7220
7220
-
}
7221
7221
-
} catch (e) {
7222
7222
-
if (!e.code)
7223
7223
-
throw e;
7224
7224
-
throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7225
7225
-
}
7226
7226
-
},
7227
7227
-
close: function(stream) {
7228
7228
-
try {
7229
7229
-
if (FS.isFile(stream.node.mode) && stream.nfd) {
7230
7230
-
fs.closeSync(stream.nfd);
7231
7231
-
}
7232
7232
-
} catch (e) {
7233
7233
-
if (!e.code)
7234
7234
-
throw e;
7235
7235
-
throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7236
7236
-
}
7237
7237
-
},
7238
7238
-
read: function(stream, buffer2, offset, length, position) {
7239
7239
-
if (length === 0)
7240
7240
-
return 0;
7241
7241
-
try {
7242
7242
-
return fs.readSync(
7243
7243
-
stream.nfd,
7244
7244
-
NODEFS.bufferFrom(buffer2.buffer),
7245
7245
-
offset,
7246
7246
-
length,
7247
7247
-
position
7248
7248
-
);
7249
7249
-
} catch (e) {
7250
7250
-
throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7251
7251
-
}
7252
7252
-
},
7253
7253
-
write: function(stream, buffer2, offset, length, position) {
7254
7254
-
try {
7255
7255
-
return fs.writeSync(
7256
7256
-
stream.nfd,
7257
7257
-
NODEFS.bufferFrom(buffer2.buffer),
7258
7258
-
offset,
7259
7259
-
length,
7260
7260
-
position
7261
7261
-
);
7262
7262
-
} catch (e) {
7263
7263
-
throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7264
7264
-
}
7265
7265
-
},
7266
7266
-
llseek: function(stream, offset, whence) {
7267
7267
-
var position = offset;
7268
7268
-
if (whence === 1) {
7269
7269
-
position += stream.position;
7270
7270
-
} else if (whence === 2) {
7271
7271
-
if (FS.isFile(stream.node.mode)) {
7272
7272
-
try {
7273
7273
-
var stat = fs.fstatSync(stream.nfd);
7274
7274
-
position += stat.size;
7275
7275
-
} catch (e) {
7276
7276
-
throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7277
7277
-
}
7278
7278
-
}
7279
7279
-
}
7280
7280
-
if (position < 0) {
7281
7281
-
throw new FS.ErrnoError(28);
7282
7282
-
}
7283
7283
-
return position;
7284
7284
-
},
7285
7285
-
mmap: function(stream, address, length, position, prot, flags) {
7286
7286
-
if (address !== 0) {
7287
7287
-
throw new FS.ErrnoError(28);
7288
7288
-
}
7289
7289
-
if (!FS.isFile(stream.node.mode)) {
7290
7290
-
throw new FS.ErrnoError(43);
7291
7291
-
}
7292
7292
-
var ptr = mmapAlloc(length);
7293
7293
-
NODEFS.stream_ops.read(stream, HEAP8, ptr, length, position);
7294
7294
-
return { ptr, allocated: true };
7295
7295
-
},
7296
7296
-
msync: function(stream, buffer2, offset, length, mmapFlags) {
7297
7297
-
if (!FS.isFile(stream.node.mode)) {
7298
7298
-
throw new FS.ErrnoError(43);
7299
7299
-
}
7300
7300
-
if (mmapFlags & 2) {
7301
7301
-
return 0;
7302
7302
-
}
7303
7303
-
NODEFS.stream_ops.write(
7304
7304
-
stream,
7305
7305
-
buffer2,
7306
7306
-
0,
7307
7307
-
length,
7308
7308
-
offset,
7309
7309
-
false
7310
7310
-
);
7311
7311
-
return 0;
7312
7312
-
}
7313
7313
-
}
7314
7314
-
};
7315
7315
-
var NODERAWFS = {
7316
7316
-
lookupPath: function(path) {
7317
7317
-
return { path, node: { mode: NODEFS.getMode(path) } };
7318
7318
-
},
7319
7319
-
createStandardStreams: function() {
7320
7320
-
FS.streams[0] = {
7321
7321
-
fd: 0,
7322
7322
-
nfd: 0,
7323
7323
-
position: 0,
7324
7324
-
path: "",
7325
7325
-
flags: 0,
7326
7326
-
tty: true,
7327
7327
-
seekable: false
7328
7328
-
};
7329
7329
-
for (var i = 1; i < 3; i++) {
7330
7330
-
FS.streams[i] = {
7331
7331
-
fd: i,
7332
7332
-
nfd: i,
7333
7333
-
position: 0,
7334
7334
-
path: "",
7335
7335
-
flags: 577,
7336
7336
-
tty: true,
7337
7337
-
seekable: false
7338
7338
-
};
7339
7339
-
}
7340
7340
-
},
7341
7341
-
cwd: function() {
7342
7342
-
return process.cwd();
7343
7343
-
},
7344
7344
-
chdir: function() {
7345
7345
-
process.chdir.apply(void 0, arguments);
7346
7346
-
},
7347
7347
-
mknod: function(path, mode) {
7348
7348
-
if (FS.isDir(path)) {
7349
7349
-
fs.mkdirSync(path, mode);
7350
7350
-
} else {
7351
7351
-
fs.writeFileSync(path, "", { mode });
7352
7352
-
}
7353
7353
-
},
7354
7354
-
mkdir: function() {
7355
7355
-
fs.mkdirSync.apply(void 0, arguments);
7356
7356
-
},
7357
7357
-
symlink: function() {
7358
7358
-
fs.symlinkSync.apply(void 0, arguments);
7359
7359
-
},
7360
7360
-
rename: function() {
7361
7361
-
fs.renameSync.apply(void 0, arguments);
7362
7362
-
},
7363
7363
-
rmdir: function() {
7364
7364
-
fs.rmdirSync.apply(void 0, arguments);
7365
7365
-
},
7366
7366
-
readdir: function() {
7367
7367
-
fs.readdirSync.apply(void 0, arguments);
7368
7368
-
},
7369
7369
-
unlink: function() {
7370
7370
-
fs.unlinkSync.apply(void 0, arguments);
7371
7371
-
},
7372
7372
-
readlink: function() {
7373
7373
-
return fs.readlinkSync.apply(void 0, arguments);
7374
7374
-
},
7375
7375
-
stat: function() {
7376
7376
-
return fs.statSync.apply(void 0, arguments);
7377
7377
-
},
7378
7378
-
lstat: function() {
7379
7379
-
return fs.lstatSync.apply(void 0, arguments);
7380
7380
-
},
7381
7381
-
chmod: function() {
7382
7382
-
fs.chmodSync.apply(void 0, arguments);
7383
7383
-
},
7384
7384
-
fchmod: function() {
7385
7385
-
fs.fchmodSync.apply(void 0, arguments);
7386
7386
-
},
7387
7387
-
chown: function() {
7388
7388
-
fs.chownSync.apply(void 0, arguments);
7389
7389
-
},
7390
7390
-
fchown: function() {
7391
7391
-
fs.fchownSync.apply(void 0, arguments);
7392
7392
-
},
7393
7393
-
truncate: function() {
7394
7394
-
fs.truncateSync.apply(void 0, arguments);
7395
7395
-
},
7396
7396
-
ftruncate: function(fd, len) {
7397
7397
-
if (len < 0) {
7398
7398
-
throw new FS.ErrnoError(28);
7399
7399
-
}
7400
7400
-
fs.ftruncateSync.apply(void 0, arguments);
7401
7401
-
},
7402
7402
-
utime: function() {
7403
7403
-
fs.utimesSync.apply(void 0, arguments);
7404
7404
-
},
7405
7405
-
open: function(path, flags, mode, suggestFD) {
7406
7406
-
if (typeof flags === "string") {
7407
7407
-
flags = VFS.modeStringToFlags(flags);
7408
7408
-
}
7409
7409
-
var nfd = fs.openSync(path, NODEFS.flagsForNode(flags), mode);
7410
7410
-
var fd = suggestFD != null ? suggestFD : FS.nextfd(nfd);
7411
7411
-
var stream = {
7412
7412
-
fd,
7413
7413
-
nfd,
7414
7414
-
position: 0,
7415
7415
-
path,
7416
7416
-
flags,
7417
7417
-
seekable: true
7418
7418
-
};
7419
7419
-
FS.streams[fd] = stream;
7420
7420
-
return stream;
7421
7421
-
},
7422
7422
-
close: function(stream) {
7423
7423
-
if (!stream.stream_ops) {
7424
7424
-
fs.closeSync(stream.nfd);
7425
7425
-
}
7426
7426
-
FS.closeStream(stream.fd);
7427
7427
-
},
7428
7428
-
llseek: function(stream, offset, whence) {
7429
7429
-
if (stream.stream_ops) {
7430
7430
-
return VFS.llseek(stream, offset, whence);
7431
7431
-
}
7432
7432
-
var position = offset;
7433
7433
-
if (whence === 1) {
7434
7434
-
position += stream.position;
7435
7435
-
} else if (whence === 2) {
7436
7436
-
position += fs.fstatSync(stream.nfd).size;
7437
7437
-
} else if (whence !== 0) {
7438
7438
-
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
7439
7439
-
}
7440
7440
-
if (position < 0) {
7441
7441
-
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
7442
7442
-
}
7443
7443
-
stream.position = position;
7444
7444
-
return position;
7445
7445
-
},
7446
7446
-
read: function(stream, buffer2, offset, length, position) {
7447
7447
-
if (stream.stream_ops) {
7448
7448
-
return VFS.read(stream, buffer2, offset, length, position);
7449
7449
-
}
7450
7450
-
var seeking = typeof position !== "undefined";
7451
7451
-
if (!seeking && stream.seekable)
7452
7452
-
position = stream.position;
7453
7453
-
var bytesRead = fs.readSync(
7454
7454
-
stream.nfd,
7455
7455
-
NODEFS.bufferFrom(buffer2.buffer),
7456
7456
-
offset,
7457
7457
-
length,
7458
7458
-
position
7459
7459
-
);
7460
7460
-
if (!seeking)
7461
7461
-
stream.position += bytesRead;
7462
7462
-
return bytesRead;
7463
7463
-
},
7464
7464
-
write: function(stream, buffer2, offset, length, position) {
7465
7465
-
if (stream.stream_ops) {
7466
7466
-
return VFS.write(stream, buffer2, offset, length, position);
7467
7467
-
}
7468
7468
-
if (stream.flags & +"1024") {
7469
7469
-
FS.llseek(stream, 0, +"2");
7470
7470
-
}
7471
7471
-
var seeking = typeof position !== "undefined";
7472
7472
-
if (!seeking && stream.seekable)
7473
7473
-
position = stream.position;
7474
7474
-
var bytesWritten = fs.writeSync(
7475
7475
-
stream.nfd,
7476
7476
-
NODEFS.bufferFrom(buffer2.buffer),
7477
7477
-
offset,
7478
7478
-
length,
7479
7479
-
position
7480
7480
-
);
7481
7481
-
if (!seeking)
7482
7482
-
stream.position += bytesWritten;
7483
7483
-
return bytesWritten;
7484
7484
-
},
7485
7485
-
allocate: function() {
7486
7486
-
throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
7487
7487
-
},
7488
7488
-
mmap: function(stream, address, length, position, prot, flags) {
7489
7489
-
if (stream.stream_ops) {
7490
7490
-
return VFS.mmap(stream, address, length, position, prot, flags);
7491
7491
-
}
7492
7492
-
if (address !== 0) {
7493
7493
-
throw new FS.ErrnoError(28);
7494
7494
-
}
7495
7495
-
var ptr = mmapAlloc(length);
7496
7496
-
FS.read(stream, HEAP8, ptr, length, position);
7497
7497
-
return { ptr, allocated: true };
7498
7498
-
},
7499
7499
-
msync: function(stream, buffer2, offset, length, mmapFlags) {
7500
7500
-
if (stream.stream_ops) {
7501
7501
-
return VFS.msync(stream, buffer2, offset, length, mmapFlags);
7502
7502
-
}
7503
7503
-
if (mmapFlags & 2) {
7504
7504
-
return 0;
7505
7505
-
}
7506
7506
-
FS.write(stream, buffer2, 0, length, offset);
7507
7507
-
return 0;
7508
7508
-
},
7509
7509
-
munmap: function() {
7510
7510
-
return 0;
7511
7511
-
},
7512
7512
-
ioctl: function() {
7513
7513
-
throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);
7514
7514
-
}
7515
7515
-
};
7516
7516
-
var FS = {
7517
7517
-
root: null,
7518
7518
-
mounts: [],
7519
7519
-
devices: {},
7520
7520
-
streams: [],
7521
7521
-
nextInode: 1,
7522
7522
-
nameTable: null,
7523
7523
-
currentPath: "/",
7524
7524
-
initialized: false,
7525
7525
-
ignorePermissions: true,
7526
7526
-
trackingDelegate: {},
7527
7527
-
tracking: { openFlags: { READ: 1, WRITE: 2 } },
7528
7528
-
ErrnoError: null,
7529
7529
-
genericErrors: {},
7530
7530
-
filesystems: null,
7531
7531
-
syncFSRequests: 0,
7532
7532
-
lookupPath: function(path, opts) {
7533
7533
-
path = PATH_FS.resolve(FS.cwd(), path);
7534
7534
-
opts = opts || {};
7535
7535
-
if (!path)
7536
7536
-
return { path: "", node: null };
7537
7537
-
var defaults = { follow_mount: true, recurse_count: 0 };
7538
7538
-
for (var key2 in defaults) {
7539
7539
-
if (opts[key2] === void 0) {
7540
7540
-
opts[key2] = defaults[key2];
7541
7541
-
}
7542
7542
-
}
7543
7543
-
if (opts.recurse_count > 8) {
7544
7544
-
throw new FS.ErrnoError(32);
7545
7545
-
}
7546
7546
-
var parts = PATH.normalizeArray(
7547
7547
-
path.split("/").filter(function(p) {
7548
7548
-
return !!p;
7549
7549
-
}),
7550
7550
-
false
7551
7551
-
);
7552
7552
-
var current = FS.root;
7553
7553
-
var current_path = "/";
7554
7554
-
for (var i = 0; i < parts.length; i++) {
7555
7555
-
var islast = i === parts.length - 1;
7556
7556
-
if (islast && opts.parent) {
7557
7557
-
break;
7558
7558
-
}
7559
7559
-
current = FS.lookupNode(current, parts[i]);
7560
7560
-
current_path = PATH.join2(current_path, parts[i]);
7561
7561
-
if (FS.isMountpoint(current)) {
7562
7562
-
if (!islast || islast && opts.follow_mount) {
7563
7563
-
current = current.mounted.root;
7564
7564
-
}
7565
7565
-
}
7566
7566
-
if (!islast || opts.follow) {
7567
7567
-
var count = 0;
7568
7568
-
while (FS.isLink(current.mode)) {
7569
7569
-
var link = FS.readlink(current_path);
7570
7570
-
current_path = PATH_FS.resolve(PATH.dirname(current_path), link);
7571
7571
-
var lookup = FS.lookupPath(current_path, {
7572
7572
-
recurse_count: opts.recurse_count
7573
7573
-
});
7574
7574
-
current = lookup.node;
7575
7575
-
if (count++ > 40) {
7576
7576
-
throw new FS.ErrnoError(32);
7577
7577
-
}
7578
7578
-
}
7579
7579
-
}
7580
7580
-
}
7581
7581
-
return { path: current_path, node: current };
7582
7582
-
},
7583
7583
-
getPath: function(node) {
7584
7584
-
var path;
7585
7585
-
while (true) {
7586
7586
-
if (FS.isRoot(node)) {
7587
7587
-
var mount = node.mount.mountpoint;
7588
7588
-
if (!path)
7589
7589
-
return mount;
7590
7590
-
return mount[mount.length - 1] !== "/" ? mount + "/" + path : mount + path;
7591
7591
-
}
7592
7592
-
path = path ? node.name + "/" + path : node.name;
7593
7593
-
node = node.parent;
7594
7594
-
}
7595
7595
-
},
7596
7596
-
hashName: function(parentid, name) {
7597
7597
-
var hash = 0;
7598
7598
-
for (var i = 0; i < name.length; i++) {
7599
7599
-
hash = (hash << 5) - hash + name.charCodeAt(i) | 0;
7600
7600
-
}
7601
7601
-
return (parentid + hash >>> 0) % FS.nameTable.length;
7602
7602
-
},
7603
7603
-
hashAddNode: function(node) {
7604
7604
-
var hash = FS.hashName(node.parent.id, node.name);
7605
7605
-
node.name_next = FS.nameTable[hash];
7606
7606
-
FS.nameTable[hash] = node;
7607
7607
-
},
7608
7608
-
hashRemoveNode: function(node) {
7609
7609
-
var hash = FS.hashName(node.parent.id, node.name);
7610
7610
-
if (FS.nameTable[hash] === node) {
7611
7611
-
FS.nameTable[hash] = node.name_next;
7612
7612
-
} else {
7613
7613
-
var current = FS.nameTable[hash];
7614
7614
-
while (current) {
7615
7615
-
if (current.name_next === node) {
7616
7616
-
current.name_next = node.name_next;
7617
7617
-
break;
7618
7618
-
}
7619
7619
-
current = current.name_next;
7620
7620
-
}
7621
7621
-
}
7622
7622
-
},
7623
7623
-
lookupNode: function(parent, name) {
7624
7624
-
var errCode = FS.mayLookup(parent);
7625
7625
-
if (errCode) {
7626
7626
-
throw new FS.ErrnoError(errCode, parent);
7627
7627
-
}
7628
7628
-
var hash = FS.hashName(parent.id, name);
7629
7629
-
for (var node = FS.nameTable[hash]; node; node = node.name_next) {
7630
7630
-
var nodeName = node.name;
7631
7631
-
if (node.parent.id === parent.id && nodeName === name) {
7632
7632
-
return node;
7633
7633
-
}
7634
7634
-
}
7635
7635
-
return FS.lookup(parent, name);
7636
7636
-
},
7637
7637
-
createNode: function(parent, name, mode, rdev) {
7638
7638
-
var node = new FS.FSNode(parent, name, mode, rdev);
7639
7639
-
FS.hashAddNode(node);
7640
7640
-
return node;
7641
7641
-
},
7642
7642
-
destroyNode: function(node) {
7643
7643
-
FS.hashRemoveNode(node);
7644
7644
-
},
7645
7645
-
isRoot: function(node) {
7646
7646
-
return node === node.parent;
7647
7647
-
},
7648
7648
-
isMountpoint: function(node) {
7649
7649
-
return !!node.mounted;
7650
7650
-
},
7651
7651
-
isFile: function(mode) {
7652
7652
-
return (mode & 61440) === 32768;
7653
7653
-
},
7654
7654
-
isDir: function(mode) {
7655
7655
-
return (mode & 61440) === 16384;
7656
7656
-
},
7657
7657
-
isLink: function(mode) {
7658
7658
-
return (mode & 61440) === 40960;
7659
7659
-
},
7660
7660
-
isChrdev: function(mode) {
7661
7661
-
return (mode & 61440) === 8192;
7662
7662
-
},
7663
7663
-
isBlkdev: function(mode) {
7664
7664
-
return (mode & 61440) === 24576;
7665
7665
-
},
7666
7666
-
isFIFO: function(mode) {
7667
7667
-
return (mode & 61440) === 4096;
7668
7668
-
},
7669
7669
-
isSocket: function(mode) {
7670
7670
-
return (mode & 49152) === 49152;
7671
7671
-
},
7672
7672
-
flagModes: { r: 0, "r+": 2, w: 577, "w+": 578, a: 1089, "a+": 1090 },
7673
7673
-
modeStringToFlags: function(str) {
7674
7674
-
var flags = FS.flagModes[str];
7675
7675
-
if (typeof flags === "undefined") {
7676
7676
-
throw new Error("Unknown file open mode: " + str);
7677
7677
-
}
7678
7678
-
return flags;
7679
7679
-
},
7680
7680
-
flagsToPermissionString: function(flag) {
7681
7681
-
var perms = ["r", "w", "rw"][flag & 3];
7682
7682
-
if (flag & 512) {
7683
7683
-
perms += "w";
7684
7684
-
}
7685
7685
-
return perms;
7686
7686
-
},
7687
7687
-
nodePermissions: function(node, perms) {
7688
7688
-
if (FS.ignorePermissions) {
7689
7689
-
return 0;
7690
7690
-
}
7691
7691
-
if (perms.includes("r") && !(node.mode & 292)) {
7692
7692
-
return 2;
7693
7693
-
} else if (perms.includes("w") && !(node.mode & 146)) {
7694
7694
-
return 2;
7695
7695
-
} else if (perms.includes("x") && !(node.mode & 73)) {
7696
7696
-
return 2;
7697
7697
-
}
7698
7698
-
return 0;
7699
7699
-
},
7700
7700
-
mayLookup: function(dir) {
7701
7701
-
var errCode = FS.nodePermissions(dir, "x");
7702
7702
-
if (errCode)
7703
7703
-
return errCode;
7704
7704
-
if (!dir.node_ops.lookup)
7705
7705
-
return 2;
7706
7706
-
return 0;
7707
7707
-
},
7708
7708
-
mayCreate: function(dir, name) {
7709
7709
-
try {
7710
7710
-
var node = FS.lookupNode(dir, name);
7711
7711
-
return 20;
7712
7712
-
} catch (e) {
7713
7713
-
}
7714
7714
-
return FS.nodePermissions(dir, "wx");
7715
7715
-
},
7716
7716
-
mayDelete: function(dir, name, isdir) {
7717
7717
-
var node;
7718
7718
-
try {
7719
7719
-
node = FS.lookupNode(dir, name);
7720
7720
-
} catch (e) {
7721
7721
-
return e.errno;
7722
7722
-
}
7723
7723
-
var errCode = FS.nodePermissions(dir, "wx");
7724
7724
-
if (errCode) {
7725
7725
-
return errCode;
7726
7726
-
}
7727
7727
-
if (isdir) {
7728
7728
-
if (!FS.isDir(node.mode)) {
7729
7729
-
return 54;
7730
7730
-
}
7731
7731
-
if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
7732
7732
-
return 10;
7733
7733
-
}
7734
7734
-
} else {
7735
7735
-
if (FS.isDir(node.mode)) {
7736
7736
-
return 31;
7737
7737
-
}
7738
7738
-
}
7739
7739
-
return 0;
7740
7740
-
},
7741
7741
-
mayOpen: function(node, flags) {
7742
7742
-
if (!node) {
7743
7743
-
return 44;
7744
7744
-
}
7745
7745
-
if (FS.isLink(node.mode)) {
7746
7746
-
return 32;
7747
7747
-
} else if (FS.isDir(node.mode)) {
7748
7748
-
if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) {
7749
7749
-
return 31;
7750
7750
-
}
7751
7751
-
}
7752
7752
-
return FS.nodePermissions(node, FS.flagsToPermissionString(flags));
7753
7753
-
},
7754
7754
-
MAX_OPEN_FDS: 4096,
7755
7755
-
nextfd: function(fd_start, fd_end) {
7756
7756
-
fd_start = fd_start || 0;
7757
7757
-
fd_end = fd_end || FS.MAX_OPEN_FDS;
7758
7758
-
for (var fd = fd_start; fd <= fd_end; fd++) {
7759
7759
-
if (!FS.streams[fd]) {
7760
7760
-
return fd;
7761
7761
-
}
7762
7762
-
}
7763
7763
-
throw new FS.ErrnoError(33);
7764
7764
-
},
7765
7765
-
getStream: function(fd) {
7766
7766
-
return FS.streams[fd];
7767
7767
-
},
7768
7768
-
createStream: function(stream, fd_start, fd_end) {
7769
7769
-
if (!FS.FSStream) {
7770
7770
-
FS.FSStream = function() {
7771
7771
-
};
7772
7772
-
FS.FSStream.prototype = {
7773
7773
-
object: {
7774
7774
-
get: function() {
7775
7775
-
return this.node;
7776
7776
-
},
7777
7777
-
set: function(val) {
7778
7778
-
this.node = val;
7779
7779
-
}
7780
7780
-
},
7781
7781
-
isRead: {
7782
7782
-
get: function() {
7783
7783
-
return (this.flags & 2097155) !== 1;
7784
7784
-
}
7785
7785
-
},
7786
7786
-
isWrite: {
7787
7787
-
get: function() {
7788
7788
-
return (this.flags & 2097155) !== 0;
7789
7789
-
}
7790
7790
-
},
7791
7791
-
isAppend: {
7792
7792
-
get: function() {
7793
7793
-
return this.flags & 1024;
7794
7794
-
}
7795
7795
-
}
7796
7796
-
};
7797
7797
-
}
7798
7798
-
var newStream = new FS.FSStream();
7799
7799
-
for (var p in stream) {
7800
7800
-
newStream[p] = stream[p];
7801
7801
-
}
7802
7802
-
stream = newStream;
7803
7803
-
var fd = FS.nextfd(fd_start, fd_end);
7804
7804
-
stream.fd = fd;
7805
7805
-
FS.streams[fd] = stream;
7806
7806
-
return stream;
7807
7807
-
},
7808
7808
-
closeStream: function(fd) {
7809
7809
-
FS.streams[fd] = null;
7810
7810
-
},
7811
7811
-
chrdev_stream_ops: {
7812
7812
-
open: function(stream) {
7813
7813
-
var device = FS.getDevice(stream.node.rdev);
7814
7814
-
stream.stream_ops = device.stream_ops;
7815
7815
-
if (stream.stream_ops.open) {
7816
7816
-
stream.stream_ops.open(stream);
7817
7817
-
}
7818
7818
-
},
7819
7819
-
llseek: function() {
7820
7820
-
throw new FS.ErrnoError(70);
7821
7821
-
}
7822
7822
-
},
7823
7823
-
major: function(dev) {
7824
7824
-
return dev >> 8;
7825
7825
-
},
7826
7826
-
minor: function(dev) {
7827
7827
-
return dev & 255;
7828
7828
-
},
7829
7829
-
makedev: function(ma, mi) {
7830
7830
-
return ma << 8 | mi;
7831
7831
-
},
7832
7832
-
registerDevice: function(dev, ops) {
7833
7833
-
FS.devices[dev] = { stream_ops: ops };
7834
7834
-
},
7835
7835
-
getDevice: function(dev) {
7836
7836
-
return FS.devices[dev];
7837
7837
-
},
7838
7838
-
getMounts: function(mount) {
7839
7839
-
var mounts = [];
7840
7840
-
var check = [mount];
7841
7841
-
while (check.length) {
7842
7842
-
var m = check.pop();
7843
7843
-
mounts.push(m);
7844
7844
-
check.push.apply(check, m.mounts);
7845
7845
-
}
7846
7846
-
return mounts;
7847
7847
-
},
7848
7848
-
syncfs: function(populate, callback) {
7849
7849
-
if (typeof populate === "function") {
7850
7850
-
callback = populate;
7851
7851
-
populate = false;
7852
7852
-
}
7853
7853
-
FS.syncFSRequests++;
7854
7854
-
if (FS.syncFSRequests > 1) {
7855
7855
-
err(
7856
7856
-
"warning: " + FS.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work"
7857
7857
-
);
7858
7858
-
}
7859
7859
-
var mounts = FS.getMounts(FS.root.mount);
7860
7860
-
var completed = 0;
7861
7861
-
function doCallback(errCode) {
7862
7862
-
FS.syncFSRequests--;
7863
7863
-
return callback(errCode);
7864
7864
-
}
7865
7865
-
function done(errCode) {
7866
7866
-
if (errCode) {
7867
7867
-
if (!done.errored) {
7868
7868
-
done.errored = true;
7869
7869
-
return doCallback(errCode);
7870
7870
-
}
7871
7871
-
return;
7872
7872
-
}
7873
7873
-
if (++completed >= mounts.length) {
7874
7874
-
doCallback(null);
7875
7875
-
}
7876
7876
-
}
7877
7877
-
mounts.forEach(function(mount) {
7878
7878
-
if (!mount.type.syncfs) {
7879
7879
-
return done(null);
7880
7880
-
}
7881
7881
-
mount.type.syncfs(mount, populate, done);
7882
7882
-
});
7883
7883
-
},
7884
7884
-
mount: function(type, opts, mountpoint) {
7885
7885
-
var root = mountpoint === "/";
7886
7886
-
var pseudo = !mountpoint;
7887
7887
-
var node;
7888
7888
-
if (root && FS.root) {
7889
7889
-
throw new FS.ErrnoError(10);
7890
7890
-
} else if (!root && !pseudo) {
7891
7891
-
var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
7892
7892
-
mountpoint = lookup.path;
7893
7893
-
node = lookup.node;
7894
7894
-
if (FS.isMountpoint(node)) {
7895
7895
-
throw new FS.ErrnoError(10);
7896
7896
-
}
7897
7897
-
if (!FS.isDir(node.mode)) {
7898
7898
-
throw new FS.ErrnoError(54);
7899
7899
-
}
7900
7900
-
}
7901
7901
-
var mount = {
7902
7902
-
type,
7903
7903
-
opts,
7904
7904
-
mountpoint,
7905
7905
-
mounts: []
7906
7906
-
};
7907
7907
-
var mountRoot = type.mount(mount);
7908
7908
-
mountRoot.mount = mount;
7909
7909
-
mount.root = mountRoot;
7910
7910
-
if (root) {
7911
7911
-
FS.root = mountRoot;
7912
7912
-
} else if (node) {
7913
7913
-
node.mounted = mount;
7914
7914
-
if (node.mount) {
7915
7915
-
node.mount.mounts.push(mount);
7916
7916
-
}
7917
7917
-
}
7918
7918
-
return mountRoot;
7919
7919
-
},
7920
7920
-
unmount: function(mountpoint) {
7921
7921
-
var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
7922
7922
-
if (!FS.isMountpoint(lookup.node)) {
7923
7923
-
throw new FS.ErrnoError(28);
7924
7924
-
}
7925
7925
-
var node = lookup.node;
7926
7926
-
var mount = node.mounted;
7927
7927
-
var mounts = FS.getMounts(mount);
7928
7928
-
Object.keys(FS.nameTable).forEach(function(hash) {
7929
7929
-
var current = FS.nameTable[hash];
7930
7930
-
while (current) {
7931
7931
-
var next = current.name_next;
7932
7932
-
if (mounts.includes(current.mount)) {
7933
7933
-
FS.destroyNode(current);
7934
7934
-
}
7935
7935
-
current = next;
7936
7936
-
}
7937
7937
-
});
7938
7938
-
node.mounted = null;
7939
7939
-
var idx = node.mount.mounts.indexOf(mount);
7940
7940
-
node.mount.mounts.splice(idx, 1);
7941
7941
-
},
7942
7942
-
lookup: function(parent, name) {
7943
7943
-
return parent.node_ops.lookup(parent, name);
7944
7944
-
},
7945
7945
-
mknod: function(path, mode, dev) {
7946
7946
-
var lookup = FS.lookupPath(path, { parent: true });
7947
7947
-
var parent = lookup.node;
7948
7948
-
var name = PATH.basename(path);
7949
7949
-
if (!name || name === "." || name === "..") {
7950
7950
-
throw new FS.ErrnoError(28);
7951
7951
-
}
7952
7952
-
var errCode = FS.mayCreate(parent, name);
7953
7953
-
if (errCode) {
7954
7954
-
throw new FS.ErrnoError(errCode);
7955
7955
-
}
7956
7956
-
if (!parent.node_ops.mknod) {
7957
7957
-
throw new FS.ErrnoError(63);
7958
7958
-
}
7959
7959
-
return parent.node_ops.mknod(parent, name, mode, dev);
7960
7960
-
},
7961
7961
-
create: function(path, mode) {
7962
7962
-
mode = mode !== void 0 ? mode : 438;
7963
7963
-
mode &= 4095;
7964
7964
-
mode |= 32768;
7965
7965
-
return FS.mknod(path, mode, 0);
7966
7966
-
},
7967
7967
-
mkdir: function(path, mode) {
7968
7968
-
mode = mode !== void 0 ? mode : 511;
7969
7969
-
mode &= 511 | 512;
7970
7970
-
mode |= 16384;
7971
7971
-
return FS.mknod(path, mode, 0);
7972
7972
-
},
7973
7973
-
mkdirTree: function(path, mode) {
7974
7974
-
var dirs = path.split("/");
7975
7975
-
var d = "";
7976
7976
-
for (var i = 0; i < dirs.length; ++i) {
7977
7977
-
if (!dirs[i])
7978
7978
-
continue;
7979
7979
-
d += "/" + dirs[i];
7980
7980
-
try {
7981
7981
-
FS.mkdir(d, mode);
7982
7982
-
} catch (e) {
7983
7983
-
if (e.errno != 20)
7984
7984
-
throw e;
7985
7985
-
}
7986
7986
-
}
7987
7987
-
},
7988
7988
-
mkdev: function(path, mode, dev) {
7989
7989
-
if (typeof dev === "undefined") {
7990
7990
-
dev = mode;
7991
7991
-
mode = 438;
7992
7992
-
}
7993
7993
-
mode |= 8192;
7994
7994
-
return FS.mknod(path, mode, dev);
7995
7995
-
},
7996
7996
-
symlink: function(oldpath, newpath) {
7997
7997
-
if (!PATH_FS.resolve(oldpath)) {
7998
7998
-
throw new FS.ErrnoError(44);
7999
7999
-
}
8000
8000
-
var lookup = FS.lookupPath(newpath, { parent: true });
8001
8001
-
var parent = lookup.node;
8002
8002
-
if (!parent) {
8003
8003
-
throw new FS.ErrnoError(44);
8004
8004
-
}
8005
8005
-
var newname = PATH.basename(newpath);
8006
8006
-
var errCode = FS.mayCreate(parent, newname);
8007
8007
-
if (errCode) {
8008
8008
-
throw new FS.ErrnoError(errCode);
8009
8009
-
}
8010
8010
-
if (!parent.node_ops.symlink) {
8011
8011
-
throw new FS.ErrnoError(63);
8012
8012
-
}
8013
8013
-
return parent.node_ops.symlink(parent, newname, oldpath);
8014
8014
-
},
8015
8015
-
rename: function(old_path, new_path) {
8016
8016
-
var old_dirname = PATH.dirname(old_path);
8017
8017
-
var new_dirname = PATH.dirname(new_path);
8018
8018
-
var old_name = PATH.basename(old_path);
8019
8019
-
var new_name = PATH.basename(new_path);
8020
8020
-
var lookup, old_dir, new_dir;
8021
8021
-
lookup = FS.lookupPath(old_path, { parent: true });
8022
8022
-
old_dir = lookup.node;
8023
8023
-
lookup = FS.lookupPath(new_path, { parent: true });
8024
8024
-
new_dir = lookup.node;
8025
8025
-
if (!old_dir || !new_dir)
8026
8026
-
throw new FS.ErrnoError(44);
8027
8027
-
if (old_dir.mount !== new_dir.mount) {
8028
8028
-
throw new FS.ErrnoError(75);
8029
8029
-
}
8030
8030
-
var old_node = FS.lookupNode(old_dir, old_name);
8031
8031
-
var relative = PATH_FS.relative(old_path, new_dirname);
8032
8032
-
if (relative.charAt(0) !== ".") {
8033
8033
-
throw new FS.ErrnoError(28);
8034
8034
-
}
8035
8035
-
relative = PATH_FS.relative(new_path, old_dirname);
8036
8036
-
if (relative.charAt(0) !== ".") {
8037
8037
-
throw new FS.ErrnoError(55);
8038
8038
-
}
8039
8039
-
var new_node;
8040
8040
-
try {
8041
8041
-
new_node = FS.lookupNode(new_dir, new_name);
8042
8042
-
} catch (e) {
8043
8043
-
}
8044
8044
-
if (old_node === new_node) {
8045
8045
-
return;
8046
8046
-
}
8047
8047
-
var isdir = FS.isDir(old_node.mode);
8048
8048
-
var errCode = FS.mayDelete(old_dir, old_name, isdir);
8049
8049
-
if (errCode) {
8050
8050
-
throw new FS.ErrnoError(errCode);
8051
8051
-
}
8052
8052
-
errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);
8053
8053
-
if (errCode) {
8054
8054
-
throw new FS.ErrnoError(errCode);
8055
8055
-
}
8056
8056
-
if (!old_dir.node_ops.rename) {
8057
8057
-
throw new FS.ErrnoError(63);
8058
8058
-
}
8059
8059
-
if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {
8060
8060
-
throw new FS.ErrnoError(10);
8061
8061
-
}
8062
8062
-
if (new_dir !== old_dir) {
8063
8063
-
errCode = FS.nodePermissions(old_dir, "w");
8064
8064
-
if (errCode) {
8065
8065
-
throw new FS.ErrnoError(errCode);
8066
8066
-
}
8067
8067
-
}
8068
8068
-
try {
8069
8069
-
if (FS.trackingDelegate["willMovePath"]) {
8070
8070
-
FS.trackingDelegate["willMovePath"](old_path, new_path);
8071
8071
-
}
8072
8072
-
} catch (e) {
8073
8073
-
err(
8074
8074
-
"FS.trackingDelegate['willMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message
8075
8075
-
);
8076
8076
-
}
8077
8077
-
FS.hashRemoveNode(old_node);
8078
8078
-
try {
8079
8079
-
old_dir.node_ops.rename(old_node, new_dir, new_name);
8080
8080
-
} catch (e) {
8081
8081
-
throw e;
8082
8082
-
} finally {
8083
8083
-
FS.hashAddNode(old_node);
8084
8084
-
}
8085
8085
-
try {
8086
8086
-
if (FS.trackingDelegate["onMovePath"])
8087
8087
-
FS.trackingDelegate["onMovePath"](old_path, new_path);
8088
8088
-
} catch (e) {
8089
8089
-
err(
8090
8090
-
"FS.trackingDelegate['onMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message
8091
8091
-
);
8092
8092
-
}
8093
8093
-
},
8094
8094
-
rmdir: function(path) {
8095
8095
-
var lookup = FS.lookupPath(path, { parent: true });
8096
8096
-
var parent = lookup.node;
8097
8097
-
var name = PATH.basename(path);
8098
8098
-
var node = FS.lookupNode(parent, name);
8099
8099
-
var errCode = FS.mayDelete(parent, name, true);
8100
8100
-
if (errCode) {
8101
8101
-
throw new FS.ErrnoError(errCode);
8102
8102
-
}
8103
8103
-
if (!parent.node_ops.rmdir) {
8104
8104
-
throw new FS.ErrnoError(63);
8105
8105
-
}
8106
8106
-
if (FS.isMountpoint(node)) {
8107
8107
-
throw new FS.ErrnoError(10);
8108
8108
-
}
8109
8109
-
try {
8110
8110
-
if (FS.trackingDelegate["willDeletePath"]) {
8111
8111
-
FS.trackingDelegate["willDeletePath"](path);
8112
8112
-
}
8113
8113
-
} catch (e) {
8114
8114
-
err(
8115
8115
-
"FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message
8116
8116
-
);
8117
8117
-
}
8118
8118
-
parent.node_ops.rmdir(parent, name);
8119
8119
-
FS.destroyNode(node);
8120
8120
-
try {
8121
8121
-
if (FS.trackingDelegate["onDeletePath"])
8122
8122
-
FS.trackingDelegate["onDeletePath"](path);
8123
8123
-
} catch (e) {
8124
8124
-
err(
8125
8125
-
"FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message
8126
8126
-
);
8127
8127
-
}
8128
8128
-
},
8129
8129
-
readdir: function(path) {
8130
8130
-
var lookup = FS.lookupPath(path, { follow: true });
8131
8131
-
var node = lookup.node;
8132
8132
-
if (!node.node_ops.readdir) {
8133
8133
-
throw new FS.ErrnoError(54);
8134
8134
-
}
8135
8135
-
return node.node_ops.readdir(node);
8136
8136
-
},
8137
8137
-
unlink: function(path) {
8138
8138
-
var lookup = FS.lookupPath(path, { parent: true });
8139
8139
-
var parent = lookup.node;
8140
8140
-
var name = PATH.basename(path);
8141
8141
-
var node = FS.lookupNode(parent, name);
8142
8142
-
var errCode = FS.mayDelete(parent, name, false);
8143
8143
-
if (errCode) {
8144
8144
-
throw new FS.ErrnoError(errCode);
8145
8145
-
}
8146
8146
-
if (!parent.node_ops.unlink) {
8147
8147
-
throw new FS.ErrnoError(63);
8148
8148
-
}
8149
8149
-
if (FS.isMountpoint(node)) {
8150
8150
-
throw new FS.ErrnoError(10);
8151
8151
-
}
8152
8152
-
try {
8153
8153
-
if (FS.trackingDelegate["willDeletePath"]) {
8154
8154
-
FS.trackingDelegate["willDeletePath"](path);
8155
8155
-
}
8156
8156
-
} catch (e) {
8157
8157
-
err(
8158
8158
-
"FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message
8159
8159
-
);
8160
8160
-
}
8161
8161
-
parent.node_ops.unlink(parent, name);
8162
8162
-
FS.destroyNode(node);
8163
8163
-
try {
8164
8164
-
if (FS.trackingDelegate["onDeletePath"])
8165
8165
-
FS.trackingDelegate["onDeletePath"](path);
8166
8166
-
} catch (e) {
8167
8167
-
err(
8168
8168
-
"FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message
8169
8169
-
);
8170
8170
-
}
8171
8171
-
},
8172
8172
-
readlink: function(path) {
8173
8173
-
var lookup = FS.lookupPath(path);
8174
8174
-
var link = lookup.node;
8175
8175
-
if (!link) {
8176
8176
-
throw new FS.ErrnoError(44);
8177
8177
-
}
8178
8178
-
if (!link.node_ops.readlink) {
8179
8179
-
throw new FS.ErrnoError(28);
8180
8180
-
}
8181
8181
-
return PATH_FS.resolve(
8182
8182
-
FS.getPath(link.parent),
8183
8183
-
link.node_ops.readlink(link)
8184
8184
-
);
8185
8185
-
},
8186
8186
-
stat: function(path, dontFollow) {
8187
8187
-
var lookup = FS.lookupPath(path, { follow: !dontFollow });
8188
8188
-
var node = lookup.node;
8189
8189
-
if (!node) {
8190
8190
-
throw new FS.ErrnoError(44);
8191
8191
-
}
8192
8192
-
if (!node.node_ops.getattr) {
8193
8193
-
throw new FS.ErrnoError(63);
8194
8194
-
}
8195
8195
-
return node.node_ops.getattr(node);
8196
8196
-
},
8197
8197
-
lstat: function(path) {
8198
8198
-
return FS.stat(path, true);
8199
8199
-
},
8200
8200
-
chmod: function(path, mode, dontFollow) {
8201
8201
-
var node;
8202
8202
-
if (typeof path === "string") {
8203
8203
-
var lookup = FS.lookupPath(path, { follow: !dontFollow });
8204
8204
-
node = lookup.node;
8205
8205
-
} else {
8206
8206
-
node = path;
8207
8207
-
}
8208
8208
-
if (!node.node_ops.setattr) {
8209
8209
-
throw new FS.ErrnoError(63);
8210
8210
-
}
8211
8211
-
node.node_ops.setattr(node, {
8212
8212
-
mode: mode & 4095 | node.mode & ~4095,
8213
8213
-
timestamp: Date.now()
8214
8214
-
});
8215
8215
-
},
8216
8216
-
lchmod: function(path, mode) {
8217
8217
-
FS.chmod(path, mode, true);
8218
8218
-
},
8219
8219
-
fchmod: function(fd, mode) {
8220
8220
-
var stream = FS.getStream(fd);
8221
8221
-
if (!stream) {
8222
8222
-
throw new FS.ErrnoError(8);
8223
8223
-
}
8224
8224
-
FS.chmod(stream.node, mode);
8225
8225
-
},
8226
8226
-
chown: function(path, uid, gid, dontFollow) {
8227
8227
-
var node;
8228
8228
-
if (typeof path === "string") {
8229
8229
-
var lookup = FS.lookupPath(path, { follow: !dontFollow });
8230
8230
-
node = lookup.node;
8231
8231
-
} else {
8232
8232
-
node = path;
8233
8233
-
}
8234
8234
-
if (!node.node_ops.setattr) {
8235
8235
-
throw new FS.ErrnoError(63);
8236
8236
-
}
8237
8237
-
node.node_ops.setattr(node, { timestamp: Date.now() });
8238
8238
-
},
8239
8239
-
lchown: function(path, uid, gid) {
8240
8240
-
FS.chown(path, uid, gid, true);
8241
8241
-
},
8242
8242
-
fchown: function(fd, uid, gid) {
8243
8243
-
var stream = FS.getStream(fd);
8244
8244
-
if (!stream) {
8245
8245
-
throw new FS.ErrnoError(8);
8246
8246
-
}
8247
8247
-
FS.chown(stream.node, uid, gid);
8248
8248
-
},
8249
8249
-
truncate: function(path, len) {
8250
8250
-
if (len < 0) {
8251
8251
-
throw new FS.ErrnoError(28);
8252
8252
-
}
8253
8253
-
var node;
8254
8254
-
if (typeof path === "string") {
8255
8255
-
var lookup = FS.lookupPath(path, { follow: true });
8256
8256
-
node = lookup.node;
8257
8257
-
} else {
8258
8258
-
node = path;
8259
8259
-
}
8260
8260
-
if (!node.node_ops.setattr) {
8261
8261
-
throw new FS.ErrnoError(63);
8262
8262
-
}
8263
8263
-
if (FS.isDir(node.mode)) {
8264
8264
-
throw new FS.ErrnoError(31);
8265
8265
-
}
8266
8266
-
if (!FS.isFile(node.mode)) {
8267
8267
-
throw new FS.ErrnoError(28);
8268
8268
-
}
8269
8269
-
var errCode = FS.nodePermissions(node, "w");
8270
8270
-
if (errCode) {
8271
8271
-
throw new FS.ErrnoError(errCode);
8272
8272
-
}
8273
8273
-
node.node_ops.setattr(node, { size: len, timestamp: Date.now() });
8274
8274
-
},
8275
8275
-
ftruncate: function(fd, len) {
8276
8276
-
var stream = FS.getStream(fd);
8277
8277
-
if (!stream) {
8278
8278
-
throw new FS.ErrnoError(8);
8279
8279
-
}
8280
8280
-
if ((stream.flags & 2097155) === 0) {
8281
8281
-
throw new FS.ErrnoError(28);
8282
8282
-
}
8283
8283
-
FS.truncate(stream.node, len);
8284
8284
-
},
8285
8285
-
utime: function(path, atime, mtime) {
8286
8286
-
var lookup = FS.lookupPath(path, { follow: true });
8287
8287
-
var node = lookup.node;
8288
8288
-
node.node_ops.setattr(node, { timestamp: Math.max(atime, mtime) });
8289
8289
-
},
8290
8290
-
open: function(path, flags, mode, fd_start, fd_end) {
8291
8291
-
if (path === "") {
8292
8292
-
throw new FS.ErrnoError(44);
8293
8293
-
}
8294
8294
-
flags = typeof flags === "string" ? FS.modeStringToFlags(flags) : flags;
8295
8295
-
mode = typeof mode === "undefined" ? 438 : mode;
8296
8296
-
if (flags & 64) {
8297
8297
-
mode = mode & 4095 | 32768;
8298
8298
-
} else {
8299
8299
-
mode = 0;
8300
8300
-
}
8301
8301
-
var node;
8302
8302
-
if (typeof path === "object") {
8303
8303
-
node = path;
8304
8304
-
} else {
8305
8305
-
path = PATH.normalize(path);
8306
8306
-
try {
8307
8307
-
var lookup = FS.lookupPath(path, { follow: !(flags & 131072) });
8308
8308
-
node = lookup.node;
8309
8309
-
} catch (e) {
8310
8310
-
}
8311
8311
-
}
8312
8312
-
var created = false;
8313
8313
-
if (flags & 64) {
8314
8314
-
if (node) {
8315
8315
-
if (flags & 128) {
8316
8316
-
throw new FS.ErrnoError(20);
8317
8317
-
}
8318
8318
-
} else {
8319
8319
-
node = FS.mknod(path, mode, 0);
8320
8320
-
created = true;
8321
8321
-
}
8322
8322
-
}
8323
8323
-
if (!node) {
8324
8324
-
throw new FS.ErrnoError(44);
8325
8325
-
}
8326
8326
-
if (FS.isChrdev(node.mode)) {
8327
8327
-
flags &= ~512;
8328
8328
-
}
8329
8329
-
if (flags & 65536 && !FS.isDir(node.mode)) {
8330
8330
-
throw new FS.ErrnoError(54);
8331
8331
-
}
8332
8332
-
if (!created) {
8333
8333
-
var errCode = FS.mayOpen(node, flags);
8334
8334
-
if (errCode) {
8335
8335
-
throw new FS.ErrnoError(errCode);
8336
8336
-
}
8337
8337
-
}
8338
8338
-
if (flags & 512) {
8339
8339
-
FS.truncate(node, 0);
8340
8340
-
}
8341
8341
-
flags &= ~(128 | 512 | 131072);
8342
8342
-
var stream = FS.createStream(
8343
8343
-
{
8344
8344
-
node,
8345
8345
-
path: FS.getPath(node),
8346
8346
-
flags,
8347
8347
-
seekable: true,
8348
8348
-
position: 0,
8349
8349
-
stream_ops: node.stream_ops,
8350
8350
-
ungotten: [],
8351
8351
-
error: false
8352
8352
-
},
8353
8353
-
fd_start,
8354
8354
-
fd_end
8355
8355
-
);
8356
8356
-
if (stream.stream_ops.open) {
8357
8357
-
stream.stream_ops.open(stream);
8358
8358
-
}
8359
8359
-
if (Module["logReadFiles"] && !(flags & 1)) {
8360
8360
-
if (!FS.readFiles)
8361
8361
-
FS.readFiles = {};
8362
8362
-
if (!(path in FS.readFiles)) {
8363
8363
-
FS.readFiles[path] = 1;
8364
8364
-
err("FS.trackingDelegate error on read file: " + path);
8365
8365
-
}
8366
8366
-
}
8367
8367
-
try {
8368
8368
-
if (FS.trackingDelegate["onOpenFile"]) {
8369
8369
-
var trackingFlags = 0;
8370
8370
-
if ((flags & 2097155) !== 1) {
8371
8371
-
trackingFlags |= FS.tracking.openFlags.READ;
8372
8372
-
}
8373
8373
-
if ((flags & 2097155) !== 0) {
8374
8374
-
trackingFlags |= FS.tracking.openFlags.WRITE;
8375
8375
-
}
8376
8376
-
FS.trackingDelegate["onOpenFile"](path, trackingFlags);
8377
8377
-
}
8378
8378
-
} catch (e) {
8379
8379
-
err(
8380
8380
-
"FS.trackingDelegate['onOpenFile']('" + path + "', flags) threw an exception: " + e.message
8381
8381
-
);
8382
8382
-
}
8383
8383
-
return stream;
8384
8384
-
},
8385
8385
-
close: function(stream) {
8386
8386
-
if (FS.isClosed(stream)) {
8387
8387
-
throw new FS.ErrnoError(8);
8388
8388
-
}
8389
8389
-
if (stream.getdents)
8390
8390
-
stream.getdents = null;
8391
8391
-
try {
8392
8392
-
if (stream.stream_ops.close) {
8393
8393
-
stream.stream_ops.close(stream);
8394
8394
-
}
8395
8395
-
} catch (e) {
8396
8396
-
throw e;
8397
8397
-
} finally {
8398
8398
-
FS.closeStream(stream.fd);
8399
8399
-
}
8400
8400
-
stream.fd = null;
8401
8401
-
},
8402
8402
-
isClosed: function(stream) {
8403
8403
-
return stream.fd === null;
8404
8404
-
},
8405
8405
-
llseek: function(stream, offset, whence) {
8406
8406
-
if (FS.isClosed(stream)) {
8407
8407
-
throw new FS.ErrnoError(8);
8408
8408
-
}
8409
8409
-
if (!stream.seekable || !stream.stream_ops.llseek) {
8410
8410
-
throw new FS.ErrnoError(70);
8411
8411
-
}
8412
8412
-
if (whence != 0 && whence != 1 && whence != 2) {
8413
8413
-
throw new FS.ErrnoError(28);
8414
8414
-
}
8415
8415
-
stream.position = stream.stream_ops.llseek(stream, offset, whence);
8416
8416
-
stream.ungotten = [];
8417
8417
-
return stream.position;
8418
8418
-
},
8419
8419
-
read: function(stream, buffer2, offset, length, position) {
8420
8420
-
if (length < 0 || position < 0) {
8421
8421
-
throw new FS.ErrnoError(28);
8422
8422
-
}
8423
8423
-
if (FS.isClosed(stream)) {
8424
8424
-
throw new FS.ErrnoError(8);
8425
8425
-
}
8426
8426
-
if ((stream.flags & 2097155) === 1) {
8427
8427
-
throw new FS.ErrnoError(8);
8428
8428
-
}
8429
8429
-
if (FS.isDir(stream.node.mode)) {
8430
8430
-
throw new FS.ErrnoError(31);
8431
8431
-
}
8432
8432
-
if (!stream.stream_ops.read) {
8433
8433
-
throw new FS.ErrnoError(28);
8434
8434
-
}
8435
8435
-
var seeking = typeof position !== "undefined";
8436
8436
-
if (!seeking) {
8437
8437
-
position = stream.position;
8438
8438
-
} else if (!stream.seekable) {
8439
8439
-
throw new FS.ErrnoError(70);
8440
8440
-
}
8441
8441
-
var bytesRead = stream.stream_ops.read(
8442
8442
-
stream,
8443
8443
-
buffer2,
8444
8444
-
offset,
8445
8445
-
length,
8446
8446
-
position
8447
8447
-
);
8448
8448
-
if (!seeking)
8449
8449
-
stream.position += bytesRead;
8450
8450
-
return bytesRead;
8451
8451
-
},
8452
8452
-
write: function(stream, buffer2, offset, length, position, canOwn) {
8453
8453
-
if (length < 0 || position < 0) {
8454
8454
-
throw new FS.ErrnoError(28);
8455
8455
-
}
8456
8456
-
if (FS.isClosed(stream)) {
8457
8457
-
throw new FS.ErrnoError(8);
8458
8458
-
}
8459
8459
-
if ((stream.flags & 2097155) === 0) {
8460
8460
-
throw new FS.ErrnoError(8);
8461
8461
-
}
8462
8462
-
if (FS.isDir(stream.node.mode)) {
8463
8463
-
throw new FS.ErrnoError(31);
8464
8464
-
}
8465
8465
-
if (!stream.stream_ops.write) {
8466
8466
-
throw new FS.ErrnoError(28);
8467
8467
-
}
8468
8468
-
if (stream.seekable && stream.flags & 1024) {
8469
8469
-
FS.llseek(stream, 0, 2);
8470
8470
-
}
8471
8471
-
var seeking = typeof position !== "undefined";
8472
8472
-
if (!seeking) {
8473
8473
-
position = stream.position;
8474
8474
-
} else if (!stream.seekable) {
8475
8475
-
throw new FS.ErrnoError(70);
8476
8476
-
}
8477
8477
-
var bytesWritten = stream.stream_ops.write(
8478
8478
-
stream,
8479
8479
-
buffer2,
8480
8480
-
offset,
8481
8481
-
length,
8482
8482
-
position,
8483
8483
-
canOwn
8484
8484
-
);
8485
8485
-
if (!seeking)
8486
8486
-
stream.position += bytesWritten;
8487
8487
-
try {
8488
8488
-
if (stream.path && FS.trackingDelegate["onWriteToFile"])
8489
8489
-
FS.trackingDelegate["onWriteToFile"](stream.path);
8490
8490
-
} catch (e) {
8491
8491
-
err(
8492
8492
-
"FS.trackingDelegate['onWriteToFile']('" + stream.path + "') threw an exception: " + e.message
8493
8493
-
);
8494
8494
-
}
8495
8495
-
return bytesWritten;
8496
8496
-
},
8497
8497
-
allocate: function(stream, offset, length) {
8498
8498
-
if (FS.isClosed(stream)) {
8499
8499
-
throw new FS.ErrnoError(8);
8500
8500
-
}
8501
8501
-
if (offset < 0 || length <= 0) {
8502
8502
-
throw new FS.ErrnoError(28);
8503
8503
-
}
8504
8504
-
if ((stream.flags & 2097155) === 0) {
8505
8505
-
throw new FS.ErrnoError(8);
8506
8506
-
}
8507
8507
-
if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {
8508
8508
-
throw new FS.ErrnoError(43);
8509
8509
-
}
8510
8510
-
if (!stream.stream_ops.allocate) {
8511
8511
-
throw new FS.ErrnoError(138);
8512
8512
-
}
8513
8513
-
stream.stream_ops.allocate(stream, offset, length);
8514
8514
-
},
8515
8515
-
mmap: function(stream, address, length, position, prot, flags) {
8516
8516
-
if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {
8517
8517
-
throw new FS.ErrnoError(2);
8518
8518
-
}
8519
8519
-
if ((stream.flags & 2097155) === 1) {
8520
8520
-
throw new FS.ErrnoError(2);
8521
8521
-
}
8522
8522
-
if (!stream.stream_ops.mmap) {
8523
8523
-
throw new FS.ErrnoError(43);
8524
8524
-
}
8525
8525
-
return stream.stream_ops.mmap(
8526
8526
-
stream,
8527
8527
-
address,
8528
8528
-
length,
8529
8529
-
position,
8530
8530
-
prot,
8531
8531
-
flags
8532
8532
-
);
8533
8533
-
},
8534
8534
-
msync: function(stream, buffer2, offset, length, mmapFlags) {
8535
8535
-
if (!stream || !stream.stream_ops.msync) {
8536
8536
-
return 0;
8537
8537
-
}
8538
8538
-
return stream.stream_ops.msync(
8539
8539
-
stream,
8540
8540
-
buffer2,
8541
8541
-
offset,
8542
8542
-
length,
8543
8543
-
mmapFlags
8544
8544
-
);
8545
8545
-
},
8546
8546
-
munmap: function(stream) {
8547
8547
-
return 0;
8548
8548
-
},
8549
8549
-
ioctl: function(stream, cmd, arg) {
8550
8550
-
if (!stream.stream_ops.ioctl) {
8551
8551
-
throw new FS.ErrnoError(59);
8552
8552
-
}
8553
8553
-
return stream.stream_ops.ioctl(stream, cmd, arg);
8554
8554
-
},
8555
8555
-
readFile: function(path, opts) {
8556
8556
-
opts = opts || {};
8557
8557
-
opts.flags = opts.flags || 0;
8558
8558
-
opts.encoding = opts.encoding || "binary";
8559
8559
-
if (opts.encoding !== "utf8" && opts.encoding !== "binary") {
8560
8560
-
throw new Error('Invalid encoding type "' + opts.encoding + '"');
8561
8561
-
}
8562
8562
-
var ret;
8563
8563
-
var stream = FS.open(path, opts.flags);
8564
8564
-
var stat = FS.stat(path);
8565
8565
-
var length = stat.size;
8566
8566
-
var buf = new Uint8Array(length);
8567
8567
-
FS.read(stream, buf, 0, length, 0);
8568
8568
-
if (opts.encoding === "utf8") {
8569
8569
-
ret = UTF8ArrayToString(buf, 0);
8570
8570
-
} else if (opts.encoding === "binary") {
8571
8571
-
ret = buf;
8572
8572
-
}
8573
8573
-
FS.close(stream);
8574
8574
-
return ret;
8575
8575
-
},
8576
8576
-
writeFile: function(path, data, opts) {
8577
8577
-
opts = opts || {};
8578
8578
-
opts.flags = opts.flags || 577;
8579
8579
-
var stream = FS.open(path, opts.flags, opts.mode);
8580
8580
-
if (typeof data === "string") {
8581
8581
-
var buf = new Uint8Array(lengthBytesUTF8(data) + 1);
8582
8582
-
var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);
8583
8583
-
FS.write(stream, buf, 0, actualNumBytes, void 0, opts.canOwn);
8584
8584
-
} else if (ArrayBuffer.isView(data)) {
8585
8585
-
FS.write(stream, data, 0, data.byteLength, void 0, opts.canOwn);
8586
8586
-
} else {
8587
8587
-
throw new Error("Unsupported data type");
8588
8588
-
}
8589
8589
-
FS.close(stream);
8590
8590
-
},
8591
8591
-
cwd: function() {
8592
8592
-
return FS.currentPath;
8593
8593
-
},
8594
8594
-
chdir: function(path) {
8595
8595
-
var lookup = FS.lookupPath(path, { follow: true });
8596
8596
-
if (lookup.node === null) {
8597
8597
-
throw new FS.ErrnoError(44);
8598
8598
-
}
8599
8599
-
if (!FS.isDir(lookup.node.mode)) {
8600
8600
-
throw new FS.ErrnoError(54);
8601
8601
-
}
8602
8602
-
var errCode = FS.nodePermissions(lookup.node, "x");
8603
8603
-
if (errCode) {
8604
8604
-
throw new FS.ErrnoError(errCode);
8605
8605
-
}
8606
8606
-
FS.currentPath = lookup.path;
8607
8607
-
},
8608
8608
-
createDefaultDirectories: function() {
8609
8609
-
FS.mkdir("/tmp");
8610
8610
-
FS.mkdir("/home");
8611
8611
-
FS.mkdir("/home/web_user");
8612
8612
-
},
8613
8613
-
createDefaultDevices: function() {
8614
8614
-
FS.mkdir("/dev");
8615
8615
-
FS.registerDevice(FS.makedev(1, 3), {
8616
8616
-
read: function() {
8617
8617
-
return 0;
8618
8618
-
},
8619
8619
-
write: function(stream, buffer2, offset, length, pos) {
8620
8620
-
return length;
8621
8621
-
}
8622
8622
-
});
8623
8623
-
FS.mkdev("/dev/null", FS.makedev(1, 3));
8624
8624
-
TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
8625
8625
-
TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
8626
8626
-
FS.mkdev("/dev/tty", FS.makedev(5, 0));
8627
8627
-
FS.mkdev("/dev/tty1", FS.makedev(6, 0));
8628
8628
-
var random_device = getRandomDevice();
8629
8629
-
FS.createDevice("/dev", "random", random_device);
8630
8630
-
FS.createDevice("/dev", "urandom", random_device);
8631
8631
-
FS.mkdir("/dev/shm");
8632
8632
-
FS.mkdir("/dev/shm/tmp");
8633
8633
-
},
8634
8634
-
createSpecialDirectories: function() {
8635
8635
-
FS.mkdir("/proc");
8636
8636
-
var proc_self = FS.mkdir("/proc/self");
8637
8637
-
FS.mkdir("/proc/self/fd");
8638
8638
-
FS.mount(
8639
8639
-
{
8640
8640
-
mount: function() {
8641
8641
-
var node = FS.createNode(proc_self, "fd", 16384 | 511, 73);
8642
8642
-
node.node_ops = {
8643
8643
-
lookup: function(parent, name) {
8644
8644
-
var fd = +name;
8645
8645
-
var stream = FS.getStream(fd);
8646
8646
-
if (!stream)
8647
8647
-
throw new FS.ErrnoError(8);
8648
8648
-
var ret = {
8649
8649
-
parent: null,
8650
8650
-
mount: { mountpoint: "fake" },
8651
8651
-
node_ops: {
8652
8652
-
readlink: function() {
8653
8653
-
return stream.path;
8654
8654
-
}
8655
8655
-
}
8656
8656
-
};
8657
8657
-
ret.parent = ret;
8658
8658
-
return ret;
8659
8659
-
}
8660
8660
-
};
8661
8661
-
return node;
8662
8662
-
}
8663
8663
-
},
8664
8664
-
{},
8665
8665
-
"/proc/self/fd"
8666
8666
-
);
8667
8667
-
},
8668
8668
-
createStandardStreams: function() {
8669
8669
-
if (Module["stdin"]) {
8670
8670
-
FS.createDevice("/dev", "stdin", Module["stdin"]);
8671
8671
-
} else {
8672
8672
-
FS.symlink("/dev/tty", "/dev/stdin");
8673
8673
-
}
8674
8674
-
if (Module["stdout"]) {
8675
8675
-
FS.createDevice("/dev", "stdout", null, Module["stdout"]);
8676
8676
-
} else {
8677
8677
-
FS.symlink("/dev/tty", "/dev/stdout");
8678
8678
-
}
8679
8679
-
if (Module["stderr"]) {
8680
8680
-
FS.createDevice("/dev", "stderr", null, Module["stderr"]);
8681
8681
-
} else {
8682
8682
-
FS.symlink("/dev/tty1", "/dev/stderr");
8683
8683
-
}
8684
8684
-
FS.open("/dev/stdin", 0);
8685
8685
-
FS.open("/dev/stdout", 1);
8686
8686
-
FS.open("/dev/stderr", 1);
8687
8687
-
},
8688
8688
-
ensureErrnoError: function() {
8689
8689
-
if (FS.ErrnoError)
8690
8690
-
return;
8691
8691
-
FS.ErrnoError = function ErrnoError(errno, node) {
8692
8692
-
this.node = node;
8693
8693
-
this.setErrno = function(errno2) {
8694
8694
-
this.errno = errno2;
8695
8695
-
};
8696
8696
-
this.setErrno(errno);
8697
8697
-
this.message = "FS error";
8698
8698
-
};
8699
8699
-
FS.ErrnoError.prototype = new Error();
8700
8700
-
FS.ErrnoError.prototype.constructor = FS.ErrnoError;
8701
8701
-
[44].forEach(function(code) {
8702
8702
-
FS.genericErrors[code] = new FS.ErrnoError(code);
8703
8703
-
FS.genericErrors[code].stack = "<generic error, no stack>";
8704
8704
-
});
8705
8705
-
},
8706
8706
-
staticInit: function() {
8707
8707
-
FS.ensureErrnoError();
8708
8708
-
FS.nameTable = new Array(4096);
8709
8709
-
FS.mount(MEMFS, {}, "/");
8710
8710
-
FS.createDefaultDirectories();
8711
8711
-
FS.createDefaultDevices();
8712
8712
-
FS.createSpecialDirectories();
8713
8713
-
FS.filesystems = { MEMFS, NODEFS };
8714
8714
-
},
8715
8715
-
init: function(input, output, error) {
8716
8716
-
FS.init.initialized = true;
8717
8717
-
FS.ensureErrnoError();
8718
8718
-
Module["stdin"] = input || Module["stdin"];
8719
8719
-
Module["stdout"] = output || Module["stdout"];
8720
8720
-
Module["stderr"] = error || Module["stderr"];
8721
8721
-
FS.createStandardStreams();
8722
8722
-
},
8723
8723
-
quit: function() {
8724
8724
-
FS.init.initialized = false;
8725
8725
-
var fflush = Module["_fflush"];
8726
8726
-
if (fflush)
8727
8727
-
fflush(0);
8728
8728
-
for (var i = 0; i < FS.streams.length; i++) {
8729
8729
-
var stream = FS.streams[i];
8730
8730
-
if (!stream) {
8731
8731
-
continue;
8732
8732
-
}
8733
8733
-
FS.close(stream);
8734
8734
-
}
8735
8735
-
},
8736
8736
-
getMode: function(canRead, canWrite) {
8737
8737
-
var mode = 0;
8738
8738
-
if (canRead)
8739
8739
-
mode |= 292 | 73;
8740
8740
-
if (canWrite)
8741
8741
-
mode |= 146;
8742
8742
-
return mode;
8743
8743
-
},
8744
8744
-
findObject: function(path, dontResolveLastLink) {
8745
8745
-
var ret = FS.analyzePath(path, dontResolveLastLink);
8746
8746
-
if (ret.exists) {
8747
8747
-
return ret.object;
8748
8748
-
} else {
8749
8749
-
return null;
8750
8750
-
}
8751
8751
-
},
8752
8752
-
analyzePath: function(path, dontResolveLastLink) {
8753
8753
-
try {
8754
8754
-
var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
8755
8755
-
path = lookup.path;
8756
8756
-
} catch (e) {
8757
8757
-
}
8758
8758
-
var ret = {
8759
8759
-
isRoot: false,
8760
8760
-
exists: false,
8761
8761
-
error: 0,
8762
8762
-
name: null,
8763
8763
-
path: null,
8764
8764
-
object: null,
8765
8765
-
parentExists: false,
8766
8766
-
parentPath: null,
8767
8767
-
parentObject: null
8768
8768
-
};
8769
8769
-
try {
8770
8770
-
var lookup = FS.lookupPath(path, { parent: true });
8771
8771
-
ret.parentExists = true;
8772
8772
-
ret.parentPath = lookup.path;
8773
8773
-
ret.parentObject = lookup.node;
8774
8774
-
ret.name = PATH.basename(path);
8775
8775
-
lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
8776
8776
-
ret.exists = true;
8777
8777
-
ret.path = lookup.path;
8778
8778
-
ret.object = lookup.node;
8779
8779
-
ret.name = lookup.node.name;
8780
8780
-
ret.isRoot = lookup.path === "/";
8781
8781
-
} catch (e) {
8782
8782
-
ret.error = e.errno;
8783
8783
-
}
8784
8784
-
return ret;
8785
8785
-
},
8786
8786
-
createPath: function(parent, path, canRead, canWrite) {
8787
8787
-
parent = typeof parent === "string" ? parent : FS.getPath(parent);
8788
8788
-
var parts = path.split("/").reverse();
8789
8789
-
while (parts.length) {
8790
8790
-
var part = parts.pop();
8791
8791
-
if (!part)
8792
8792
-
continue;
8793
8793
-
var current = PATH.join2(parent, part);
8794
8794
-
try {
8795
8795
-
FS.mkdir(current);
8796
8796
-
} catch (e) {
8797
8797
-
}
8798
8798
-
parent = current;
8799
8799
-
}
8800
8800
-
return current;
8801
8801
-
},
8802
8802
-
createFile: function(parent, name, properties, canRead, canWrite) {
8803
8803
-
var path = PATH.join2(
8804
8804
-
typeof parent === "string" ? parent : FS.getPath(parent),
8805
8805
-
name
8806
8806
-
);
8807
8807
-
var mode = FS.getMode(canRead, canWrite);
8808
8808
-
return FS.create(path, mode);
8809
8809
-
},
8810
8810
-
createDataFile: function(parent, name, data, canRead, canWrite, canOwn) {
8811
8811
-
var path = name ? PATH.join2(
8812
8812
-
typeof parent === "string" ? parent : FS.getPath(parent),
8813
8813
-
name
8814
8814
-
) : parent;
8815
8815
-
var mode = FS.getMode(canRead, canWrite);
8816
8816
-
var node = FS.create(path, mode);
8817
8817
-
if (data) {
8818
8818
-
if (typeof data === "string") {
8819
8819
-
var arr = new Array(data.length);
8820
8820
-
for (var i = 0, len = data.length; i < len; ++i)
8821
8821
-
arr[i] = data.charCodeAt(i);
8822
8822
-
data = arr;
8823
8823
-
}
8824
8824
-
FS.chmod(node, mode | 146);
8825
8825
-
var stream = FS.open(node, 577);
8826
8826
-
FS.write(stream, data, 0, data.length, 0, canOwn);
8827
8827
-
FS.close(stream);
8828
8828
-
FS.chmod(node, mode);
8829
8829
-
}
8830
8830
-
return node;
8831
8831
-
},
8832
8832
-
createDevice: function(parent, name, input, output) {
8833
8833
-
var path = PATH.join2(
8834
8834
-
typeof parent === "string" ? parent : FS.getPath(parent),
8835
8835
-
name
8836
8836
-
);
8837
8837
-
var mode = FS.getMode(!!input, !!output);
8838
8838
-
if (!FS.createDevice.major)
8839
8839
-
FS.createDevice.major = 64;
8840
8840
-
var dev = FS.makedev(FS.createDevice.major++, 0);
8841
8841
-
FS.registerDevice(dev, {
8842
8842
-
open: function(stream) {
8843
8843
-
stream.seekable = false;
8844
8844
-
},
8845
8845
-
close: function(stream) {
8846
8846
-
if (output && output.buffer && output.buffer.length) {
8847
8847
-
output(10);
8848
8848
-
}
8849
8849
-
},
8850
8850
-
read: function(stream, buffer2, offset, length, pos) {
8851
8851
-
var bytesRead = 0;
8852
8852
-
for (var i = 0; i < length; i++) {
8853
8853
-
var result;
8854
8854
-
try {
8855
8855
-
result = input();
8856
8856
-
} catch (e) {
8857
8857
-
throw new FS.ErrnoError(29);
8858
8858
-
}
8859
8859
-
if (result === void 0 && bytesRead === 0) {
8860
8860
-
throw new FS.ErrnoError(6);
8861
8861
-
}
8862
8862
-
if (result === null || result === void 0)
8863
8863
-
break;
8864
8864
-
bytesRead++;
8865
8865
-
buffer2[offset + i] = result;
8866
8866
-
}
8867
8867
-
if (bytesRead) {
8868
8868
-
stream.node.timestamp = Date.now();
8869
8869
-
}
8870
8870
-
return bytesRead;
8871
8871
-
},
8872
8872
-
write: function(stream, buffer2, offset, length, pos) {
8873
8873
-
for (var i = 0; i < length; i++) {
8874
8874
-
try {
8875
8875
-
output(buffer2[offset + i]);
8876
8876
-
} catch (e) {
8877
8877
-
throw new FS.ErrnoError(29);
8878
8878
-
}
8879
8879
-
}
8880
8880
-
if (length) {
8881
8881
-
stream.node.timestamp = Date.now();
8882
8882
-
}
8883
8883
-
return i;
8884
8884
-
}
8885
8885
-
});
8886
8886
-
return FS.mkdev(path, mode, dev);
8887
8887
-
},
8888
8888
-
forceLoadFile: function(obj) {
8889
8889
-
if (obj.isDevice || obj.isFolder || obj.link || obj.contents)
8890
8890
-
return true;
8891
8891
-
if (read_) {
8892
8892
-
try {
8893
8893
-
obj.contents = intArrayFromString(read_(obj.url), true);
8894
8894
-
obj.usedBytes = obj.contents.length;
8895
8895
-
} catch (e) {
8896
8896
-
throw new FS.ErrnoError(29);
8897
8897
-
}
8898
8898
-
} else {
8899
8899
-
throw new Error("Cannot load without read() or XMLHttpRequest.");
8900
8900
-
}
8901
8901
-
},
8902
8902
-
createLazyFile: function(parent, name, url, canRead, canWrite) {
8903
8903
-
var properties; {
8904
8904
-
var properties = { isDevice: false, url };
8905
8905
-
}
8906
8906
-
var node = FS.createFile(parent, name, properties, canRead, canWrite);
8907
8907
-
if (properties.contents) {
8908
8908
-
node.contents = properties.contents;
8909
8909
-
} else if (properties.url) {
8910
8910
-
node.contents = null;
8911
8911
-
node.url = properties.url;
8912
8912
-
}
8913
8913
-
Object.defineProperties(node, {
8914
8914
-
usedBytes: {
8915
8915
-
get: function() {
8916
8916
-
return this.contents.length;
8917
8917
-
}
8918
8918
-
}
8919
8919
-
});
8920
8920
-
var stream_ops = {};
8921
8921
-
var keys = Object.keys(node.stream_ops);
8922
8922
-
keys.forEach(function(key2) {
8923
8923
-
var fn = node.stream_ops[key2];
8924
8924
-
stream_ops[key2] = function forceLoadLazyFile() {
8925
8925
-
FS.forceLoadFile(node);
8926
8926
-
return fn.apply(null, arguments);
8927
8927
-
};
8928
8928
-
});
8929
8929
-
stream_ops.read = function stream_ops_read(stream, buffer2, offset, length, position) {
8930
8930
-
FS.forceLoadFile(node);
8931
8931
-
var contents = stream.node.contents;
8932
8932
-
if (position >= contents.length)
8933
8933
-
return 0;
8934
8934
-
var size = Math.min(contents.length - position, length);
8935
8935
-
if (contents.slice) {
8936
8936
-
for (var i = 0; i < size; i++) {
8937
8937
-
buffer2[offset + i] = contents[position + i];
8938
8938
-
}
8939
8939
-
} else {
8940
8940
-
for (var i = 0; i < size; i++) {
8941
8941
-
buffer2[offset + i] = contents.get(position + i);
8942
8942
-
}
8943
8943
-
}
8944
8944
-
return size;
8945
8945
-
};
8946
8946
-
node.stream_ops = stream_ops;
8947
8947
-
return node;
8948
8948
-
},
8949
8949
-
createPreloadedFile: function(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) {
8950
8950
-
Browser.init();
8951
8951
-
var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;
8952
8952
-
function processData(byteArray) {
8953
8953
-
function finish(byteArray2) {
8954
8954
-
if (preFinish)
8955
8955
-
preFinish();
8956
8956
-
if (!dontCreateFile) {
8957
8957
-
FS.createDataFile(
8958
8958
-
parent,
8959
8959
-
name,
8960
8960
-
byteArray2,
8961
8961
-
canRead,
8962
8962
-
canWrite,
8963
8963
-
canOwn
8964
8964
-
);
8965
8965
-
}
8966
8966
-
if (onload)
8967
8967
-
onload();
8968
8968
-
removeRunDependency();
8969
8969
-
}
8970
8970
-
var handled = false;
8971
8971
-
Module["preloadPlugins"].forEach(function(plugin) {
8972
8972
-
if (handled)
8973
8973
-
return;
8974
8974
-
if (plugin["canHandle"](fullname)) {
8975
8975
-
plugin["handle"](byteArray, fullname, finish, function() {
8976
8976
-
if (onerror)
8977
8977
-
onerror();
8978
8978
-
removeRunDependency();
8979
8979
-
});
8980
8980
-
handled = true;
8981
8981
-
}
8982
8982
-
});
8983
8983
-
if (!handled)
8984
8984
-
finish(byteArray);
8985
8985
-
}
8986
8986
-
addRunDependency();
8987
8987
-
if (typeof url == "string") {
8988
8988
-
Browser.asyncLoad(
8989
8989
-
url,
8990
8990
-
function(byteArray) {
8991
8991
-
processData(byteArray);
8992
8992
-
},
8993
8993
-
onerror
8994
8994
-
);
8995
8995
-
} else {
8996
8996
-
processData(url);
8997
8997
-
}
8998
8998
-
},
8999
8999
-
indexedDB: function() {
9000
9000
-
return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
9001
9001
-
},
9002
9002
-
DB_NAME: function() {
9003
9003
-
return "EM_FS_" + window.location.pathname;
9004
9004
-
},
9005
9005
-
DB_VERSION: 20,
9006
9006
-
DB_STORE_NAME: "FILE_DATA",
9007
9007
-
saveFilesToDB: function(paths, onload, onerror) {
9008
9008
-
onload = onload || function() {
9009
9009
-
};
9010
9010
-
onerror = onerror || function() {
9011
9011
-
};
9012
9012
-
var indexedDB = FS.indexedDB();
9013
9013
-
try {
9014
9014
-
var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
9015
9015
-
} catch (e) {
9016
9016
-
return onerror(e);
9017
9017
-
}
9018
9018
-
openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {
9019
9019
-
out("creating db");
9020
9020
-
var db = openRequest.result;
9021
9021
-
db.createObjectStore(FS.DB_STORE_NAME);
9022
9022
-
};
9023
9023
-
openRequest.onsuccess = function openRequest_onsuccess() {
9024
9024
-
var db = openRequest.result;
9025
9025
-
var transaction = db.transaction([FS.DB_STORE_NAME], "readwrite");
9026
9026
-
var files = transaction.objectStore(FS.DB_STORE_NAME);
9027
9027
-
var ok = 0, fail = 0, total = paths.length;
9028
9028
-
function finish() {
9029
9029
-
if (fail == 0)
9030
9030
-
onload();
9031
9031
-
else
9032
9032
-
onerror();
9033
9033
-
}
9034
9034
-
paths.forEach(function(path) {
9035
9035
-
var putRequest = files.put(
9036
9036
-
FS.analyzePath(path).object.contents,
9037
9037
-
path
9038
9038
-
);
9039
9039
-
putRequest.onsuccess = function putRequest_onsuccess() {
9040
9040
-
ok++;
9041
9041
-
if (ok + fail == total)
9042
9042
-
finish();
9043
9043
-
};
9044
9044
-
putRequest.onerror = function putRequest_onerror() {
9045
9045
-
fail++;
9046
9046
-
if (ok + fail == total)
9047
9047
-
finish();
9048
9048
-
};
9049
9049
-
});
9050
9050
-
transaction.onerror = onerror;
9051
9051
-
};
9052
9052
-
openRequest.onerror = onerror;
9053
9053
-
},
9054
9054
-
loadFilesFromDB: function(paths, onload, onerror) {
9055
9055
-
onload = onload || function() {
9056
9056
-
};
9057
9057
-
onerror = onerror || function() {
9058
9058
-
};
9059
9059
-
var indexedDB = FS.indexedDB();
9060
9060
-
try {
9061
9061
-
var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
9062
9062
-
} catch (e) {
9063
9063
-
return onerror(e);
9064
9064
-
}
9065
9065
-
openRequest.onupgradeneeded = onerror;
9066
9066
-
openRequest.onsuccess = function openRequest_onsuccess() {
9067
9067
-
var db = openRequest.result;
9068
9068
-
try {
9069
9069
-
var transaction = db.transaction([FS.DB_STORE_NAME], "readonly");
9070
9070
-
} catch (e) {
9071
9071
-
onerror(e);
9072
9072
-
return;
9073
9073
-
}
9074
9074
-
var files = transaction.objectStore(FS.DB_STORE_NAME);
9075
9075
-
var ok = 0, fail = 0, total = paths.length;
9076
9076
-
function finish() {
9077
9077
-
if (fail == 0)
9078
9078
-
onload();
9079
9079
-
else
9080
9080
-
onerror();
9081
9081
-
}
9082
9082
-
paths.forEach(function(path) {
9083
9083
-
var getRequest = files.get(path);
9084
9084
-
getRequest.onsuccess = function getRequest_onsuccess() {
9085
9085
-
if (FS.analyzePath(path).exists) {
9086
9086
-
FS.unlink(path);
9087
9087
-
}
9088
9088
-
FS.createDataFile(
9089
9089
-
PATH.dirname(path),
9090
9090
-
PATH.basename(path),
9091
9091
-
getRequest.result,
9092
9092
-
true,
9093
9093
-
true,
9094
9094
-
true
9095
9095
-
);
9096
9096
-
ok++;
9097
9097
-
if (ok + fail == total)
9098
9098
-
finish();
9099
9099
-
};
9100
9100
-
getRequest.onerror = function getRequest_onerror() {
9101
9101
-
fail++;
9102
9102
-
if (ok + fail == total)
9103
9103
-
finish();
9104
9104
-
};
9105
9105
-
});
9106
9106
-
transaction.onerror = onerror;
9107
9107
-
};
9108
9108
-
openRequest.onerror = onerror;
9109
9109
-
}
9110
9110
-
};
9111
9111
-
var SYSCALLS = {
9112
9112
-
mappings: {},
9113
9113
-
DEFAULT_POLLMASK: 5,
9114
9114
-
umask: 511,
9115
9115
-
calculateAt: function(dirfd, path, allowEmpty) {
9116
9116
-
if (path[0] === "/") {
9117
9117
-
return path;
9118
9118
-
}
9119
9119
-
var dir;
9120
9120
-
if (dirfd === -100) {
9121
9121
-
dir = FS.cwd();
9122
9122
-
} else {
9123
9123
-
var dirstream = FS.getStream(dirfd);
9124
9124
-
if (!dirstream)
9125
9125
-
throw new FS.ErrnoError(8);
9126
9126
-
dir = dirstream.path;
9127
9127
-
}
9128
9128
-
if (path.length == 0) {
9129
9129
-
if (!allowEmpty) {
9130
9130
-
throw new FS.ErrnoError(44);
9131
9131
-
}
9132
9132
-
return dir;
9133
9133
-
}
9134
9134
-
return PATH.join2(dir, path);
9135
9135
-
},
9136
9136
-
doStat: function(func, path, buf) {
9137
9137
-
try {
9138
9138
-
var stat = func(path);
9139
9139
-
} catch (e) {
9140
9140
-
if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {
9141
9141
-
return -54;
9142
9142
-
}
9143
9143
-
throw e;
9144
9144
-
}
9145
9145
-
HEAP32[buf >> 2] = stat.dev;
9146
9146
-
HEAP32[buf + 4 >> 2] = 0;
9147
9147
-
HEAP32[buf + 8 >> 2] = stat.ino;
9148
9148
-
HEAP32[buf + 12 >> 2] = stat.mode;
9149
9149
-
HEAP32[buf + 16 >> 2] = stat.nlink;
9150
9150
-
HEAP32[buf + 20 >> 2] = stat.uid;
9151
9151
-
HEAP32[buf + 24 >> 2] = stat.gid;
9152
9152
-
HEAP32[buf + 28 >> 2] = stat.rdev;
9153
9153
-
HEAP32[buf + 32 >> 2] = 0;
9154
9154
-
tempI64 = [
9155
9155
-
stat.size >>> 0,
9156
9156
-
(tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil(
9157
9157
-
(tempDouble - +(~~tempDouble >>> 0)) / 4294967296
9158
9158
-
) >>> 0 : 0)
9159
9159
-
], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];
9160
9160
-
HEAP32[buf + 48 >> 2] = 4096;
9161
9161
-
HEAP32[buf + 52 >> 2] = stat.blocks;
9162
9162
-
HEAP32[buf + 56 >> 2] = stat.atime.getTime() / 1e3 | 0;
9163
9163
-
HEAP32[buf + 60 >> 2] = 0;
9164
9164
-
HEAP32[buf + 64 >> 2] = stat.mtime.getTime() / 1e3 | 0;
9165
9165
-
HEAP32[buf + 68 >> 2] = 0;
9166
9166
-
HEAP32[buf + 72 >> 2] = stat.ctime.getTime() / 1e3 | 0;
9167
9167
-
HEAP32[buf + 76 >> 2] = 0;
9168
9168
-
tempI64 = [
9169
9169
-
stat.ino >>> 0,
9170
9170
-
(tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil(
9171
9171
-
(tempDouble - +(~~tempDouble >>> 0)) / 4294967296
9172
9172
-
) >>> 0 : 0)
9173
9173
-
], HEAP32[buf + 80 >> 2] = tempI64[0], HEAP32[buf + 84 >> 2] = tempI64[1];
9174
9174
-
return 0;
9175
9175
-
},
9176
9176
-
doMsync: function(addr, stream, len, flags, offset) {
9177
9177
-
var buffer2 = HEAPU8.slice(addr, addr + len);
9178
9178
-
FS.msync(stream, buffer2, offset, len, flags);
9179
9179
-
},
9180
9180
-
doMkdir: function(path, mode) {
9181
9181
-
path = PATH.normalize(path);
9182
9182
-
if (path[path.length - 1] === "/")
9183
9183
-
path = path.substr(0, path.length - 1);
9184
9184
-
FS.mkdir(path, mode, 0);
9185
9185
-
return 0;
9186
9186
-
},
9187
9187
-
doMknod: function(path, mode, dev) {
9188
9188
-
switch (mode & 61440) {
9189
9189
-
case 32768:
9190
9190
-
case 8192:
9191
9191
-
case 24576:
9192
9192
-
case 4096:
9193
9193
-
case 49152:
9194
9194
-
break;
9195
9195
-
default:
9196
9196
-
return -28;
9197
9197
-
}
9198
9198
-
FS.mknod(path, mode, dev);
9199
9199
-
return 0;
9200
9200
-
},
9201
9201
-
doReadlink: function(path, buf, bufsize) {
9202
9202
-
if (bufsize <= 0)
9203
9203
-
return -28;
9204
9204
-
var ret = FS.readlink(path);
9205
9205
-
var len = Math.min(bufsize, lengthBytesUTF8(ret));
9206
9206
-
var endChar = HEAP8[buf + len];
9207
9207
-
stringToUTF8(ret, buf, bufsize + 1);
9208
9208
-
HEAP8[buf + len] = endChar;
9209
9209
-
return len;
9210
9210
-
},
9211
9211
-
doAccess: function(path, amode) {
9212
9212
-
if (amode & ~7) {
9213
9213
-
return -28;
9214
9214
-
}
9215
9215
-
var node;
9216
9216
-
var lookup = FS.lookupPath(path, { follow: true });
9217
9217
-
node = lookup.node;
9218
9218
-
if (!node) {
9219
9219
-
return -44;
9220
9220
-
}
9221
9221
-
var perms = "";
9222
9222
-
if (amode & 4)
9223
9223
-
perms += "r";
9224
9224
-
if (amode & 2)
9225
9225
-
perms += "w";
9226
9226
-
if (amode & 1)
9227
9227
-
perms += "x";
9228
9228
-
if (perms && FS.nodePermissions(node, perms)) {
9229
9229
-
return -2;
9230
9230
-
}
9231
9231
-
return 0;
9232
9232
-
},
9233
9233
-
doDup: function(path, flags, suggestFD) {
9234
9234
-
var suggest = FS.getStream(suggestFD);
9235
9235
-
if (suggest)
9236
9236
-
FS.close(suggest);
9237
9237
-
return FS.open(path, flags, 0, suggestFD, suggestFD).fd;
9238
9238
-
},
9239
9239
-
doReadv: function(stream, iov, iovcnt, offset) {
9240
9240
-
var ret = 0;
9241
9241
-
for (var i = 0; i < iovcnt; i++) {
9242
9242
-
var ptr = HEAP32[iov + i * 8 >> 2];
9243
9243
-
var len = HEAP32[iov + (i * 8 + 4) >> 2];
9244
9244
-
var curr = FS.read(stream, HEAP8, ptr, len, offset);
9245
9245
-
if (curr < 0)
9246
9246
-
return -1;
9247
9247
-
ret += curr;
9248
9248
-
if (curr < len)
9249
9249
-
break;
9250
9250
-
}
9251
9251
-
return ret;
9252
9252
-
},
9253
9253
-
doWritev: function(stream, iov, iovcnt, offset) {
9254
9254
-
var ret = 0;
9255
9255
-
for (var i = 0; i < iovcnt; i++) {
9256
9256
-
var ptr = HEAP32[iov + i * 8 >> 2];
9257
9257
-
var len = HEAP32[iov + (i * 8 + 4) >> 2];
9258
9258
-
var curr = FS.write(stream, HEAP8, ptr, len, offset);
9259
9259
-
if (curr < 0)
9260
9260
-
return -1;
9261
9261
-
ret += curr;
9262
9262
-
}
9263
9263
-
return ret;
9264
9264
-
},
9265
9265
-
varargs: void 0,
9266
9266
-
get: function() {
9267
9267
-
SYSCALLS.varargs += 4;
9268
9268
-
var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];
9269
9269
-
return ret;
9270
9270
-
},
9271
9271
-
getStr: function(ptr) {
9272
9272
-
var ret = UTF8ToString(ptr);
9273
9273
-
return ret;
9274
9274
-
},
9275
9275
-
getStreamFromFD: function(fd) {
9276
9276
-
var stream = FS.getStream(fd);
9277
9277
-
if (!stream)
9278
9278
-
throw new FS.ErrnoError(8);
9279
9279
-
return stream;
9280
9280
-
},
9281
9281
-
get64: function(low, high) {
9282
9282
-
return low;
9283
9283
-
}
9284
9284
-
};
9285
9285
-
function ___sys_chmod(path, mode) {
9286
9286
-
try {
9287
9287
-
path = SYSCALLS.getStr(path);
9288
9288
-
FS.chmod(path, mode);
9289
9289
-
return 0;
9290
9290
-
} catch (e) {
9291
9291
-
if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
9292
9292
-
abort(e);
9293
9293
-
return -e.errno;
9294
9294
-
}
9295
9295
-
}
9296
9296
-
function setErrNo(value) {
9297
9297
-
HEAP32[___errno_location() >> 2] = value;
9298
9298
-
return value;
9299
9299
-
}
9300
9300
-
function ___sys_fcntl64(fd, cmd, varargs) {
9301
9301
-
SYSCALLS.varargs = varargs;
9302
9302
-
try {
9303
9303
-
var stream = SYSCALLS.getStreamFromFD(fd);
9304
9304
-
switch (cmd) {
9305
9305
-
case 0: {
9306
9306
-
var arg = SYSCALLS.get();
9307
9307
-
if (arg < 0) {
9308
9308
-
return -28;
9309
9309
-
}
9310
9310
-
var newStream;
9311
9311
-
newStream = FS.open(stream.path, stream.flags, 0, arg);
9312
9312
-
return newStream.fd;
9313
9313
-
}
9314
9314
-
case 1:
9315
9315
-
case 2:
9316
9316
-
return 0;
9317
9317
-
case 3:
9318
9318
-
return stream.flags;
9319
9319
-
case 4: {
9320
9320
-
var arg = SYSCALLS.get();
9321
9321
-
stream.flags |= arg;
9322
9322
-
return 0;
9323
9323
-
}
9324
9324
-
case 12: {
9325
9325
-
var arg = SYSCALLS.get();
9326
9326
-
var offset = 0;
9327
9327
-
HEAP16[arg + offset >> 1] = 2;
9328
9328
-
return 0;
9329
9329
-
}
9330
9330
-
case 13:
9331
9331
-
case 14:
9332
9332
-
return 0;
9333
9333
-
case 16:
9334
9334
-
case 8:
9335
9335
-
return -28;
9336
9336
-
case 9:
9337
9337
-
setErrNo(28);
9338
9338
-
return -1;
9339
9339
-
default: {
9340
9340
-
return -28;
9341
9341
-
}
9342
9342
-
}
9343
9343
-
} catch (e) {
9344
9344
-
if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
9345
9345
-
abort(e);
9346
9346
-
return -e.errno;
9347
9347
-
}
9348
9348
-
}
9349
9349
-
function ___sys_fstat64(fd, buf) {
9350
9350
-
try {
9351
9351
-
var stream = SYSCALLS.getStreamFromFD(fd);
9352
9352
-
return SYSCALLS.doStat(FS.stat, stream.path, buf);
9353
9353
-
} catch (e) {
9354
9354
-
if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
9355
9355
-
abort(e);
9356
9356
-
return -e.errno;
9357
9357
-
}
9358
9358
-
}
9359
9359
-
function ___sys_ioctl(fd, op, varargs) {
9360
9360
-
SYSCALLS.varargs = varargs;
9361
9361
-
try {
9362
9362
-
var stream = SYSCALLS.getStreamFromFD(fd);
9363
9363
-
switch (op) {
9364
9364
-
case 21509:
9365
9365
-
case 21505: {
9366
9366
-
if (!stream.tty)
9367
9367
-
return -59;
9368
9368
-
return 0;
9369
9369
-
}
9370
9370
-
case 21510:
9371
9371
-
case 21511:
9372
9372
-
case 21512:
9373
9373
-
case 21506:
9374
9374
-
case 21507:
9375
9375
-
case 21508: {
9376
9376
-
if (!stream.tty)
9377
9377
-
return -59;
9378
9378
-
return 0;
9379
9379
-
}
9380
9380
-
case 21519: {
9381
9381
-
if (!stream.tty)
9382
9382
-
return -59;
9383
9383
-
var argp = SYSCALLS.get();
9384
9384
-
HEAP32[argp >> 2] = 0;
9385
9385
-
return 0;
9386
9386
-
}
9387
9387
-
case 21520: {
9388
9388
-
if (!stream.tty)
9389
9389
-
return -59;
9390
9390
-
return -28;
9391
9391
-
}
9392
9392
-
case 21531: {
9393
9393
-
var argp = SYSCALLS.get();
9394
9394
-
return FS.ioctl(stream, op, argp);
9395
9395
-
}
9396
9396
-
case 21523: {
9397
9397
-
if (!stream.tty)
9398
9398
-
return -59;
9399
9399
-
return 0;
9400
9400
-
}
9401
9401
-
case 21524: {
9402
9402
-
if (!stream.tty)
9403
9403
-
return -59;
9404
9404
-
return 0;
9405
9405
-
}
9406
9406
-
default:
9407
9407
-
abort("bad ioctl syscall " + op);
9408
9408
-
}
9409
9409
-
} catch (e) {
9410
9410
-
if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
9411
9411
-
abort(e);
9412
9412
-
return -e.errno;
9413
9413
-
}
9414
9414
-
}
9415
9415
-
function ___sys_open(path, flags, varargs) {
9416
9416
-
SYSCALLS.varargs = varargs;
9417
9417
-
try {
9418
9418
-
var pathname = SYSCALLS.getStr(path);
9419
9419
-
var mode = varargs ? SYSCALLS.get() : 0;
9420
9420
-
var stream = FS.open(pathname, flags, mode);
9421
9421
-
return stream.fd;
9422
9422
-
} catch (e) {
9423
9423
-
if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
9424
9424
-
abort(e);
9425
9425
-
return -e.errno;
9426
9426
-
}
9427
9427
-
}
9428
9428
-
function ___sys_rename(old_path, new_path) {
9429
9429
-
try {
9430
9430
-
old_path = SYSCALLS.getStr(old_path);
9431
9431
-
new_path = SYSCALLS.getStr(new_path);
9432
9432
-
FS.rename(old_path, new_path);
9433
9433
-
return 0;
9434
9434
-
} catch (e) {
9435
9435
-
if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
9436
9436
-
abort(e);
9437
9437
-
return -e.errno;
9438
9438
-
}
9439
9439
-
}
9440
9440
-
function ___sys_rmdir(path) {
9441
9441
-
try {
9442
9442
-
path = SYSCALLS.getStr(path);
9443
9443
-
FS.rmdir(path);
9444
9444
-
return 0;
9445
9445
-
} catch (e) {
9446
9446
-
if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
9447
9447
-
abort(e);
9448
9448
-
return -e.errno;
9449
9449
-
}
9450
9450
-
}
9451
9451
-
function ___sys_stat64(path, buf) {
9452
9452
-
try {
9453
9453
-
path = SYSCALLS.getStr(path);
9454
9454
-
return SYSCALLS.doStat(FS.stat, path, buf);
9455
9455
-
} catch (e) {
9456
9456
-
if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
9457
9457
-
abort(e);
9458
9458
-
return -e.errno;
9459
9459
-
}
9460
9460
-
}
9461
9461
-
function ___sys_unlink(path) {
9462
9462
-
try {
9463
9463
-
path = SYSCALLS.getStr(path);
9464
9464
-
FS.unlink(path);
9465
9465
-
return 0;
9466
9466
-
} catch (e) {
9467
9467
-
if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
9468
9468
-
abort(e);
9469
9469
-
return -e.errno;
9470
9470
-
}
9471
9471
-
}
9472
9472
-
function _emscripten_memcpy_big(dest, src, num) {
9473
9473
-
HEAPU8.copyWithin(dest, src, src + num);
9474
9474
-
}
9475
9475
-
function emscripten_realloc_buffer(size) {
9476
9476
-
try {
9477
9477
-
wasmMemory.grow(size - buffer.byteLength + 65535 >>> 16);
9478
9478
-
updateGlobalBufferAndViews(wasmMemory.buffer);
9479
9479
-
return 1;
9480
9480
-
} catch (e) {
9481
9481
-
}
9482
9482
-
}
9483
9483
-
function _emscripten_resize_heap(requestedSize) {
9484
9484
-
var oldSize = HEAPU8.length;
9485
9485
-
requestedSize = requestedSize >>> 0;
9486
9486
-
var maxHeapSize = 2147483648;
9487
9487
-
if (requestedSize > maxHeapSize) {
9488
9488
-
return false;
9489
9489
-
}
9490
9490
-
for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {
9491
9491
-
var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown);
9492
9492
-
overGrownHeapSize = Math.min(
9493
9493
-
overGrownHeapSize,
9494
9494
-
requestedSize + 100663296
9495
9495
-
);
9496
9496
-
var newSize = Math.min(
9497
9497
-
maxHeapSize,
9498
9498
-
alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)
9499
9499
-
);
9500
9500
-
var replacement = emscripten_realloc_buffer(newSize);
9501
9501
-
if (replacement) {
9502
9502
-
return true;
9503
9503
-
}
9504
9504
-
}
9505
9505
-
return false;
9506
9506
-
}
9507
9507
-
function _fd_close(fd) {
9508
9508
-
try {
9509
9509
-
var stream = SYSCALLS.getStreamFromFD(fd);
9510
9510
-
FS.close(stream);
9511
9511
-
return 0;
9512
9512
-
} catch (e) {
9513
9513
-
if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
9514
9514
-
abort(e);
9515
9515
-
return e.errno;
9516
9516
-
}
9517
9517
-
}
9518
9518
-
function _fd_fdstat_get(fd, pbuf) {
9519
9519
-
try {
9520
9520
-
var stream = SYSCALLS.getStreamFromFD(fd);
9521
9521
-
var type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4;
9522
9522
-
HEAP8[pbuf >> 0] = type;
9523
9523
-
return 0;
9524
9524
-
} catch (e) {
9525
9525
-
if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
9526
9526
-
abort(e);
9527
9527
-
return e.errno;
9528
9528
-
}
9529
9529
-
}
9530
9530
-
function _fd_read(fd, iov, iovcnt, pnum) {
9531
9531
-
try {
9532
9532
-
var stream = SYSCALLS.getStreamFromFD(fd);
9533
9533
-
var num = SYSCALLS.doReadv(stream, iov, iovcnt);
9534
9534
-
HEAP32[pnum >> 2] = num;
9535
9535
-
return 0;
9536
9536
-
} catch (e) {
9537
9537
-
if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
9538
9538
-
abort(e);
9539
9539
-
return e.errno;
9540
9540
-
}
9541
9541
-
}
9542
9542
-
function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {
9543
9543
-
try {
9544
9544
-
var stream = SYSCALLS.getStreamFromFD(fd);
9545
9545
-
var HIGH_OFFSET = 4294967296;
9546
9546
-
var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0);
9547
9547
-
var DOUBLE_LIMIT = 9007199254740992;
9548
9548
-
if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) {
9549
9549
-
return -61;
9550
9550
-
}
9551
9551
-
FS.llseek(stream, offset, whence);
9552
9552
-
tempI64 = [
9553
9553
-
stream.position >>> 0,
9554
9554
-
(tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil(
9555
9555
-
(tempDouble - +(~~tempDouble >>> 0)) / 4294967296
9556
9556
-
) >>> 0 : 0)
9557
9557
-
], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];
9558
9558
-
if (stream.getdents && offset === 0 && whence === 0)
9559
9559
-
stream.getdents = null;
9560
9560
-
return 0;
9561
9561
-
} catch (e) {
9562
9562
-
if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
9563
9563
-
abort(e);
9564
9564
-
return e.errno;
9565
9565
-
}
9566
9566
-
}
9567
9567
-
function _fd_write(fd, iov, iovcnt, pnum) {
9568
9568
-
try {
9569
9569
-
var stream = SYSCALLS.getStreamFromFD(fd);
9570
9570
-
var num = SYSCALLS.doWritev(stream, iov, iovcnt);
9571
9571
-
HEAP32[pnum >> 2] = num;
9572
9572
-
return 0;
9573
9573
-
} catch (e) {
9574
9574
-
if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
9575
9575
-
abort(e);
9576
9576
-
return e.errno;
9577
9577
-
}
9578
9578
-
}
9579
9579
-
function _setTempRet0(val) {
9580
9580
-
}
9581
9581
-
function _time(ptr) {
9582
9582
-
var ret = Date.now() / 1e3 | 0;
9583
9583
-
if (ptr) {
9584
9584
-
HEAP32[ptr >> 2] = ret;
9585
9585
-
}
9586
9586
-
return ret;
9587
9587
-
}
9588
9588
-
function _tzset() {
9589
9589
-
if (_tzset.called)
9590
9590
-
return;
9591
9591
-
_tzset.called = true;
9592
9592
-
var currentYear = new Date().getFullYear();
9593
9593
-
var winter = new Date(currentYear, 0, 1);
9594
9594
-
var summer = new Date(currentYear, 6, 1);
9595
9595
-
var winterOffset = winter.getTimezoneOffset();
9596
9596
-
var summerOffset = summer.getTimezoneOffset();
9597
9597
-
var stdTimezoneOffset = Math.max(winterOffset, summerOffset);
9598
9598
-
HEAP32[__get_timezone() >> 2] = stdTimezoneOffset * 60;
9599
9599
-
HEAP32[__get_daylight() >> 2] = Number(winterOffset != summerOffset);
9600
9600
-
function extractZone(date) {
9601
9601
-
var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/);
9602
9602
-
return match ? match[1] : "GMT";
9603
9603
-
}
9604
9604
-
var winterName = extractZone(winter);
9605
9605
-
var summerName = extractZone(summer);
9606
9606
-
var winterNamePtr = allocateUTF8(winterName);
9607
9607
-
var summerNamePtr = allocateUTF8(summerName);
9608
9608
-
if (summerOffset < winterOffset) {
9609
9609
-
HEAP32[__get_tzname() >> 2] = winterNamePtr;
9610
9610
-
HEAP32[__get_tzname() + 4 >> 2] = summerNamePtr;
9611
9611
-
} else {
9612
9612
-
HEAP32[__get_tzname() >> 2] = summerNamePtr;
9613
9613
-
HEAP32[__get_tzname() + 4 >> 2] = winterNamePtr;
9614
9614
-
}
9615
9615
-
}
9616
9616
-
function _timegm(tmPtr) {
9617
9617
-
_tzset();
9618
9618
-
var time = Date.UTC(
9619
9619
-
HEAP32[tmPtr + 20 >> 2] + 1900,
9620
9620
-
HEAP32[tmPtr + 16 >> 2],
9621
9621
-
HEAP32[tmPtr + 12 >> 2],
9622
9622
-
HEAP32[tmPtr + 8 >> 2],
9623
9623
-
HEAP32[tmPtr + 4 >> 2],
9624
9624
-
HEAP32[tmPtr >> 2],
9625
9625
-
0
9626
9626
-
);
9627
9627
-
var date = new Date(time);
9628
9628
-
HEAP32[tmPtr + 24 >> 2] = date.getUTCDay();
9629
9629
-
var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);
9630
9630
-
var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;
9631
9631
-
HEAP32[tmPtr + 28 >> 2] = yday;
9632
9632
-
return date.getTime() / 1e3 | 0;
9633
9633
-
}
9634
9634
-
var FSNode = function(parent, name, mode, rdev) {
9635
9635
-
if (!parent) {
9636
9636
-
parent = this;
9637
9637
-
}
9638
9638
-
this.parent = parent;
9639
9639
-
this.mount = parent.mount;
9640
9640
-
this.mounted = null;
9641
9641
-
this.id = FS.nextInode++;
9642
9642
-
this.name = name;
9643
9643
-
this.mode = mode;
9644
9644
-
this.node_ops = {};
9645
9645
-
this.stream_ops = {};
9646
9646
-
this.rdev = rdev;
9647
9647
-
};
9648
9648
-
var readMode = 292 | 73;
9649
9649
-
var writeMode = 146;
9650
9650
-
Object.defineProperties(FSNode.prototype, {
9651
9651
-
read: {
9652
9652
-
get: function() {
9653
9653
-
return (this.mode & readMode) === readMode;
9654
9654
-
},
9655
9655
-
set: function(val) {
9656
9656
-
val ? this.mode |= readMode : this.mode &= ~readMode;
9657
9657
-
}
9658
9658
-
},
9659
9659
-
write: {
9660
9660
-
get: function() {
9661
9661
-
return (this.mode & writeMode) === writeMode;
9662
9662
-
},
9663
9663
-
set: function(val) {
9664
9664
-
val ? this.mode |= writeMode : this.mode &= ~writeMode;
9665
9665
-
}
9666
9666
-
},
9667
9667
-
isFolder: {
9668
9668
-
get: function() {
9669
9669
-
return FS.isDir(this.mode);
9670
9670
-
}
9671
9671
-
},
9672
9672
-
isDevice: {
9673
9673
-
get: function() {
9674
9674
-
return FS.isChrdev(this.mode);
9675
9675
-
}
9676
9676
-
}
9677
9677
-
});
9678
9678
-
FS.FSNode = FSNode;
9679
9679
-
FS.staticInit();
9680
9680
-
{
9681
9681
-
var fs = frozenFs;
9682
9682
-
var NODEJS_PATH = path__default.default;
9683
9683
-
NODEFS.staticInit();
9684
9684
-
}
9685
9685
-
{
9686
9686
-
var _wrapNodeError = function(func) {
9687
9687
-
return function() {
9688
9688
-
try {
9689
9689
-
return func.apply(this, arguments);
9690
9690
-
} catch (e) {
9691
9691
-
if (!e.code)
9692
9692
-
throw e;
9693
9693
-
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
9694
9694
-
}
9695
9695
-
};
9696
9696
-
};
9697
9697
-
var VFS = Object.assign({}, FS);
9698
9698
-
for (var _key in NODERAWFS)
9699
9699
-
FS[_key] = _wrapNodeError(NODERAWFS[_key]);
9700
9700
-
}
9701
9701
-
function intArrayFromString(stringy, dontAddNull, length) {
9702
9702
-
var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;
9703
9703
-
var u8array = new Array(len);
9704
9704
-
var numBytesWritten = stringToUTF8Array(
9705
9705
-
stringy,
9706
9706
-
u8array,
9707
9707
-
0,
9708
9708
-
u8array.length
9709
9709
-
);
9710
9710
-
if (dontAddNull)
9711
9711
-
u8array.length = numBytesWritten;
9712
9712
-
return u8array;
9713
9713
-
}
9714
9714
-
function intArrayFromBase64(s) {
9715
9715
-
{
9716
9716
-
var buf;
9717
9717
-
try {
9718
9718
-
buf = Buffer.from(s, "base64");
9719
9719
-
} catch (_) {
9720
9720
-
buf = new Buffer(s, "base64");
9721
9721
-
}
9722
9722
-
return new Uint8Array(
9723
9723
-
buf["buffer"],
9724
9724
-
buf["byteOffset"],
9725
9725
-
buf["byteLength"]
9726
9726
-
);
9727
9727
-
}
9728
9728
-
}
9729
9729
-
function tryParseAsDataURI(filename) {
9730
9730
-
if (!isDataURI(filename)) {
9731
9731
-
return;
9732
9732
-
}
9733
9733
-
return intArrayFromBase64(filename.slice(dataURIPrefix.length));
9734
9734
-
}
9735
9735
-
var asmLibraryArg = {
9736
9736
-
s: ___gmtime_r,
9737
9737
-
p: ___sys_chmod,
9738
9738
-
e: ___sys_fcntl64,
9739
9739
-
k: ___sys_fstat64,
9740
9740
-
o: ___sys_ioctl,
9741
9741
-
q: ___sys_open,
9742
9742
-
i: ___sys_rename,
9743
9743
-
r: ___sys_rmdir,
9744
9744
-
c: ___sys_stat64,
9745
9745
-
h: ___sys_unlink,
9746
9746
-
l: _emscripten_memcpy_big,
9747
9747
-
m: _emscripten_resize_heap,
9748
9748
-
f: _fd_close,
9749
9749
-
j: _fd_fdstat_get,
9750
9750
-
g: _fd_read,
9751
9751
-
n: _fd_seek,
9752
9752
-
d: _fd_write,
9753
9753
-
a: _setTempRet0,
9754
9754
-
b: _time,
9755
9755
-
t: _timegm
9756
9756
-
};
9757
9757
-
var asm = createWasm();
9758
9758
-
Module["___wasm_call_ctors"] = asm["v"];
9759
9759
-
Module["_zip_ext_count_symlinks"] = asm["w"];
9760
9760
-
Module["_zip_file_get_external_attributes"] = asm["x"];
9761
9761
-
Module["_zipstruct_stat"] = asm["y"];
9762
9762
-
Module["_zipstruct_statS"] = asm["z"];
9763
9763
-
Module["_zipstruct_stat_name"] = asm["A"];
9764
9764
-
Module["_zipstruct_stat_index"] = asm["B"];
9765
9765
-
Module["_zipstruct_stat_size"] = asm["C"];
9766
9766
-
Module["_zipstruct_stat_mtime"] = asm["D"];
9767
9767
-
Module["_zipstruct_stat_crc"] = asm["E"];
9768
9768
-
Module["_zipstruct_error"] = asm["F"];
9769
9769
-
Module["_zipstruct_errorS"] = asm["G"];
9770
9770
-
Module["_zipstruct_error_code_zip"] = asm["H"];
9771
9771
-
Module["_zipstruct_stat_comp_size"] = asm["I"];
9772
9772
-
Module["_zipstruct_stat_comp_method"] = asm["J"];
9773
9773
-
Module["_zip_close"] = asm["K"];
9774
9774
-
Module["_zip_delete"] = asm["L"];
9775
9775
-
Module["_zip_dir_add"] = asm["M"];
9776
9776
-
Module["_zip_discard"] = asm["N"];
9777
9777
-
Module["_zip_error_init_with_code"] = asm["O"];
9778
9778
-
Module["_zip_get_error"] = asm["P"];
9779
9779
-
Module["_zip_file_get_error"] = asm["Q"];
9780
9780
-
Module["_zip_error_strerror"] = asm["R"];
9781
9781
-
Module["_zip_fclose"] = asm["S"];
9782
9782
-
Module["_zip_file_add"] = asm["T"];
9783
9783
-
Module["_free"] = asm["U"];
9784
9784
-
var _malloc = Module["_malloc"] = asm["V"];
9785
9785
-
var ___errno_location = Module["___errno_location"] = asm["W"];
9786
9786
-
Module["_zip_source_error"] = asm["X"];
9787
9787
-
Module["_zip_source_seek"] = asm["Y"];
9788
9788
-
Module["_zip_file_set_external_attributes"] = asm["Z"];
9789
9789
-
Module["_zip_file_set_mtime"] = asm["_"];
9790
9790
-
Module["_zip_fopen"] = asm["$"];
9791
9791
-
Module["_zip_fopen_index"] = asm["aa"];
9792
9792
-
Module["_zip_fread"] = asm["ba"];
9793
9793
-
Module["_zip_get_name"] = asm["ca"];
9794
9794
-
Module["_zip_get_num_entries"] = asm["da"];
9795
9795
-
Module["_zip_source_read"] = asm["ea"];
9796
9796
-
Module["_zip_name_locate"] = asm["fa"];
9797
9797
-
Module["_zip_open"] = asm["ga"];
9798
9798
-
Module["_zip_open_from_source"] = asm["ha"];
9799
9799
-
Module["_zip_set_file_compression"] = asm["ia"];
9800
9800
-
Module["_zip_source_buffer"] = asm["ja"];
9801
9801
-
Module["_zip_source_buffer_create"] = asm["ka"];
9802
9802
-
Module["_zip_source_close"] = asm["la"];
9803
9803
-
Module["_zip_source_free"] = asm["ma"];
9804
9804
-
Module["_zip_source_keep"] = asm["na"];
9805
9805
-
Module["_zip_source_open"] = asm["oa"];
9806
9806
-
Module["_zip_source_set_mtime"] = asm["qa"];
9807
9807
-
Module["_zip_source_tell"] = asm["ra"];
9808
9808
-
Module["_zip_stat"] = asm["sa"];
9809
9809
-
Module["_zip_stat_index"] = asm["ta"];
9810
9810
-
var __get_tzname = Module["__get_tzname"] = asm["ua"];
9811
9811
-
var __get_daylight = Module["__get_daylight"] = asm["va"];
9812
9812
-
var __get_timezone = Module["__get_timezone"] = asm["wa"];
9813
9813
-
var stackSave = Module["stackSave"] = asm["xa"];
9814
9814
-
var stackRestore = Module["stackRestore"] = asm["ya"];
9815
9815
-
var stackAlloc = Module["stackAlloc"] = asm["za"];
9816
9816
-
Module["cwrap"] = cwrap;
9817
9817
-
Module["getValue"] = getValue;
9818
9818
-
var calledRun;
9819
9819
-
dependenciesFulfilled = function runCaller() {
9820
9820
-
if (!calledRun)
9821
9821
-
run();
9822
9822
-
if (!calledRun)
9823
9823
-
dependenciesFulfilled = runCaller;
9824
9824
-
};
9825
9825
-
function run(args) {
9826
9826
-
if (runDependencies > 0) {
9827
9827
-
return;
9828
9828
-
}
9829
9829
-
preRun();
9830
9830
-
if (runDependencies > 0) {
9831
9831
-
return;
9832
9832
-
}
9833
9833
-
function doRun() {
9834
9834
-
if (calledRun)
9835
9835
-
return;
9836
9836
-
calledRun = true;
9837
9837
-
Module["calledRun"] = true;
9838
9838
-
if (ABORT)
9839
9839
-
return;
9840
9840
-
initRuntime();
9841
9841
-
readyPromiseResolve(Module);
9842
9842
-
if (Module["onRuntimeInitialized"])
9843
9843
-
Module["onRuntimeInitialized"]();
9844
9844
-
postRun();
9845
9845
-
}
9846
9846
-
if (Module["setStatus"]) {
9847
9847
-
Module["setStatus"]("Running...");
9848
9848
-
setTimeout(function() {
9849
9849
-
setTimeout(function() {
9850
9850
-
Module["setStatus"]("");
9851
9851
-
}, 1);
9852
9852
-
doRun();
9853
9853
-
}, 1);
9854
9854
-
} else {
9855
9855
-
doRun();
9856
9856
-
}
9857
9857
-
}
9858
9858
-
Module["run"] = run;
9859
9859
-
if (Module["preInit"]) {
9860
9860
-
if (typeof Module["preInit"] == "function")
9861
9861
-
Module["preInit"] = [Module["preInit"]];
9862
9862
-
while (Module["preInit"].length > 0) {
9863
9863
-
Module["preInit"].pop()();
9864
9864
-
}
9865
9865
-
}
9866
9866
-
run();
9867
9867
-
return createModule2;
9868
9868
-
};
9869
9869
-
}();
9870
9870
-
module.exports = createModule;
9871
9871
-
}(libzipSync));
9872
9872
-
9873
9873
-
const createModule = libzipSync.exports;
9874
9874
-
9875
9875
-
const number64 = [
9876
9876
-
`number`,
9877
9877
-
`number`
9878
9878
-
];
9879
9879
-
var Errors = /* @__PURE__ */ ((Errors2) => {
9880
9880
-
Errors2[Errors2["ZIP_ER_OK"] = 0] = "ZIP_ER_OK";
9881
9881
-
Errors2[Errors2["ZIP_ER_MULTIDISK"] = 1] = "ZIP_ER_MULTIDISK";
9882
9882
-
Errors2[Errors2["ZIP_ER_RENAME"] = 2] = "ZIP_ER_RENAME";
9883
9883
-
Errors2[Errors2["ZIP_ER_CLOSE"] = 3] = "ZIP_ER_CLOSE";
9884
9884
-
Errors2[Errors2["ZIP_ER_SEEK"] = 4] = "ZIP_ER_SEEK";
9885
9885
-
Errors2[Errors2["ZIP_ER_READ"] = 5] = "ZIP_ER_READ";
9886
9886
-
Errors2[Errors2["ZIP_ER_WRITE"] = 6] = "ZIP_ER_WRITE";
9887
9887
-
Errors2[Errors2["ZIP_ER_CRC"] = 7] = "ZIP_ER_CRC";
9888
9888
-
Errors2[Errors2["ZIP_ER_ZIPCLOSED"] = 8] = "ZIP_ER_ZIPCLOSED";
9889
9889
-
Errors2[Errors2["ZIP_ER_NOENT"] = 9] = "ZIP_ER_NOENT";
9890
9890
-
Errors2[Errors2["ZIP_ER_EXISTS"] = 10] = "ZIP_ER_EXISTS";
9891
9891
-
Errors2[Errors2["ZIP_ER_OPEN"] = 11] = "ZIP_ER_OPEN";
9892
9892
-
Errors2[Errors2["ZIP_ER_TMPOPEN"] = 12] = "ZIP_ER_TMPOPEN";
9893
9893
-
Errors2[Errors2["ZIP_ER_ZLIB"] = 13] = "ZIP_ER_ZLIB";
9894
9894
-
Errors2[Errors2["ZIP_ER_MEMORY"] = 14] = "ZIP_ER_MEMORY";
9895
9895
-
Errors2[Errors2["ZIP_ER_CHANGED"] = 15] = "ZIP_ER_CHANGED";
9896
9896
-
Errors2[Errors2["ZIP_ER_COMPNOTSUPP"] = 16] = "ZIP_ER_COMPNOTSUPP";
9897
9897
-
Errors2[Errors2["ZIP_ER_EOF"] = 17] = "ZIP_ER_EOF";
9898
9898
-
Errors2[Errors2["ZIP_ER_INVAL"] = 18] = "ZIP_ER_INVAL";
9899
9899
-
Errors2[Errors2["ZIP_ER_NOZIP"] = 19] = "ZIP_ER_NOZIP";
9900
9900
-
Errors2[Errors2["ZIP_ER_INTERNAL"] = 20] = "ZIP_ER_INTERNAL";
9901
9901
-
Errors2[Errors2["ZIP_ER_INCONS"] = 21] = "ZIP_ER_INCONS";
9902
9902
-
Errors2[Errors2["ZIP_ER_REMOVE"] = 22] = "ZIP_ER_REMOVE";
9903
9903
-
Errors2[Errors2["ZIP_ER_DELETED"] = 23] = "ZIP_ER_DELETED";
9904
9904
-
Errors2[Errors2["ZIP_ER_ENCRNOTSUPP"] = 24] = "ZIP_ER_ENCRNOTSUPP";
9905
9905
-
Errors2[Errors2["ZIP_ER_RDONLY"] = 25] = "ZIP_ER_RDONLY";
9906
9906
-
Errors2[Errors2["ZIP_ER_NOPASSWD"] = 26] = "ZIP_ER_NOPASSWD";
9907
9907
-
Errors2[Errors2["ZIP_ER_WRONGPASSWD"] = 27] = "ZIP_ER_WRONGPASSWD";
9908
9908
-
Errors2[Errors2["ZIP_ER_OPNOTSUPP"] = 28] = "ZIP_ER_OPNOTSUPP";
9909
9909
-
Errors2[Errors2["ZIP_ER_INUSE"] = 29] = "ZIP_ER_INUSE";
9910
9910
-
Errors2[Errors2["ZIP_ER_TELL"] = 30] = "ZIP_ER_TELL";
9911
9911
-
Errors2[Errors2["ZIP_ER_COMPRESSED_DATA"] = 31] = "ZIP_ER_COMPRESSED_DATA";
9912
9912
-
return Errors2;
9913
9913
-
})(Errors || {});
9914
9914
-
const makeInterface = (libzip) => ({
9915
9915
-
get HEAP8() {
9916
9916
-
return libzip.HEAP8;
9917
9917
-
},
9918
9918
-
get HEAPU8() {
9919
9919
-
return libzip.HEAPU8;
9920
9920
-
},
9921
9921
-
errors: Errors,
9922
9922
-
SEEK_SET: 0,
9923
9923
-
SEEK_CUR: 1,
9924
9924
-
SEEK_END: 2,
9925
9925
-
ZIP_CHECKCONS: 4,
9926
9926
-
ZIP_CREATE: 1,
9927
9927
-
ZIP_EXCL: 2,
9928
9928
-
ZIP_TRUNCATE: 8,
9929
9929
-
ZIP_RDONLY: 16,
9930
9930
-
ZIP_FL_OVERWRITE: 8192,
9931
9931
-
ZIP_FL_COMPRESSED: 4,
9932
9932
-
ZIP_OPSYS_DOS: 0,
9933
9933
-
ZIP_OPSYS_AMIGA: 1,
9934
9934
-
ZIP_OPSYS_OPENVMS: 2,
9935
9935
-
ZIP_OPSYS_UNIX: 3,
9936
9936
-
ZIP_OPSYS_VM_CMS: 4,
9937
9937
-
ZIP_OPSYS_ATARI_ST: 5,
9938
9938
-
ZIP_OPSYS_OS_2: 6,
9939
9939
-
ZIP_OPSYS_MACINTOSH: 7,
9940
9940
-
ZIP_OPSYS_Z_SYSTEM: 8,
9941
9941
-
ZIP_OPSYS_CPM: 9,
9942
9942
-
ZIP_OPSYS_WINDOWS_NTFS: 10,
9943
9943
-
ZIP_OPSYS_MVS: 11,
9944
9944
-
ZIP_OPSYS_VSE: 12,
9945
9945
-
ZIP_OPSYS_ACORN_RISC: 13,
9946
9946
-
ZIP_OPSYS_VFAT: 14,
9947
9947
-
ZIP_OPSYS_ALTERNATE_MVS: 15,
9948
9948
-
ZIP_OPSYS_BEOS: 16,
9949
9949
-
ZIP_OPSYS_TANDEM: 17,
9950
9950
-
ZIP_OPSYS_OS_400: 18,
9951
9951
-
ZIP_OPSYS_OS_X: 19,
9952
9952
-
ZIP_CM_DEFAULT: -1,
9953
9953
-
ZIP_CM_STORE: 0,
9954
9954
-
ZIP_CM_DEFLATE: 8,
9955
9955
-
uint08S: libzip._malloc(1),
9956
9956
-
uint16S: libzip._malloc(2),
9957
9957
-
uint32S: libzip._malloc(4),
9958
9958
-
uint64S: libzip._malloc(8),
9959
9959
-
malloc: libzip._malloc,
9960
9960
-
free: libzip._free,
9961
9961
-
getValue: libzip.getValue,
9962
9962
-
open: libzip.cwrap(`zip_open`, `number`, [`string`, `number`, `number`]),
9963
9963
-
openFromSource: libzip.cwrap(`zip_open_from_source`, `number`, [`number`, `number`, `number`]),
9964
9964
-
close: libzip.cwrap(`zip_close`, `number`, [`number`]),
9965
9965
-
discard: libzip.cwrap(`zip_discard`, null, [`number`]),
9966
9966
-
getError: libzip.cwrap(`zip_get_error`, `number`, [`number`]),
9967
9967
-
getName: libzip.cwrap(`zip_get_name`, `string`, [`number`, `number`, `number`]),
9968
9968
-
getNumEntries: libzip.cwrap(`zip_get_num_entries`, `number`, [`number`, `number`]),
9969
9969
-
delete: libzip.cwrap(`zip_delete`, `number`, [`number`, `number`]),
9970
9970
-
stat: libzip.cwrap(`zip_stat`, `number`, [`number`, `string`, `number`, `number`]),
9971
9971
-
statIndex: libzip.cwrap(`zip_stat_index`, `number`, [`number`, ...number64, `number`, `number`]),
9972
9972
-
fopen: libzip.cwrap(`zip_fopen`, `number`, [`number`, `string`, `number`]),
9973
9973
-
fopenIndex: libzip.cwrap(`zip_fopen_index`, `number`, [`number`, ...number64, `number`]),
9974
9974
-
fread: libzip.cwrap(`zip_fread`, `number`, [`number`, `number`, `number`, `number`]),
9975
9975
-
fclose: libzip.cwrap(`zip_fclose`, `number`, [`number`]),
9976
9976
-
dir: {
9977
9977
-
add: libzip.cwrap(`zip_dir_add`, `number`, [`number`, `string`])
9978
9978
-
},
9979
9979
-
file: {
9980
9980
-
add: libzip.cwrap(`zip_file_add`, `number`, [`number`, `string`, `number`, `number`]),
9981
9981
-
getError: libzip.cwrap(`zip_file_get_error`, `number`, [`number`]),
9982
9982
-
getExternalAttributes: libzip.cwrap(`zip_file_get_external_attributes`, `number`, [`number`, ...number64, `number`, `number`, `number`]),
9983
9983
-
setExternalAttributes: libzip.cwrap(`zip_file_set_external_attributes`, `number`, [`number`, ...number64, `number`, `number`, `number`]),
9984
9984
-
setMtime: libzip.cwrap(`zip_file_set_mtime`, `number`, [`number`, ...number64, `number`, `number`]),
9985
9985
-
setCompression: libzip.cwrap(`zip_set_file_compression`, `number`, [`number`, ...number64, `number`, `number`])
9986
9986
-
},
9987
9987
-
ext: {
9988
9988
-
countSymlinks: libzip.cwrap(`zip_ext_count_symlinks`, `number`, [`number`])
9989
9989
-
},
9990
9990
-
error: {
9991
9991
-
initWithCode: libzip.cwrap(`zip_error_init_with_code`, null, [`number`, `number`]),
9992
9992
-
strerror: libzip.cwrap(`zip_error_strerror`, `string`, [`number`])
9993
9993
-
},
9994
9994
-
name: {
9995
9995
-
locate: libzip.cwrap(`zip_name_locate`, `number`, [`number`, `string`, `number`])
9996
9996
-
},
9997
9997
-
source: {
9998
9998
-
fromUnattachedBuffer: libzip.cwrap(`zip_source_buffer_create`, `number`, [`number`, ...number64, `number`, `number`]),
9999
9999
-
fromBuffer: libzip.cwrap(`zip_source_buffer`, `number`, [`number`, `number`, ...number64, `number`]),
10000
10000
-
free: libzip.cwrap(`zip_source_free`, null, [`number`]),
10001
10001
-
keep: libzip.cwrap(`zip_source_keep`, null, [`number`]),
10002
10002
-
open: libzip.cwrap(`zip_source_open`, `number`, [`number`]),
10003
10003
-
close: libzip.cwrap(`zip_source_close`, `number`, [`number`]),
10004
10004
-
seek: libzip.cwrap(`zip_source_seek`, `number`, [`number`, ...number64, `number`]),
10005
10005
-
tell: libzip.cwrap(`zip_source_tell`, `number`, [`number`]),
10006
10006
-
read: libzip.cwrap(`zip_source_read`, `number`, [`number`, `number`, `number`]),
10007
10007
-
error: libzip.cwrap(`zip_source_error`, `number`, [`number`]),
10008
10008
-
setMtime: libzip.cwrap(`zip_source_set_mtime`, `number`, [`number`, `number`])
10009
10009
-
},
10010
10010
-
struct: {
10011
10011
-
stat: libzip.cwrap(`zipstruct_stat`, `number`, []),
10012
10012
-
statS: libzip.cwrap(`zipstruct_statS`, `number`, []),
10013
10013
-
statName: libzip.cwrap(`zipstruct_stat_name`, `string`, [`number`]),
10014
10014
-
statIndex: libzip.cwrap(`zipstruct_stat_index`, `number`, [`number`]),
10015
10015
-
statSize: libzip.cwrap(`zipstruct_stat_size`, `number`, [`number`]),
10016
10016
-
statCompSize: libzip.cwrap(`zipstruct_stat_comp_size`, `number`, [`number`]),
10017
10017
-
statCompMethod: libzip.cwrap(`zipstruct_stat_comp_method`, `number`, [`number`]),
10018
10018
-
statMtime: libzip.cwrap(`zipstruct_stat_mtime`, `number`, [`number`]),
10019
10019
-
statCrc: libzip.cwrap(`zipstruct_stat_crc`, `number`, [`number`]),
10020
10020
-
error: libzip.cwrap(`zipstruct_error`, `number`, []),
10021
10021
-
errorS: libzip.cwrap(`zipstruct_errorS`, `number`, []),
10022
10022
-
errorCodeZip: libzip.cwrap(`zipstruct_error_code_zip`, `number`, [`number`])
10023
10023
-
}
10024
10024
-
});
10025
10025
-
10026
10026
-
let mod = null;
10027
10027
-
function getLibzipSync() {
10028
10028
-
if (mod === null)
10029
10029
-
mod = makeInterface(createModule());
10030
10030
-
return mod;
10031
10031
-
}
10032
10032
-
10033
10033
-
var ErrorCode = /* @__PURE__ */ ((ErrorCode2) => {
10034
10034
-
ErrorCode2["API_ERROR"] = `API_ERROR`;
10035
10035
-
ErrorCode2["BUILTIN_NODE_RESOLUTION_FAILED"] = `BUILTIN_NODE_RESOLUTION_FAILED`;
10036
10036
-
ErrorCode2["EXPORTS_RESOLUTION_FAILED"] = `EXPORTS_RESOLUTION_FAILED`;
10037
10037
-
ErrorCode2["MISSING_DEPENDENCY"] = `MISSING_DEPENDENCY`;
10038
10038
-
ErrorCode2["MISSING_PEER_DEPENDENCY"] = `MISSING_PEER_DEPENDENCY`;
10039
10039
-
ErrorCode2["QUALIFIED_PATH_RESOLUTION_FAILED"] = `QUALIFIED_PATH_RESOLUTION_FAILED`;
10040
10040
-
ErrorCode2["INTERNAL"] = `INTERNAL`;
10041
10041
-
ErrorCode2["UNDECLARED_DEPENDENCY"] = `UNDECLARED_DEPENDENCY`;
10042
10042
-
ErrorCode2["UNSUPPORTED"] = `UNSUPPORTED`;
10043
10043
-
return ErrorCode2;
10044
10044
-
})(ErrorCode || {});
10045
10045
-
const MODULE_NOT_FOUND_ERRORS = /* @__PURE__ */ new Set([
10046
10046
-
"BUILTIN_NODE_RESOLUTION_FAILED" /* BUILTIN_NODE_RESOLUTION_FAILED */,
10047
10047
-
"MISSING_DEPENDENCY" /* MISSING_DEPENDENCY */,
10048
10048
-
"MISSING_PEER_DEPENDENCY" /* MISSING_PEER_DEPENDENCY */,
10049
10049
-
"QUALIFIED_PATH_RESOLUTION_FAILED" /* QUALIFIED_PATH_RESOLUTION_FAILED */,
10050
10050
-
"UNDECLARED_DEPENDENCY" /* UNDECLARED_DEPENDENCY */
10051
10051
-
]);
10052
10052
-
function makeError(pnpCode, message, data = {}, code) {
10053
10053
-
code != null ? code : code = MODULE_NOT_FOUND_ERRORS.has(pnpCode) ? `MODULE_NOT_FOUND` : pnpCode;
10054
10054
-
const propertySpec = {
10055
10055
-
configurable: true,
10056
10056
-
writable: true,
10057
10057
-
enumerable: false
10058
10058
-
};
10059
10059
-
return Object.defineProperties(new Error(message), {
10060
10060
-
code: {
10061
10061
-
...propertySpec,
10062
10062
-
value: code
10063
10063
-
},
10064
10064
-
pnpCode: {
10065
10065
-
...propertySpec,
10066
10066
-
value: pnpCode
10067
10067
-
},
10068
10068
-
data: {
10069
10069
-
...propertySpec,
10070
10070
-
value: data
10071
10071
-
}
10072
10072
-
});
10073
10073
-
}
10074
10074
-
function getIssuerModule(parent) {
10075
10075
-
let issuer = parent;
10076
10076
-
while (issuer && (issuer.id === `[eval]` || issuer.id === `<repl>` || !issuer.filename))
10077
10077
-
issuer = issuer.parent;
10078
10078
-
return issuer || null;
10079
10079
-
}
10080
10080
-
function getPathForDisplay(p) {
10081
10081
-
return npath.normalize(npath.fromPortablePath(p));
10082
10082
-
}
10083
10083
-
10084
10084
-
const [major, minor] = process.versions.node.split(`.`).map((value) => parseInt(value, 10));
10085
10085
-
const WATCH_MODE_MESSAGE_USES_ARRAYS = major > 19 || major === 19 && minor >= 2 || major === 18 && minor >= 13;
10086
10086
-
10087
10087
-
const builtinModules = new Set(require$$0.Module.builtinModules || Object.keys(process.binding(`natives`)));
10088
10088
-
const isBuiltinModule = (request) => request.startsWith(`node:`) || builtinModules.has(request);
10089
10089
-
function readPackageScope(checkPath) {
10090
10090
-
const rootSeparatorIndex = checkPath.indexOf(npath.sep);
10091
10091
-
let separatorIndex;
10092
10092
-
do {
10093
10093
-
separatorIndex = checkPath.lastIndexOf(npath.sep);
10094
10094
-
checkPath = checkPath.slice(0, separatorIndex);
10095
10095
-
if (checkPath.endsWith(`${npath.sep}node_modules`))
10096
10096
-
return false;
10097
10097
-
const pjson = readPackage(checkPath + npath.sep);
10098
10098
-
if (pjson) {
10099
10099
-
return {
10100
10100
-
data: pjson,
10101
10101
-
path: checkPath
10102
10102
-
};
10103
10103
-
}
10104
10104
-
} while (separatorIndex > rootSeparatorIndex);
10105
10105
-
return false;
10106
10106
-
}
10107
10107
-
function readPackage(requestPath) {
10108
10108
-
const jsonPath = npath.resolve(requestPath, `package.json`);
10109
10109
-
if (!fs__default.default.existsSync(jsonPath))
10110
10110
-
return null;
10111
10111
-
return JSON.parse(fs__default.default.readFileSync(jsonPath, `utf8`));
10112
10112
-
}
10113
10113
-
function ERR_REQUIRE_ESM(filename, parentPath = null) {
10114
10114
-
const basename = parentPath && path__default.default.basename(filename) === path__default.default.basename(parentPath) ? filename : path__default.default.basename(filename);
10115
10115
-
const msg = `require() of ES Module ${filename}${parentPath ? ` from ${parentPath}` : ``} not supported.
10116
10116
-
Instead change the require of ${basename} in ${parentPath} to a dynamic import() which is available in all CommonJS modules.`;
10117
10117
-
const err = new Error(msg);
10118
10118
-
err.code = `ERR_REQUIRE_ESM`;
10119
10119
-
return err;
10120
10120
-
}
10121
10121
-
function reportRequiredFilesToWatchMode(files) {
10122
10122
-
if (process.env.WATCH_REPORT_DEPENDENCIES && process.send) {
10123
10123
-
files = files.map((filename) => npath.fromPortablePath(VirtualFS.resolveVirtual(npath.toPortablePath(filename))));
10124
10124
-
if (WATCH_MODE_MESSAGE_USES_ARRAYS) {
10125
10125
-
process.send({ "watch:require": files });
10126
10126
-
} else {
10127
10127
-
for (const filename of files) {
10128
10128
-
process.send({ "watch:require": filename });
10129
10129
-
}
10130
10130
-
}
10131
10131
-
}
10132
10132
-
}
10133
10133
-
10134
10134
-
function applyPatch(pnpapi, opts) {
10135
10135
-
const defaultCache = {};
10136
10136
-
let enableNativeHooks = true;
10137
10137
-
process.versions.pnp = String(pnpapi.VERSIONS.std);
10138
10138
-
const moduleExports = require$$0__default.default;
10139
10139
-
moduleExports.findPnpApi = (lookupSource) => {
10140
10140
-
const lookupPath = lookupSource instanceof url.URL ? url.fileURLToPath(lookupSource) : lookupSource;
10141
10141
-
const apiPath = opts.manager.findApiPathFor(lookupPath);
10142
10142
-
if (apiPath === null)
10143
10143
-
return null;
10144
10144
-
const apiEntry = opts.manager.getApiEntry(apiPath, true);
10145
10145
-
return apiEntry.instance.findPackageLocator(lookupPath) ? apiEntry.instance : null;
10146
10146
-
};
10147
10147
-
function getRequireStack(parent) {
10148
10148
-
const requireStack = [];
10149
10149
-
for (let cursor = parent; cursor; cursor = cursor.parent)
10150
10150
-
requireStack.push(cursor.filename || cursor.id);
10151
10151
-
return requireStack;
10152
10152
-
}
10153
10153
-
const originalModuleLoad = require$$0.Module._load;
10154
10154
-
require$$0.Module._load = function(request, parent, isMain) {
10155
10155
-
if (!enableNativeHooks)
10156
10156
-
return originalModuleLoad.call(require$$0.Module, request, parent, isMain);
10157
10157
-
if (isBuiltinModule(request)) {
10158
10158
-
try {
10159
10159
-
enableNativeHooks = false;
10160
10160
-
return originalModuleLoad.call(require$$0.Module, request, parent, isMain);
10161
10161
-
} finally {
10162
10162
-
enableNativeHooks = true;
10163
10163
-
}
10164
10164
-
}
10165
10165
-
const parentApiPath = opts.manager.getApiPathFromParent(parent);
10166
10166
-
const parentApi = parentApiPath !== null ? opts.manager.getApiEntry(parentApiPath, true).instance : null;
10167
10167
-
if (parentApi === null)
10168
10168
-
return originalModuleLoad(request, parent, isMain);
10169
10169
-
if (request === `pnpapi`)
10170
10170
-
return parentApi;
10171
10171
-
const modulePath = require$$0.Module._resolveFilename(request, parent, isMain);
10172
10172
-
const isOwnedByRuntime = parentApi !== null ? parentApi.findPackageLocator(modulePath) !== null : false;
10173
10173
-
const moduleApiPath = isOwnedByRuntime ? parentApiPath : opts.manager.findApiPathFor(npath.dirname(modulePath));
10174
10174
-
const entry = moduleApiPath !== null ? opts.manager.getApiEntry(moduleApiPath) : { instance: null, cache: defaultCache };
10175
10175
-
const cacheEntry = entry.cache[modulePath];
10176
10176
-
if (cacheEntry) {
10177
10177
-
if (cacheEntry.loaded === false && cacheEntry.isLoading !== true) {
10178
10178
-
try {
10179
10179
-
cacheEntry.isLoading = true;
10180
10180
-
if (isMain) {
10181
10181
-
process.mainModule = cacheEntry;
10182
10182
-
cacheEntry.id = `.`;
10183
10183
-
}
10184
10184
-
cacheEntry.load(modulePath);
10185
10185
-
} finally {
10186
10186
-
cacheEntry.isLoading = false;
10187
10187
-
}
10188
10188
-
}
10189
10189
-
return cacheEntry.exports;
10190
10190
-
}
10191
10191
-
const module = new require$$0.Module(modulePath, parent != null ? parent : void 0);
10192
10192
-
module.pnpApiPath = moduleApiPath;
10193
10193
-
reportRequiredFilesToWatchMode([modulePath]);
10194
10194
-
entry.cache[modulePath] = module;
10195
10195
-
if (isMain) {
10196
10196
-
process.mainModule = module;
10197
10197
-
module.id = `.`;
10198
10198
-
}
10199
10199
-
let hasThrown = true;
10200
10200
-
try {
10201
10201
-
module.isLoading = true;
10202
10202
-
module.load(modulePath);
10203
10203
-
hasThrown = false;
10204
10204
-
} finally {
10205
10205
-
module.isLoading = false;
10206
10206
-
if (hasThrown) {
10207
10207
-
delete require$$0.Module._cache[modulePath];
10208
10208
-
}
10209
10209
-
}
10210
10210
-
return module.exports;
10211
10211
-
};
10212
10212
-
function getIssuerSpecsFromPaths(paths) {
10213
10213
-
return paths.map((path) => ({
10214
10214
-
apiPath: opts.manager.findApiPathFor(path),
10215
10215
-
path,
10216
10216
-
module: null
10217
10217
-
}));
10218
10218
-
}
10219
10219
-
function getIssuerSpecsFromModule(module) {
10220
10220
-
var _a;
10221
10221
-
if (module && module.id !== `<repl>` && module.id !== `internal/preload` && !module.parent && !module.filename && module.paths.length > 0) {
10222
10222
-
return [{
10223
10223
-
apiPath: opts.manager.findApiPathFor(module.paths[0]),
10224
10224
-
path: module.paths[0],
10225
10225
-
module
10226
10226
-
}];
10227
10227
-
}
10228
10228
-
const issuer = getIssuerModule(module);
10229
10229
-
if (issuer !== null) {
10230
10230
-
const path = npath.dirname(issuer.filename);
10231
10231
-
const apiPath = opts.manager.getApiPathFromParent(issuer);
10232
10232
-
return [{ apiPath, path, module }];
10233
10233
-
} else {
10234
10234
-
const path = process.cwd();
10235
10235
-
const apiPath = (_a = opts.manager.findApiPathFor(npath.join(path, `[file]`))) != null ? _a : opts.manager.getApiPathFromParent(null);
10236
10236
-
return [{ apiPath, path, module }];
10237
10237
-
}
10238
10238
-
}
10239
10239
-
function makeFakeParent(path) {
10240
10240
-
const fakeParent = new require$$0.Module(``);
10241
10241
-
const fakeFilePath = npath.join(path, `[file]`);
10242
10242
-
fakeParent.paths = require$$0.Module._nodeModulePaths(fakeFilePath);
10243
10243
-
return fakeParent;
10244
10244
-
}
10245
10245
-
const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:@[^/]+\/)?[^/]+)\/*(.*|)$/;
10246
10246
-
const originalModuleResolveFilename = require$$0.Module._resolveFilename;
10247
10247
-
require$$0.Module._resolveFilename = function(request, parent, isMain, options) {
10248
10248
-
if (isBuiltinModule(request))
10249
10249
-
return request;
10250
10250
-
if (!enableNativeHooks)
10251
10251
-
return originalModuleResolveFilename.call(require$$0.Module, request, parent, isMain, options);
10252
10252
-
if (options && options.plugnplay === false) {
10253
10253
-
const { plugnplay, ...rest } = options;
10254
10254
-
const forwardedOptions = Object.keys(rest).length > 0 ? rest : void 0;
10255
10255
-
try {
10256
10256
-
enableNativeHooks = false;
10257
10257
-
return originalModuleResolveFilename.call(require$$0.Module, request, parent, isMain, forwardedOptions);
10258
10258
-
} finally {
10259
10259
-
enableNativeHooks = true;
10260
10260
-
}
10261
10261
-
}
10262
10262
-
if (options) {
10263
10263
-
const optionNames = new Set(Object.keys(options));
10264
10264
-
optionNames.delete(`paths`);
10265
10265
-
optionNames.delete(`plugnplay`);
10266
10266
-
if (optionNames.size > 0) {
10267
10267
-
throw makeError(
10268
10268
-
ErrorCode.UNSUPPORTED,
10269
10269
-
`Some options passed to require() aren't supported by PnP yet (${Array.from(optionNames).join(`, `)})`
10270
10270
-
);
10271
10271
-
}
10272
10272
-
}
10273
10273
-
const issuerSpecs = options && options.paths ? getIssuerSpecsFromPaths(options.paths) : getIssuerSpecsFromModule(parent);
10274
10274
-
if (request.match(pathRegExp) === null) {
10275
10275
-
const parentDirectory = (parent == null ? void 0 : parent.filename) != null ? npath.dirname(parent.filename) : null;
10276
10276
-
const absoluteRequest = npath.isAbsolute(request) ? request : parentDirectory !== null ? npath.resolve(parentDirectory, request) : null;
10277
10277
-
if (absoluteRequest !== null) {
10278
10278
-
const apiPath = parentDirectory === npath.dirname(absoluteRequest) && (parent == null ? void 0 : parent.pnpApiPath) ? parent.pnpApiPath : opts.manager.findApiPathFor(absoluteRequest);
10279
10279
-
if (apiPath !== null) {
10280
10280
-
issuerSpecs.unshift({
10281
10281
-
apiPath,
10282
10282
-
path: parentDirectory,
10283
10283
-
module: null
10284
10284
-
});
10285
10285
-
}
10286
10286
-
}
10287
10287
-
}
10288
10288
-
let firstError;
10289
10289
-
for (const { apiPath, path, module } of issuerSpecs) {
10290
10290
-
let resolution;
10291
10291
-
const issuerApi = apiPath !== null ? opts.manager.getApiEntry(apiPath, true).instance : null;
10292
10292
-
try {
10293
10293
-
if (issuerApi !== null) {
10294
10294
-
resolution = issuerApi.resolveRequest(request, path !== null ? `${path}/` : null);
10295
10295
-
} else {
10296
10296
-
if (path === null)
10297
10297
-
throw new Error(`Assertion failed: Expected the path to be set`);
10298
10298
-
resolution = originalModuleResolveFilename.call(require$$0.Module, request, module || makeFakeParent(path), isMain);
10299
10299
-
}
10300
10300
-
} catch (error) {
10301
10301
-
firstError = firstError || error;
10302
10302
-
continue;
10303
10303
-
}
10304
10304
-
if (resolution !== null) {
10305
10305
-
return resolution;
10306
10306
-
}
10307
10307
-
}
10308
10308
-
const requireStack = getRequireStack(parent);
10309
10309
-
Object.defineProperty(firstError, `requireStack`, {
10310
10310
-
configurable: true,
10311
10311
-
writable: true,
10312
10312
-
enumerable: false,
10313
10313
-
value: requireStack
10314
10314
-
});
10315
10315
-
if (requireStack.length > 0)
10316
10316
-
firstError.message += `
10317
10317
-
Require stack:
10318
10318
-
- ${requireStack.join(`
10319
10319
-
- `)}`;
10320
10320
-
if (typeof firstError.pnpCode === `string`)
10321
10321
-
Error.captureStackTrace(firstError);
10322
10322
-
throw firstError;
10323
10323
-
};
10324
10324
-
const originalFindPath = require$$0.Module._findPath;
10325
10325
-
require$$0.Module._findPath = function(request, paths, isMain) {
10326
10326
-
if (request === `pnpapi`)
10327
10327
-
return false;
10328
10328
-
if (!enableNativeHooks)
10329
10329
-
return originalFindPath.call(require$$0.Module, request, paths, isMain);
10330
10330
-
const isAbsolute = npath.isAbsolute(request);
10331
10331
-
if (isAbsolute)
10332
10332
-
paths = [``];
10333
10333
-
else if (!paths || paths.length === 0)
10334
10334
-
return false;
10335
10335
-
for (const path of paths) {
10336
10336
-
let resolution;
10337
10337
-
try {
10338
10338
-
const pnpApiPath = opts.manager.findApiPathFor(isAbsolute ? request : path);
10339
10339
-
if (pnpApiPath !== null) {
10340
10340
-
const api = opts.manager.getApiEntry(pnpApiPath, true).instance;
10341
10341
-
resolution = api.resolveRequest(request, path) || false;
10342
10342
-
} else {
10343
10343
-
resolution = originalFindPath.call(require$$0.Module, request, [path], isMain);
10344
10344
-
}
10345
10345
-
} catch (error) {
10346
10346
-
continue;
10347
10347
-
}
10348
10348
-
if (resolution) {
10349
10349
-
return resolution;
10350
10350
-
}
10351
10351
-
}
10352
10352
-
return false;
10353
10353
-
};
10354
10354
-
const originalExtensionJSFunction = require$$0.Module._extensions[`.js`];
10355
10355
-
require$$0.Module._extensions[`.js`] = function(module, filename) {
10356
10356
-
var _a, _b;
10357
10357
-
if (filename.endsWith(`.js`)) {
10358
10358
-
const pkg = readPackageScope(filename);
10359
10359
-
if (pkg && ((_a = pkg.data) == null ? void 0 : _a.type) === `module`) {
10360
10360
-
const err = ERR_REQUIRE_ESM(filename, (_b = module.parent) == null ? void 0 : _b.filename);
10361
10361
-
Error.captureStackTrace(err);
10362
10362
-
throw err;
10363
10363
-
}
10364
10364
-
}
10365
10365
-
originalExtensionJSFunction.call(this, module, filename);
10366
10366
-
};
10367
10367
-
const originalDlopen = process.dlopen;
10368
10368
-
process.dlopen = function(...args) {
10369
10369
-
const [module, filename, ...rest] = args;
10370
10370
-
return originalDlopen.call(
10371
10371
-
this,
10372
10372
-
module,
10373
10373
-
npath.fromPortablePath(VirtualFS.resolveVirtual(npath.toPortablePath(filename))),
10374
10374
-
...rest
10375
10375
-
);
10376
10376
-
};
10377
10377
-
const originalEmit = process.emit;
10378
10378
-
process.emit = function(name, data, ...args) {
10379
10379
-
if (name === `warning` && typeof data === `object` && data.name === `ExperimentalWarning` && (data.message.includes(`--experimental-loader`) || data.message.includes(`Custom ESM Loaders is an experimental feature`)))
10380
10380
-
return false;
10381
10381
-
return originalEmit.apply(process, arguments);
10382
10382
-
};
10383
10383
-
patchFs(fs__default.default, new PosixFS(opts.fakeFs));
10384
10384
-
}
10385
10385
-
10386
10386
-
function hydrateRuntimeState(data, { basePath }) {
10387
10387
-
const portablePath = npath.toPortablePath(basePath);
10388
10388
-
const absolutePortablePath = ppath.resolve(portablePath);
10389
10389
-
const ignorePattern = data.ignorePatternData !== null ? new RegExp(data.ignorePatternData) : null;
10390
10390
-
const packageLocatorsByLocations = /* @__PURE__ */ new Map();
10391
10391
-
const packageRegistry = new Map(data.packageRegistryData.map(([packageName, packageStoreData]) => {
10392
10392
-
return [packageName, new Map(packageStoreData.map(([packageReference, packageInformationData]) => {
10393
10393
-
var _a;
10394
10394
-
if (packageName === null !== (packageReference === null))
10395
10395
-
throw new Error(`Assertion failed: The name and reference should be null, or neither should`);
10396
10396
-
const discardFromLookup = (_a = packageInformationData.discardFromLookup) != null ? _a : false;
10397
10397
-
const packageLocator = { name: packageName, reference: packageReference };
10398
10398
-
const entry = packageLocatorsByLocations.get(packageInformationData.packageLocation);
10399
10399
-
if (!entry) {
10400
10400
-
packageLocatorsByLocations.set(packageInformationData.packageLocation, { locator: packageLocator, discardFromLookup });
10401
10401
-
} else {
10402
10402
-
entry.discardFromLookup = entry.discardFromLookup && discardFromLookup;
10403
10403
-
if (!discardFromLookup) {
10404
10404
-
entry.locator = packageLocator;
10405
10405
-
}
10406
10406
-
}
10407
10407
-
let resolvedPackageLocation = null;
10408
10408
-
return [packageReference, {
10409
10409
-
packageDependencies: new Map(packageInformationData.packageDependencies),
10410
10410
-
packagePeers: new Set(packageInformationData.packagePeers),
10411
10411
-
linkType: packageInformationData.linkType,
10412
10412
-
discardFromLookup,
10413
10413
-
get packageLocation() {
10414
10414
-
return resolvedPackageLocation || (resolvedPackageLocation = ppath.join(absolutePortablePath, packageInformationData.packageLocation));
10415
10415
-
}
10416
10416
-
}];
10417
10417
-
}))];
10418
10418
-
}));
10419
10419
-
const fallbackExclusionList = new Map(data.fallbackExclusionList.map(([packageName, packageReferences]) => {
10420
10420
-
return [packageName, new Set(packageReferences)];
10421
10421
-
}));
10422
10422
-
const fallbackPool = new Map(data.fallbackPool);
10423
10423
-
const dependencyTreeRoots = data.dependencyTreeRoots;
10424
10424
-
const enableTopLevelFallback = data.enableTopLevelFallback;
10425
10425
-
return {
10426
10426
-
basePath: portablePath,
10427
10427
-
dependencyTreeRoots,
10428
10428
-
enableTopLevelFallback,
10429
10429
-
fallbackExclusionList,
10430
10430
-
fallbackPool,
10431
10431
-
ignorePattern,
10432
10432
-
packageLocatorsByLocations,
10433
10433
-
packageRegistry
10434
10434
-
};
10435
10435
-
}
10436
10436
-
10437
10437
-
/**
10438
10438
-
* @param {object} exports
10439
10439
-
* @param {Set<string>} keys
10440
10440
-
*/
10441
10441
-
function loop(exports, keys) {
10442
10442
-
if (typeof exports === 'string') {
10443
10443
-
return exports;
10444
10444
-
}
10445
10445
-
10446
10446
-
if (exports) {
10447
10447
-
let idx, tmp;
10448
10448
-
if (Array.isArray(exports)) {
10449
10449
-
for (idx=0; idx < exports.length; idx++) {
10450
10450
-
if (tmp = loop(exports[idx], keys)) return tmp;
10451
10451
-
}
10452
10452
-
} else {
10453
10453
-
for (idx in exports) {
10454
10454
-
if (keys.has(idx)) {
10455
10455
-
return loop(exports[idx], keys);
10456
10456
-
}
10457
10457
-
}
10458
10458
-
}
10459
10459
-
}
10460
10460
-
}
10461
10461
-
10462
10462
-
/**
10463
10463
-
* @param {string} name The package name
10464
10464
-
* @param {string} entry The target entry, eg "."
10465
10465
-
* @param {number} [condition] Unmatched condition?
10466
10466
-
*/
10467
10467
-
function bail(name, entry, condition) {
10468
10468
-
throw new Error(
10469
10469
-
condition
10470
10470
-
? `No known conditions for "${entry}" entry in "${name}" package`
10471
10471
-
: `Missing "${entry}" export in "${name}" package`
10472
10472
-
);
10473
10473
-
}
10474
10474
-
10475
10475
-
/**
10476
10476
-
* @param {string} name the package name
10477
10477
-
* @param {string} entry the target path/import
10478
10478
-
*/
10479
10479
-
function toName(name, entry) {
10480
10480
-
return entry === name ? '.'
10481
10481
-
: entry[0] === '.' ? entry
10482
10482
-
: entry.replace(new RegExp('^' + name + '\/'), './');
10483
10483
-
}
10484
10484
-
10485
10485
-
/**
10486
10486
-
* @param {object} pkg package.json contents
10487
10487
-
* @param {string} [entry] entry name or import path
10488
10488
-
* @param {object} [options]
10489
10489
-
* @param {boolean} [options.browser]
10490
10490
-
* @param {boolean} [options.require]
10491
10491
-
* @param {string[]} [options.conditions]
10492
10492
-
* @param {boolean} [options.unsafe]
10493
10493
-
*/
10494
10494
-
function resolve(pkg, entry='.', options={}) {
10495
10495
-
let { name, exports } = pkg;
10496
10496
-
10497
10497
-
if (exports) {
10498
10498
-
let { browser, require, unsafe, conditions=[] } = options;
10499
10499
-
10500
10500
-
let target = toName(name, entry);
10501
10501
-
if (target[0] !== '.') target = './' + target;
10502
10502
-
10503
10503
-
if (typeof exports === 'string') {
10504
10504
-
return target === '.' ? exports : bail(name, target);
10505
10505
-
}
10506
10506
-
10507
10507
-
let allows = new Set(['default', ...conditions]);
10508
10508
-
unsafe || allows.add(require ? 'require' : 'import');
10509
10509
-
unsafe || allows.add(browser ? 'browser' : 'node');
10510
10510
-
10511
10511
-
let key, tmp, isSingle=false;
10512
10512
-
10513
10513
-
for (key in exports) {
10514
10514
-
isSingle = key[0] !== '.';
10515
10515
-
break;
10516
10516
-
}
10517
10517
-
10518
10518
-
if (isSingle) {
10519
10519
-
return target === '.'
10520
10520
-
? loop(exports, allows) || bail(name, target, 1)
10521
10521
-
: bail(name, target);
10522
10522
-
}
10523
10523
-
10524
10524
-
if (tmp = exports[target]) {
10525
10525
-
return loop(tmp, allows) || bail(name, target, 1);
10526
10526
-
}
10527
10527
-
10528
10528
-
for (key in exports) {
10529
10529
-
tmp = key[key.length - 1];
10530
10530
-
if (tmp === '/' && target.startsWith(key)) {
10531
10531
-
return (tmp = loop(exports[key], allows))
10532
10532
-
? (tmp + target.substring(key.length))
10533
10533
-
: bail(name, target, 1);
10534
10534
-
}
10535
10535
-
if (tmp === '*' && target.startsWith(key.slice(0, -1))) {
10536
10536
-
// do not trigger if no *content* to inject
10537
10537
-
if (target.substring(key.length - 1).length > 0) {
10538
10538
-
return (tmp = loop(exports[key], allows))
10539
10539
-
? tmp.replace('*', target.substring(key.length - 1))
10540
10540
-
: bail(name, target, 1);
10541
10541
-
}
10542
10542
-
}
10543
10543
-
}
10544
10544
-
10545
10545
-
return bail(name, target);
10546
10546
-
}
10547
10547
-
}
10548
10548
-
10549
10549
-
const ArrayIsArray = Array.isArray;
10550
10550
-
const JSONStringify = JSON.stringify;
10551
10551
-
const ObjectGetOwnPropertyNames = Object.getOwnPropertyNames;
10552
10552
-
const ObjectPrototypeHasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
10553
10553
-
const RegExpPrototypeExec = (obj, string) => RegExp.prototype.exec.call(obj, string);
10554
10554
-
const RegExpPrototypeSymbolReplace = (obj, ...rest) => RegExp.prototype[Symbol.replace].apply(obj, rest);
10555
10555
-
const StringPrototypeEndsWith = (str, ...rest) => String.prototype.endsWith.apply(str, rest);
10556
10556
-
const StringPrototypeIncludes = (str, ...rest) => String.prototype.includes.apply(str, rest);
10557
10557
-
const StringPrototypeLastIndexOf = (str, ...rest) => String.prototype.lastIndexOf.apply(str, rest);
10558
10558
-
const StringPrototypeIndexOf = (str, ...rest) => String.prototype.indexOf.apply(str, rest);
10559
10559
-
const StringPrototypeReplace = (str, ...rest) => String.prototype.replace.apply(str, rest);
10560
10560
-
const StringPrototypeSlice = (str, ...rest) => String.prototype.slice.apply(str, rest);
10561
10561
-
const StringPrototypeStartsWith = (str, ...rest) => String.prototype.startsWith.apply(str, rest);
10562
10562
-
const SafeMap = Map;
10563
10563
-
const JSONParse = JSON.parse;
10564
10564
-
10565
10565
-
function createErrorType(code, messageCreator, errorType) {
10566
10566
-
return class extends errorType {
10567
10567
-
constructor(...args) {
10568
10568
-
super(messageCreator(...args));
10569
10569
-
this.code = code;
10570
10570
-
this.name = `${errorType.name} [${code}]`;
10571
10571
-
}
10572
10572
-
};
10573
10573
-
}
10574
10574
-
const ERR_PACKAGE_IMPORT_NOT_DEFINED = createErrorType(
10575
10575
-
`ERR_PACKAGE_IMPORT_NOT_DEFINED`,
10576
10576
-
(specifier, packagePath, base) => {
10577
10577
-
return `Package import specifier "${specifier}" is not defined${packagePath ? ` in package ${packagePath}package.json` : ``} imported from ${base}`;
10578
10578
-
},
10579
10579
-
TypeError
10580
10580
-
);
10581
10581
-
const ERR_INVALID_MODULE_SPECIFIER = createErrorType(
10582
10582
-
`ERR_INVALID_MODULE_SPECIFIER`,
10583
10583
-
(request, reason, base = void 0) => {
10584
10584
-
return `Invalid module "${request}" ${reason}${base ? ` imported from ${base}` : ``}`;
10585
10585
-
},
10586
10586
-
TypeError
10587
10587
-
);
10588
10588
-
const ERR_INVALID_PACKAGE_TARGET = createErrorType(
10589
10589
-
`ERR_INVALID_PACKAGE_TARGET`,
10590
10590
-
(pkgPath, key, target, isImport = false, base = void 0) => {
10591
10591
-
const relError = typeof target === `string` && !isImport && target.length && !StringPrototypeStartsWith(target, `./`);
10592
10592
-
if (key === `.`) {
10593
10593
-
assert__default.default(isImport === false);
10594
10594
-
return `Invalid "exports" main target ${JSONStringify(target)} defined in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`;
10595
10595
-
}
10596
10596
-
return `Invalid "${isImport ? `imports` : `exports`}" target ${JSONStringify(
10597
10597
-
target
10598
10598
-
)} defined for '${key}' in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`;
10599
10599
-
},
10600
10600
-
Error
10601
10601
-
);
10602
10602
-
const ERR_INVALID_PACKAGE_CONFIG = createErrorType(
10603
10603
-
`ERR_INVALID_PACKAGE_CONFIG`,
10604
10604
-
(path, base, message) => {
10605
10605
-
return `Invalid package config ${path}${base ? ` while importing ${base}` : ``}${message ? `. ${message}` : ``}`;
10606
10606
-
},
10607
10607
-
Error
10608
10608
-
);
10609
10609
-
10610
10610
-
function filterOwnProperties(source, keys) {
10611
10611
-
const filtered = /* @__PURE__ */ Object.create(null);
10612
10612
-
for (let i = 0; i < keys.length; i++) {
10613
10613
-
const key = keys[i];
10614
10614
-
if (ObjectPrototypeHasOwnProperty(source, key)) {
10615
10615
-
filtered[key] = source[key];
10616
10616
-
}
10617
10617
-
}
10618
10618
-
return filtered;
10619
10619
-
}
10620
10620
-
10621
10621
-
const packageJSONCache = new SafeMap();
10622
10622
-
function getPackageConfig(path, specifier, base, readFileSyncFn) {
10623
10623
-
const existing = packageJSONCache.get(path);
10624
10624
-
if (existing !== void 0) {
10625
10625
-
return existing;
10626
10626
-
}
10627
10627
-
const source = readFileSyncFn(path);
10628
10628
-
if (source === void 0) {
10629
10629
-
const packageConfig2 = {
10630
10630
-
pjsonPath: path,
10631
10631
-
exists: false,
10632
10632
-
main: void 0,
10633
10633
-
name: void 0,
10634
10634
-
type: "none",
10635
10635
-
exports: void 0,
10636
10636
-
imports: void 0
10637
10637
-
};
10638
10638
-
packageJSONCache.set(path, packageConfig2);
10639
10639
-
return packageConfig2;
10640
10640
-
}
10641
10641
-
let packageJSON;
10642
10642
-
try {
10643
10643
-
packageJSON = JSONParse(source);
10644
10644
-
} catch (error) {
10645
10645
-
throw new ERR_INVALID_PACKAGE_CONFIG(
10646
10646
-
path,
10647
10647
-
(base ? `"${specifier}" from ` : "") + url.fileURLToPath(base || specifier),
10648
10648
-
error.message
10649
10649
-
);
10650
10650
-
}
10651
10651
-
let { imports, main, name, type } = filterOwnProperties(packageJSON, [
10652
10652
-
"imports",
10653
10653
-
"main",
10654
10654
-
"name",
10655
10655
-
"type"
10656
10656
-
]);
10657
10657
-
const exports = ObjectPrototypeHasOwnProperty(packageJSON, "exports") ? packageJSON.exports : void 0;
10658
10658
-
if (typeof imports !== "object" || imports === null) {
10659
10659
-
imports = void 0;
10660
10660
-
}
10661
10661
-
if (typeof main !== "string") {
10662
10662
-
main = void 0;
10663
10663
-
}
10664
10664
-
if (typeof name !== "string") {
10665
10665
-
name = void 0;
10666
10666
-
}
10667
10667
-
if (type !== "module" && type !== "commonjs") {
10668
10668
-
type = "none";
10669
10669
-
}
10670
10670
-
const packageConfig = {
10671
10671
-
pjsonPath: path,
10672
10672
-
exists: true,
10673
10673
-
main,
10674
10674
-
name,
10675
10675
-
type,
10676
10676
-
exports,
10677
10677
-
imports
10678
10678
-
};
10679
10679
-
packageJSONCache.set(path, packageConfig);
10680
10680
-
return packageConfig;
10681
10681
-
}
10682
10682
-
function getPackageScopeConfig(resolved, readFileSyncFn) {
10683
10683
-
let packageJSONUrl = new URL("./package.json", resolved);
10684
10684
-
while (true) {
10685
10685
-
const packageJSONPath2 = packageJSONUrl.pathname;
10686
10686
-
if (StringPrototypeEndsWith(packageJSONPath2, "node_modules/package.json")) {
10687
10687
-
break;
10688
10688
-
}
10689
10689
-
const packageConfig2 = getPackageConfig(
10690
10690
-
url.fileURLToPath(packageJSONUrl),
10691
10691
-
resolved,
10692
10692
-
void 0,
10693
10693
-
readFileSyncFn
10694
10694
-
);
10695
10695
-
if (packageConfig2.exists) {
10696
10696
-
return packageConfig2;
10697
10697
-
}
10698
10698
-
const lastPackageJSONUrl = packageJSONUrl;
10699
10699
-
packageJSONUrl = new URL("../package.json", packageJSONUrl);
10700
10700
-
if (packageJSONUrl.pathname === lastPackageJSONUrl.pathname) {
10701
10701
-
break;
10702
10702
-
}
10703
10703
-
}
10704
10704
-
const packageJSONPath = url.fileURLToPath(packageJSONUrl);
10705
10705
-
const packageConfig = {
10706
10706
-
pjsonPath: packageJSONPath,
10707
10707
-
exists: false,
10708
10708
-
main: void 0,
10709
10709
-
name: void 0,
10710
10710
-
type: "none",
10711
10711
-
exports: void 0,
10712
10712
-
imports: void 0
10713
10713
-
};
10714
10714
-
packageJSONCache.set(packageJSONPath, packageConfig);
10715
10715
-
return packageConfig;
10716
10716
-
}
10717
10717
-
10718
10718
-
/**
10719
10719
-
@license
10720
10720
-
Copyright Node.js contributors. All rights reserved.
10721
10721
-
10722
10722
-
Permission is hereby granted, free of charge, to any person obtaining a copy
10723
10723
-
of this software and associated documentation files (the "Software"), to
10724
10724
-
deal in the Software without restriction, including without limitation the
10725
10725
-
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10726
10726
-
sell copies of the Software, and to permit persons to whom the Software is
10727
10727
-
furnished to do so, subject to the following conditions:
10728
10728
-
10729
10729
-
The above copyright notice and this permission notice shall be included in
10730
10730
-
all copies or substantial portions of the Software.
10731
10731
-
10732
10732
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
10733
10733
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
10734
10734
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
10735
10735
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
10736
10736
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
10737
10737
-
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
10738
10738
-
IN THE SOFTWARE.
10739
10739
-
*/
10740
10740
-
function throwImportNotDefined(specifier, packageJSONUrl, base) {
10741
10741
-
throw new ERR_PACKAGE_IMPORT_NOT_DEFINED(
10742
10742
-
specifier,
10743
10743
-
packageJSONUrl && url.fileURLToPath(new URL(".", packageJSONUrl)),
10744
10744
-
url.fileURLToPath(base)
10745
10745
-
);
10746
10746
-
}
10747
10747
-
function throwInvalidSubpath(subpath, packageJSONUrl, internal, base) {
10748
10748
-
const reason = `request is not a valid subpath for the "${internal ? "imports" : "exports"}" resolution of ${url.fileURLToPath(packageJSONUrl)}`;
10749
10749
-
throw new ERR_INVALID_MODULE_SPECIFIER(
10750
10750
-
subpath,
10751
10751
-
reason,
10752
10752
-
base && url.fileURLToPath(base)
10753
10753
-
);
10754
10754
-
}
10755
10755
-
function throwInvalidPackageTarget(subpath, target, packageJSONUrl, internal, base) {
10756
10756
-
if (typeof target === "object" && target !== null) {
10757
10757
-
target = JSONStringify(target, null, "");
10758
10758
-
} else {
10759
10759
-
target = `${target}`;
10760
10760
-
}
10761
10761
-
throw new ERR_INVALID_PACKAGE_TARGET(
10762
10762
-
url.fileURLToPath(new URL(".", packageJSONUrl)),
10763
10763
-
subpath,
10764
10764
-
target,
10765
10765
-
internal,
10766
10766
-
base && url.fileURLToPath(base)
10767
10767
-
);
10768
10768
-
}
10769
10769
-
const invalidSegmentRegEx = /(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i;
10770
10770
-
const patternRegEx = /\*/g;
10771
10771
-
function resolvePackageTargetString(target, subpath, match, packageJSONUrl, base, pattern, internal, conditions) {
10772
10772
-
if (subpath !== "" && !pattern && target[target.length - 1] !== "/")
10773
10773
-
throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base);
10774
10774
-
if (!StringPrototypeStartsWith(target, "./")) {
10775
10775
-
if (internal && !StringPrototypeStartsWith(target, "../") && !StringPrototypeStartsWith(target, "/")) {
10776
10776
-
let isURL = false;
10777
10777
-
try {
10778
10778
-
new URL(target);
10779
10779
-
isURL = true;
10780
10780
-
} catch {
10781
10781
-
}
10782
10782
-
if (!isURL) {
10783
10783
-
const exportTarget = pattern ? RegExpPrototypeSymbolReplace(patternRegEx, target, () => subpath) : target + subpath;
10784
10784
-
return exportTarget;
10785
10785
-
}
10786
10786
-
}
10787
10787
-
throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base);
10788
10788
-
}
10789
10789
-
if (RegExpPrototypeExec(
10790
10790
-
invalidSegmentRegEx,
10791
10791
-
StringPrototypeSlice(target, 2)
10792
10792
-
) !== null)
10793
10793
-
throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base);
10794
10794
-
const resolved = new URL(target, packageJSONUrl);
10795
10795
-
const resolvedPath = resolved.pathname;
10796
10796
-
const packagePath = new URL(".", packageJSONUrl).pathname;
10797
10797
-
if (!StringPrototypeStartsWith(resolvedPath, packagePath))
10798
10798
-
throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base);
10799
10799
-
if (subpath === "")
10800
10800
-
return resolved;
10801
10801
-
if (RegExpPrototypeExec(invalidSegmentRegEx, subpath) !== null) {
10802
10802
-
const request = pattern ? StringPrototypeReplace(match, "*", () => subpath) : match + subpath;
10803
10803
-
throwInvalidSubpath(request, packageJSONUrl, internal, base);
10804
10804
-
}
10805
10805
-
if (pattern) {
10806
10806
-
return new URL(
10807
10807
-
RegExpPrototypeSymbolReplace(patternRegEx, resolved.href, () => subpath)
10808
10808
-
);
10809
10809
-
}
10810
10810
-
return new URL(subpath, resolved);
10811
10811
-
}
10812
10812
-
function isArrayIndex(key) {
10813
10813
-
const keyNum = +key;
10814
10814
-
if (`${keyNum}` !== key)
10815
10815
-
return false;
10816
10816
-
return keyNum >= 0 && keyNum < 4294967295;
10817
10817
-
}
10818
10818
-
function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, base, pattern, internal, conditions) {
10819
10819
-
if (typeof target === "string") {
10820
10820
-
return resolvePackageTargetString(
10821
10821
-
target,
10822
10822
-
subpath,
10823
10823
-
packageSubpath,
10824
10824
-
packageJSONUrl,
10825
10825
-
base,
10826
10826
-
pattern,
10827
10827
-
internal);
10828
10828
-
} else if (ArrayIsArray(target)) {
10829
10829
-
if (target.length === 0) {
10830
10830
-
return null;
10831
10831
-
}
10832
10832
-
let lastException;
10833
10833
-
for (let i = 0; i < target.length; i++) {
10834
10834
-
const targetItem = target[i];
10835
10835
-
let resolveResult;
10836
10836
-
try {
10837
10837
-
resolveResult = resolvePackageTarget(
10838
10838
-
packageJSONUrl,
10839
10839
-
targetItem,
10840
10840
-
subpath,
10841
10841
-
packageSubpath,
10842
10842
-
base,
10843
10843
-
pattern,
10844
10844
-
internal,
10845
10845
-
conditions
10846
10846
-
);
10847
10847
-
} catch (e) {
10848
10848
-
lastException = e;
10849
10849
-
if (e.code === "ERR_INVALID_PACKAGE_TARGET") {
10850
10850
-
continue;
10851
10851
-
}
10852
10852
-
throw e;
10853
10853
-
}
10854
10854
-
if (resolveResult === void 0) {
10855
10855
-
continue;
10856
10856
-
}
10857
10857
-
if (resolveResult === null) {
10858
10858
-
lastException = null;
10859
10859
-
continue;
10860
10860
-
}
10861
10861
-
return resolveResult;
10862
10862
-
}
10863
10863
-
if (lastException === void 0 || lastException === null)
10864
10864
-
return lastException;
10865
10865
-
throw lastException;
10866
10866
-
} else if (typeof target === "object" && target !== null) {
10867
10867
-
const keys = ObjectGetOwnPropertyNames(target);
10868
10868
-
for (let i = 0; i < keys.length; i++) {
10869
10869
-
const key = keys[i];
10870
10870
-
if (isArrayIndex(key)) {
10871
10871
-
throw new ERR_INVALID_PACKAGE_CONFIG(
10872
10872
-
url.fileURLToPath(packageJSONUrl),
10873
10873
-
base,
10874
10874
-
'"exports" cannot contain numeric property keys.'
10875
10875
-
);
10876
10876
-
}
10877
10877
-
}
10878
10878
-
for (let i = 0; i < keys.length; i++) {
10879
10879
-
const key = keys[i];
10880
10880
-
if (key === "default" || conditions.has(key)) {
10881
10881
-
const conditionalTarget = target[key];
10882
10882
-
const resolveResult = resolvePackageTarget(
10883
10883
-
packageJSONUrl,
10884
10884
-
conditionalTarget,
10885
10885
-
subpath,
10886
10886
-
packageSubpath,
10887
10887
-
base,
10888
10888
-
pattern,
10889
10889
-
internal,
10890
10890
-
conditions
10891
10891
-
);
10892
10892
-
if (resolveResult === void 0)
10893
10893
-
continue;
10894
10894
-
return resolveResult;
10895
10895
-
}
10896
10896
-
}
10897
10897
-
return void 0;
10898
10898
-
} else if (target === null) {
10899
10899
-
return null;
10900
10900
-
}
10901
10901
-
throwInvalidPackageTarget(
10902
10902
-
packageSubpath,
10903
10903
-
target,
10904
10904
-
packageJSONUrl,
10905
10905
-
internal,
10906
10906
-
base
10907
10907
-
);
10908
10908
-
}
10909
10909
-
function patternKeyCompare(a, b) {
10910
10910
-
const aPatternIndex = StringPrototypeIndexOf(a, "*");
10911
10911
-
const bPatternIndex = StringPrototypeIndexOf(b, "*");
10912
10912
-
const baseLenA = aPatternIndex === -1 ? a.length : aPatternIndex + 1;
10913
10913
-
const baseLenB = bPatternIndex === -1 ? b.length : bPatternIndex + 1;
10914
10914
-
if (baseLenA > baseLenB)
10915
10915
-
return -1;
10916
10916
-
if (baseLenB > baseLenA)
10917
10917
-
return 1;
10918
10918
-
if (aPatternIndex === -1)
10919
10919
-
return 1;
10920
10920
-
if (bPatternIndex === -1)
10921
10921
-
return -1;
10922
10922
-
if (a.length > b.length)
10923
10923
-
return -1;
10924
10924
-
if (b.length > a.length)
10925
10925
-
return 1;
10926
10926
-
return 0;
10927
10927
-
}
10928
10928
-
function packageImportsResolve({
10929
10929
-
name,
10930
10930
-
base,
10931
10931
-
conditions,
10932
10932
-
readFileSyncFn
10933
10933
-
}) {
10934
10934
-
if (name === "#" || StringPrototypeStartsWith(name, "#/") || StringPrototypeEndsWith(name, "/")) {
10935
10935
-
const reason = "is not a valid internal imports specifier name";
10936
10936
-
throw new ERR_INVALID_MODULE_SPECIFIER(name, reason, url.fileURLToPath(base));
10937
10937
-
}
10938
10938
-
let packageJSONUrl;
10939
10939
-
const packageConfig = getPackageScopeConfig(base, readFileSyncFn);
10940
10940
-
if (packageConfig.exists) {
10941
10941
-
packageJSONUrl = url.pathToFileURL(packageConfig.pjsonPath);
10942
10942
-
const imports = packageConfig.imports;
10943
10943
-
if (imports) {
10944
10944
-
if (ObjectPrototypeHasOwnProperty(imports, name) && !StringPrototypeIncludes(name, "*")) {
10945
10945
-
const resolveResult = resolvePackageTarget(
10946
10946
-
packageJSONUrl,
10947
10947
-
imports[name],
10948
10948
-
"",
10949
10949
-
name,
10950
10950
-
base,
10951
10951
-
false,
10952
10952
-
true,
10953
10953
-
conditions
10954
10954
-
);
10955
10955
-
if (resolveResult != null) {
10956
10956
-
return resolveResult;
10957
10957
-
}
10958
10958
-
} else {
10959
10959
-
let bestMatch = "";
10960
10960
-
let bestMatchSubpath;
10961
10961
-
const keys = ObjectGetOwnPropertyNames(imports);
10962
10962
-
for (let i = 0; i < keys.length; i++) {
10963
10963
-
const key = keys[i];
10964
10964
-
const patternIndex = StringPrototypeIndexOf(key, "*");
10965
10965
-
if (patternIndex !== -1 && StringPrototypeStartsWith(
10966
10966
-
name,
10967
10967
-
StringPrototypeSlice(key, 0, patternIndex)
10968
10968
-
)) {
10969
10969
-
const patternTrailer = StringPrototypeSlice(key, patternIndex + 1);
10970
10970
-
if (name.length >= key.length && StringPrototypeEndsWith(name, patternTrailer) && patternKeyCompare(bestMatch, key) === 1 && StringPrototypeLastIndexOf(key, "*") === patternIndex) {
10971
10971
-
bestMatch = key;
10972
10972
-
bestMatchSubpath = StringPrototypeSlice(
10973
10973
-
name,
10974
10974
-
patternIndex,
10975
10975
-
name.length - patternTrailer.length
10976
10976
-
);
10977
10977
-
}
10978
10978
-
}
10979
10979
-
}
10980
10980
-
if (bestMatch) {
10981
10981
-
const target = imports[bestMatch];
10982
10982
-
const resolveResult = resolvePackageTarget(
10983
10983
-
packageJSONUrl,
10984
10984
-
target,
10985
10985
-
bestMatchSubpath,
10986
10986
-
bestMatch,
10987
10987
-
base,
10988
10988
-
true,
10989
10989
-
true,
10990
10990
-
conditions
10991
10991
-
);
10992
10992
-
if (resolveResult != null) {
10993
10993
-
return resolveResult;
10994
10994
-
}
10995
10995
-
}
10996
10996
-
}
10997
10997
-
}
10998
10998
-
}
10999
10999
-
throwImportNotDefined(name, packageJSONUrl, base);
11000
11000
-
}
11001
11001
-
11002
11002
-
const flagSymbol = Symbol('arg flag');
11003
11003
-
11004
11004
-
class ArgError extends Error {
11005
11005
-
constructor(msg, code) {
11006
11006
-
super(msg);
11007
11007
-
this.name = 'ArgError';
11008
11008
-
this.code = code;
11009
11009
-
11010
11010
-
Object.setPrototypeOf(this, ArgError.prototype);
11011
11011
-
}
11012
11012
-
}
11013
11013
-
11014
11014
-
function arg(
11015
11015
-
opts,
11016
11016
-
{
11017
11017
-
argv = process.argv.slice(2),
11018
11018
-
permissive = false,
11019
11019
-
stopAtPositional = false
11020
11020
-
} = {}
11021
11021
-
) {
11022
11022
-
if (!opts) {
11023
11023
-
throw new ArgError(
11024
11024
-
'argument specification object is required',
11025
11025
-
'ARG_CONFIG_NO_SPEC'
11026
11026
-
);
11027
11027
-
}
11028
11028
-
11029
11029
-
const result = { _: [] };
11030
11030
-
11031
11031
-
const aliases = {};
11032
11032
-
const handlers = {};
11033
11033
-
11034
11034
-
for (const key of Object.keys(opts)) {
11035
11035
-
if (!key) {
11036
11036
-
throw new ArgError(
11037
11037
-
'argument key cannot be an empty string',
11038
11038
-
'ARG_CONFIG_EMPTY_KEY'
11039
11039
-
);
11040
11040
-
}
11041
11041
-
11042
11042
-
if (key[0] !== '-') {
11043
11043
-
throw new ArgError(
11044
11044
-
`argument key must start with '-' but found: '${key}'`,
11045
11045
-
'ARG_CONFIG_NONOPT_KEY'
11046
11046
-
);
11047
11047
-
}
11048
11048
-
11049
11049
-
if (key.length === 1) {
11050
11050
-
throw new ArgError(
11051
11051
-
`argument key must have a name; singular '-' keys are not allowed: ${key}`,
11052
11052
-
'ARG_CONFIG_NONAME_KEY'
11053
11053
-
);
11054
11054
-
}
11055
11055
-
11056
11056
-
if (typeof opts[key] === 'string') {
11057
11057
-
aliases[key] = opts[key];
11058
11058
-
continue;
11059
11059
-
}
11060
11060
-
11061
11061
-
let type = opts[key];
11062
11062
-
let isFlag = false;
11063
11063
-
11064
11064
-
if (
11065
11065
-
Array.isArray(type) &&
11066
11066
-
type.length === 1 &&
11067
11067
-
typeof type[0] === 'function'
11068
11068
-
) {
11069
11069
-
const [fn] = type;
11070
11070
-
type = (value, name, prev = []) => {
11071
11071
-
prev.push(fn(value, name, prev[prev.length - 1]));
11072
11072
-
return prev;
11073
11073
-
};
11074
11074
-
isFlag = fn === Boolean || fn[flagSymbol] === true;
11075
11075
-
} else if (typeof type === 'function') {
11076
11076
-
isFlag = type === Boolean || type[flagSymbol] === true;
11077
11077
-
} else {
11078
11078
-
throw new ArgError(
11079
11079
-
`type missing or not a function or valid array type: ${key}`,
11080
11080
-
'ARG_CONFIG_VAD_TYPE'
11081
11081
-
);
11082
11082
-
}
11083
11083
-
11084
11084
-
if (key[1] !== '-' && key.length > 2) {
11085
11085
-
throw new ArgError(
11086
11086
-
`short argument keys (with a single hyphen) must have only one character: ${key}`,
11087
11087
-
'ARG_CONFIG_SHORTOPT_TOOLONG'
11088
11088
-
);
11089
11089
-
}
11090
11090
-
11091
11091
-
handlers[key] = [type, isFlag];
11092
11092
-
}
11093
11093
-
11094
11094
-
for (let i = 0, len = argv.length; i < len; i++) {
11095
11095
-
const wholeArg = argv[i];
11096
11096
-
11097
11097
-
if (stopAtPositional && result._.length > 0) {
11098
11098
-
result._ = result._.concat(argv.slice(i));
11099
11099
-
break;
11100
11100
-
}
11101
11101
-
11102
11102
-
if (wholeArg === '--') {
11103
11103
-
result._ = result._.concat(argv.slice(i + 1));
11104
11104
-
break;
11105
11105
-
}
11106
11106
-
11107
11107
-
if (wholeArg.length > 1 && wholeArg[0] === '-') {
11108
11108
-
/* eslint-disable operator-linebreak */
11109
11109
-
const separatedArguments =
11110
11110
-
wholeArg[1] === '-' || wholeArg.length === 2
11111
11111
-
? [wholeArg]
11112
11112
-
: wholeArg
11113
11113
-
.slice(1)
11114
11114
-
.split('')
11115
11115
-
.map((a) => `-${a}`);
11116
11116
-
/* eslint-enable operator-linebreak */
11117
11117
-
11118
11118
-
for (let j = 0; j < separatedArguments.length; j++) {
11119
11119
-
const arg = separatedArguments[j];
11120
11120
-
const [originalArgName, argStr] =
11121
11121
-
arg[1] === '-' ? arg.split(/=(.*)/, 2) : [arg, undefined];
11122
11122
-
11123
11123
-
let argName = originalArgName;
11124
11124
-
while (argName in aliases) {
11125
11125
-
argName = aliases[argName];
11126
11126
-
}
11127
11127
-
11128
11128
-
if (!(argName in handlers)) {
11129
11129
-
if (permissive) {
11130
11130
-
result._.push(arg);
11131
11131
-
continue;
11132
11132
-
} else {
11133
11133
-
throw new ArgError(
11134
11134
-
`unknown or unexpected option: ${originalArgName}`,
11135
11135
-
'ARG_UNKNOWN_OPTION'
11136
11136
-
);
11137
11137
-
}
11138
11138
-
}
11139
11139
-
11140
11140
-
const [type, isFlag] = handlers[argName];
11141
11141
-
11142
11142
-
if (!isFlag && j + 1 < separatedArguments.length) {
11143
11143
-
throw new ArgError(
11144
11144
-
`option requires argument (but was followed by another short argument): ${originalArgName}`,
11145
11145
-
'ARG_MISSING_REQUIRED_SHORTARG'
11146
11146
-
);
11147
11147
-
}
11148
11148
-
11149
11149
-
if (isFlag) {
11150
11150
-
result[argName] = type(true, argName, result[argName]);
11151
11151
-
} else if (argStr === undefined) {
11152
11152
-
if (
11153
11153
-
argv.length < i + 2 ||
11154
11154
-
(argv[i + 1].length > 1 &&
11155
11155
-
argv[i + 1][0] === '-' &&
11156
11156
-
!(
11157
11157
-
argv[i + 1].match(/^-?\d*(\.(?=\d))?\d*$/) &&
11158
11158
-
(type === Number ||
11159
11159
-
// eslint-disable-next-line no-undef
11160
11160
-
(typeof BigInt !== 'undefined' && type === BigInt))
11161
11161
-
))
11162
11162
-
) {
11163
11163
-
const extended =
11164
11164
-
originalArgName === argName ? '' : ` (alias for ${argName})`;
11165
11165
-
throw new ArgError(
11166
11166
-
`option requires argument: ${originalArgName}${extended}`,
11167
11167
-
'ARG_MISSING_REQUIRED_LONGARG'
11168
11168
-
);
11169
11169
-
}
11170
11170
-
11171
11171
-
result[argName] = type(argv[i + 1], argName, result[argName]);
11172
11172
-
++i;
11173
11173
-
} else {
11174
11174
-
result[argName] = type(argStr, argName, result[argName]);
11175
11175
-
}
11176
11176
-
}
11177
11177
-
} else {
11178
11178
-
result._.push(wholeArg);
11179
11179
-
}
11180
11180
-
}
11181
11181
-
11182
11182
-
return result;
11183
11183
-
}
11184
11184
-
11185
11185
-
arg.flag = (fn) => {
11186
11186
-
fn[flagSymbol] = true;
11187
11187
-
return fn;
11188
11188
-
};
11189
11189
-
11190
11190
-
// Utility types
11191
11191
-
arg.COUNT = arg.flag((v, name, existingCount) => (existingCount || 0) + 1);
11192
11192
-
11193
11193
-
// Expose error class
11194
11194
-
arg.ArgError = ArgError;
11195
11195
-
11196
11196
-
var arg_1 = arg;
11197
11197
-
11198
11198
-
/**
11199
11199
-
@license
11200
11200
-
The MIT License (MIT)
11201
11201
-
11202
11202
-
Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)
11203
11203
-
11204
11204
-
Permission is hereby granted, free of charge, to any person obtaining a copy
11205
11205
-
of this software and associated documentation files (the "Software"), to deal
11206
11206
-
in the Software without restriction, including without limitation the rights
11207
11207
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11208
11208
-
copies of the Software, and to permit persons to whom the Software is
11209
11209
-
furnished to do so, subject to the following conditions:
11210
11210
-
11211
11211
-
The above copyright notice and this permission notice shall be included in
11212
11212
-
all copies or substantial portions of the Software.
11213
11213
-
11214
11214
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
11215
11215
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
11216
11216
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
11217
11217
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
11218
11218
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
11219
11219
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
11220
11220
-
THE SOFTWARE.
11221
11221
-
*/
11222
11222
-
function getOptionValue(opt) {
11223
11223
-
parseOptions();
11224
11224
-
return options[opt];
11225
11225
-
}
11226
11226
-
let options;
11227
11227
-
function parseOptions() {
11228
11228
-
if (!options) {
11229
11229
-
options = {
11230
11230
-
"--conditions": [],
11231
11231
-
...parseArgv(getNodeOptionsEnvArgv()),
11232
11232
-
...parseArgv(process.execArgv)
11233
11233
-
};
11234
11234
-
}
11235
11235
-
}
11236
11236
-
function parseArgv(argv) {
11237
11237
-
return arg_1(
11238
11238
-
{
11239
11239
-
"--conditions": [String],
11240
11240
-
"-C": "--conditions"
11241
11241
-
},
11242
11242
-
{
11243
11243
-
argv,
11244
11244
-
permissive: true
11245
11245
-
}
11246
11246
-
);
11247
11247
-
}
11248
11248
-
function getNodeOptionsEnvArgv() {
11249
11249
-
const errors = [];
11250
11250
-
const envArgv = ParseNodeOptionsEnvVar(process.env.NODE_OPTIONS || "", errors);
11251
11251
-
if (errors.length !== 0) ;
11252
11252
-
return envArgv;
11253
11253
-
}
11254
11254
-
function ParseNodeOptionsEnvVar(node_options, errors) {
11255
11255
-
const env_argv = [];
11256
11256
-
let is_in_string = false;
11257
11257
-
let will_start_new_arg = true;
11258
11258
-
for (let index = 0; index < node_options.length; ++index) {
11259
11259
-
let c = node_options[index];
11260
11260
-
if (c === "\\" && is_in_string) {
11261
11261
-
if (index + 1 === node_options.length) {
11262
11262
-
errors.push("invalid value for NODE_OPTIONS (invalid escape)\n");
11263
11263
-
return env_argv;
11264
11264
-
} else {
11265
11265
-
c = node_options[++index];
11266
11266
-
}
11267
11267
-
} else if (c === " " && !is_in_string) {
11268
11268
-
will_start_new_arg = true;
11269
11269
-
continue;
11270
11270
-
} else if (c === '"') {
11271
11271
-
is_in_string = !is_in_string;
11272
11272
-
continue;
11273
11273
-
}
11274
11274
-
if (will_start_new_arg) {
11275
11275
-
env_argv.push(c);
11276
11276
-
will_start_new_arg = false;
11277
11277
-
} else {
11278
11278
-
env_argv[env_argv.length - 1] += c;
11279
11279
-
}
11280
11280
-
}
11281
11281
-
if (is_in_string) {
11282
11282
-
errors.push("invalid value for NODE_OPTIONS (unterminated string)\n");
11283
11283
-
}
11284
11284
-
return env_argv;
11285
11285
-
}
11286
11286
-
11287
11287
-
function makeApi(runtimeState, opts) {
11288
11288
-
const alwaysWarnOnFallback = Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK) > 0;
11289
11289
-
const debugLevel = Number(process.env.PNP_DEBUG_LEVEL);
11290
11290
-
const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/;
11291
11291
-
const isStrictRegExp = /^(\/|\.{1,2}(\/|$))/;
11292
11292
-
const isDirRegExp = /\/$/;
11293
11293
-
const isRelativeRegexp = /^\.{0,2}\//;
11294
11294
-
const topLevelLocator = { name: null, reference: null };
11295
11295
-
const fallbackLocators = [];
11296
11296
-
const emittedWarnings = /* @__PURE__ */ new Set();
11297
11297
-
if (runtimeState.enableTopLevelFallback === true)
11298
11298
-
fallbackLocators.push(topLevelLocator);
11299
11299
-
if (opts.compatibilityMode !== false) {
11300
11300
-
for (const name of [`react-scripts`, `gatsby`]) {
11301
11301
-
const packageStore = runtimeState.packageRegistry.get(name);
11302
11302
-
if (packageStore) {
11303
11303
-
for (const reference of packageStore.keys()) {
11304
11304
-
if (reference === null) {
11305
11305
-
throw new Error(`Assertion failed: This reference shouldn't be null`);
11306
11306
-
} else {
11307
11307
-
fallbackLocators.push({ name, reference });
11308
11308
-
}
11309
11309
-
}
11310
11310
-
}
11311
11311
-
}
11312
11312
-
}
11313
11313
-
const {
11314
11314
-
ignorePattern,
11315
11315
-
packageRegistry,
11316
11316
-
packageLocatorsByLocations
11317
11317
-
} = runtimeState;
11318
11318
-
function makeLogEntry(name, args) {
11319
11319
-
return {
11320
11320
-
fn: name,
11321
11321
-
args,
11322
11322
-
error: null,
11323
11323
-
result: null
11324
11324
-
};
11325
11325
-
}
11326
11326
-
function trace(entry) {
11327
11327
-
var _a, _b, _c, _d, _e, _f;
11328
11328
-
const colors = (_c = (_b = (_a = process.stderr) == null ? void 0 : _a.hasColors) == null ? void 0 : _b.call(_a)) != null ? _c : process.stdout.isTTY;
11329
11329
-
const c = (n, str) => `\x1B[${n}m${str}\x1B[0m`;
11330
11330
-
const error = entry.error;
11331
11331
-
if (error)
11332
11332
-
console.error(c(`31;1`, `\u2716 ${(_d = entry.error) == null ? void 0 : _d.message.replace(/\n.*/s, ``)}`));
11333
11333
-
else
11334
11334
-
console.error(c(`33;1`, `\u203C Resolution`));
11335
11335
-
if (entry.args.length > 0)
11336
11336
-
console.error();
11337
11337
-
for (const arg of entry.args)
11338
11338
-
console.error(` ${c(`37;1`, `In \u2190`)} ${nodeUtils.inspect(arg, { colors, compact: true })}`);
11339
11339
-
if (entry.result) {
11340
11340
-
console.error();
11341
11341
-
console.error(` ${c(`37;1`, `Out \u2192`)} ${nodeUtils.inspect(entry.result, { colors, compact: true })}`);
11342
11342
-
}
11343
11343
-
const stack = (_f = (_e = new Error().stack.match(/(?<=^ +)at.*/gm)) == null ? void 0 : _e.slice(2)) != null ? _f : [];
11344
11344
-
if (stack.length > 0) {
11345
11345
-
console.error();
11346
11346
-
for (const line of stack) {
11347
11347
-
console.error(` ${c(`38;5;244`, line)}`);
11348
11348
-
}
11349
11349
-
}
11350
11350
-
console.error();
11351
11351
-
}
11352
11352
-
function maybeLog(name, fn) {
11353
11353
-
if (opts.allowDebug === false)
11354
11354
-
return fn;
11355
11355
-
if (Number.isFinite(debugLevel)) {
11356
11356
-
if (debugLevel >= 2) {
11357
11357
-
return (...args) => {
11358
11358
-
const logEntry = makeLogEntry(name, args);
11359
11359
-
try {
11360
11360
-
return logEntry.result = fn(...args);
11361
11361
-
} catch (error) {
11362
11362
-
throw logEntry.error = error;
11363
11363
-
} finally {
11364
11364
-
trace(logEntry);
11365
11365
-
}
11366
11366
-
};
11367
11367
-
} else if (debugLevel >= 1) {
11368
11368
-
return (...args) => {
11369
11369
-
try {
11370
11370
-
return fn(...args);
11371
11371
-
} catch (error) {
11372
11372
-
const logEntry = makeLogEntry(name, args);
11373
11373
-
logEntry.error = error;
11374
11374
-
trace(logEntry);
11375
11375
-
throw error;
11376
11376
-
}
11377
11377
-
};
11378
11378
-
}
11379
11379
-
}
11380
11380
-
return fn;
11381
11381
-
}
11382
11382
-
function getPackageInformationSafe(packageLocator) {
11383
11383
-
const packageInformation = getPackageInformation(packageLocator);
11384
11384
-
if (!packageInformation) {
11385
11385
-
throw makeError(
11386
11386
-
ErrorCode.INTERNAL,
11387
11387
-
`Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)`
11388
11388
-
);
11389
11389
-
}
11390
11390
-
return packageInformation;
11391
11391
-
}
11392
11392
-
function isDependencyTreeRoot(packageLocator) {
11393
11393
-
if (packageLocator.name === null)
11394
11394
-
return true;
11395
11395
-
for (const dependencyTreeRoot of runtimeState.dependencyTreeRoots)
11396
11396
-
if (dependencyTreeRoot.name === packageLocator.name && dependencyTreeRoot.reference === packageLocator.reference)
11397
11397
-
return true;
11398
11398
-
return false;
11399
11399
-
}
11400
11400
-
const defaultExportsConditions = /* @__PURE__ */ new Set([
11401
11401
-
`default`,
11402
11402
-
`node`,
11403
11403
-
`require`,
11404
11404
-
...getOptionValue(`--conditions`)
11405
11405
-
]);
11406
11406
-
function applyNodeExportsResolution(unqualifiedPath, conditions = defaultExportsConditions) {
11407
11407
-
const locator = findPackageLocator(ppath.join(unqualifiedPath, `internal.js`), {
11408
11408
-
resolveIgnored: true,
11409
11409
-
includeDiscardFromLookup: true
11410
11410
-
});
11411
11411
-
if (locator === null) {
11412
11412
-
throw makeError(
11413
11413
-
ErrorCode.INTERNAL,
11414
11414
-
`The locator that owns the "${unqualifiedPath}" path can't be found inside the dependency tree (this is probably an internal error)`
11415
11415
-
);
11416
11416
-
}
11417
11417
-
const { packageLocation } = getPackageInformationSafe(locator);
11418
11418
-
const manifestPath = ppath.join(packageLocation, Filename.manifest);
11419
11419
-
if (!opts.fakeFs.existsSync(manifestPath))
11420
11420
-
return null;
11421
11421
-
const pkgJson = JSON.parse(opts.fakeFs.readFileSync(manifestPath, `utf8`));
11422
11422
-
let subpath = ppath.contains(packageLocation, unqualifiedPath);
11423
11423
-
if (subpath === null) {
11424
11424
-
throw makeError(
11425
11425
-
ErrorCode.INTERNAL,
11426
11426
-
`unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)`
11427
11427
-
);
11428
11428
-
}
11429
11429
-
if (!isRelativeRegexp.test(subpath))
11430
11430
-
subpath = `./${subpath}`;
11431
11431
-
let resolvedExport;
11432
11432
-
try {
11433
11433
-
resolvedExport = resolve(pkgJson, ppath.normalize(subpath), {
11434
11434
-
conditions,
11435
11435
-
unsafe: true
11436
11436
-
});
11437
11437
-
} catch (error) {
11438
11438
-
throw makeError(
11439
11439
-
ErrorCode.EXPORTS_RESOLUTION_FAILED,
11440
11440
-
error.message,
11441
11441
-
{ unqualifiedPath: getPathForDisplay(unqualifiedPath), locator, pkgJson, subpath: getPathForDisplay(subpath), conditions },
11442
11442
-
`ERR_PACKAGE_PATH_NOT_EXPORTED`
11443
11443
-
);
11444
11444
-
}
11445
11445
-
if (typeof resolvedExport === `string`)
11446
11446
-
return ppath.join(packageLocation, resolvedExport);
11447
11447
-
return null;
11448
11448
-
}
11449
11449
-
function applyNodeExtensionResolution(unqualifiedPath, candidates, { extensions }) {
11450
11450
-
let stat;
11451
11451
-
try {
11452
11452
-
candidates.push(unqualifiedPath);
11453
11453
-
stat = opts.fakeFs.statSync(unqualifiedPath);
11454
11454
-
} catch (error) {
11455
11455
-
}
11456
11456
-
if (stat && !stat.isDirectory())
11457
11457
-
return opts.fakeFs.realpathSync(unqualifiedPath);
11458
11458
-
if (stat && stat.isDirectory()) {
11459
11459
-
let pkgJson;
11460
11460
-
try {
11461
11461
-
pkgJson = JSON.parse(opts.fakeFs.readFileSync(ppath.join(unqualifiedPath, Filename.manifest), `utf8`));
11462
11462
-
} catch (error) {
11463
11463
-
}
11464
11464
-
let nextUnqualifiedPath;
11465
11465
-
if (pkgJson && pkgJson.main)
11466
11466
-
nextUnqualifiedPath = ppath.resolve(unqualifiedPath, pkgJson.main);
11467
11467
-
if (nextUnqualifiedPath && nextUnqualifiedPath !== unqualifiedPath) {
11468
11468
-
const resolution = applyNodeExtensionResolution(nextUnqualifiedPath, candidates, { extensions });
11469
11469
-
if (resolution !== null) {
11470
11470
-
return resolution;
11471
11471
-
}
11472
11472
-
}
11473
11473
-
}
11474
11474
-
for (let i = 0, length = extensions.length; i < length; i++) {
11475
11475
-
const candidateFile = `${unqualifiedPath}${extensions[i]}`;
11476
11476
-
candidates.push(candidateFile);
11477
11477
-
if (opts.fakeFs.existsSync(candidateFile)) {
11478
11478
-
return candidateFile;
11479
11479
-
}
11480
11480
-
}
11481
11481
-
if (stat && stat.isDirectory()) {
11482
11482
-
for (let i = 0, length = extensions.length; i < length; i++) {
11483
11483
-
const candidateFile = ppath.format({ dir: unqualifiedPath, name: `index`, ext: extensions[i] });
11484
11484
-
candidates.push(candidateFile);
11485
11485
-
if (opts.fakeFs.existsSync(candidateFile)) {
11486
11486
-
return candidateFile;
11487
11487
-
}
11488
11488
-
}
11489
11489
-
}
11490
11490
-
return null;
11491
11491
-
}
11492
11492
-
function makeFakeModule(path) {
11493
11493
-
const fakeModule = new require$$0.Module(path, null);
11494
11494
-
fakeModule.filename = path;
11495
11495
-
fakeModule.paths = require$$0.Module._nodeModulePaths(path);
11496
11496
-
return fakeModule;
11497
11497
-
}
11498
11498
-
function callNativeResolution(request, issuer) {
11499
11499
-
if (issuer.endsWith(`/`))
11500
11500
-
issuer = ppath.join(issuer, `internal.js`);
11501
11501
-
return require$$0.Module._resolveFilename(npath.fromPortablePath(request), makeFakeModule(npath.fromPortablePath(issuer)), false, { plugnplay: false });
11502
11502
-
}
11503
11503
-
function isPathIgnored(path) {
11504
11504
-
if (ignorePattern === null)
11505
11505
-
return false;
11506
11506
-
const subPath = ppath.contains(runtimeState.basePath, path);
11507
11507
-
if (subPath === null)
11508
11508
-
return false;
11509
11509
-
if (ignorePattern.test(subPath.replace(/\/$/, ``))) {
11510
11510
-
return true;
11511
11511
-
} else {
11512
11512
-
return false;
11513
11513
-
}
11514
11514
-
}
11515
11515
-
const VERSIONS = { std: 3, resolveVirtual: 1, getAllLocators: 1 };
11516
11516
-
const topLevel = topLevelLocator;
11517
11517
-
function getPackageInformation({ name, reference }) {
11518
11518
-
const packageInformationStore = packageRegistry.get(name);
11519
11519
-
if (!packageInformationStore)
11520
11520
-
return null;
11521
11521
-
const packageInformation = packageInformationStore.get(reference);
11522
11522
-
if (!packageInformation)
11523
11523
-
return null;
11524
11524
-
return packageInformation;
11525
11525
-
}
11526
11526
-
function findPackageDependents({ name, reference }) {
11527
11527
-
const dependents = [];
11528
11528
-
for (const [dependentName, packageInformationStore] of packageRegistry) {
11529
11529
-
if (dependentName === null)
11530
11530
-
continue;
11531
11531
-
for (const [dependentReference, packageInformation] of packageInformationStore) {
11532
11532
-
if (dependentReference === null)
11533
11533
-
continue;
11534
11534
-
const dependencyReference = packageInformation.packageDependencies.get(name);
11535
11535
-
if (dependencyReference !== reference)
11536
11536
-
continue;
11537
11537
-
if (dependentName === name && dependentReference === reference)
11538
11538
-
continue;
11539
11539
-
dependents.push({
11540
11540
-
name: dependentName,
11541
11541
-
reference: dependentReference
11542
11542
-
});
11543
11543
-
}
11544
11544
-
}
11545
11545
-
return dependents;
11546
11546
-
}
11547
11547
-
function findBrokenPeerDependencies(dependency, initialPackage) {
11548
11548
-
const brokenPackages = /* @__PURE__ */ new Map();
11549
11549
-
const alreadyVisited = /* @__PURE__ */ new Set();
11550
11550
-
const traversal = (currentPackage) => {
11551
11551
-
const identifier = JSON.stringify(currentPackage.name);
11552
11552
-
if (alreadyVisited.has(identifier))
11553
11553
-
return;
11554
11554
-
alreadyVisited.add(identifier);
11555
11555
-
const dependents = findPackageDependents(currentPackage);
11556
11556
-
for (const dependent of dependents) {
11557
11557
-
const dependentInformation = getPackageInformationSafe(dependent);
11558
11558
-
if (dependentInformation.packagePeers.has(dependency)) {
11559
11559
-
traversal(dependent);
11560
11560
-
} else {
11561
11561
-
let brokenSet = brokenPackages.get(dependent.name);
11562
11562
-
if (typeof brokenSet === `undefined`)
11563
11563
-
brokenPackages.set(dependent.name, brokenSet = /* @__PURE__ */ new Set());
11564
11564
-
brokenSet.add(dependent.reference);
11565
11565
-
}
11566
11566
-
}
11567
11567
-
};
11568
11568
-
traversal(initialPackage);
11569
11569
-
const brokenList = [];
11570
11570
-
for (const name of [...brokenPackages.keys()].sort())
11571
11571
-
for (const reference of [...brokenPackages.get(name)].sort())
11572
11572
-
brokenList.push({ name, reference });
11573
11573
-
return brokenList;
11574
11574
-
}
11575
11575
-
function findPackageLocator(location, { resolveIgnored = false, includeDiscardFromLookup = false } = {}) {
11576
11576
-
if (isPathIgnored(location) && !resolveIgnored)
11577
11577
-
return null;
11578
11578
-
let relativeLocation = ppath.relative(runtimeState.basePath, location);
11579
11579
-
if (!relativeLocation.match(isStrictRegExp))
11580
11580
-
relativeLocation = `./${relativeLocation}`;
11581
11581
-
if (!relativeLocation.endsWith(`/`))
11582
11582
-
relativeLocation = `${relativeLocation}/`;
11583
11583
-
do {
11584
11584
-
const entry = packageLocatorsByLocations.get(relativeLocation);
11585
11585
-
if (typeof entry === `undefined` || entry.discardFromLookup && !includeDiscardFromLookup) {
11586
11586
-
relativeLocation = relativeLocation.substring(0, relativeLocation.lastIndexOf(`/`, relativeLocation.length - 2) + 1);
11587
11587
-
continue;
11588
11588
-
}
11589
11589
-
return entry.locator;
11590
11590
-
} while (relativeLocation !== ``);
11591
11591
-
return null;
11592
11592
-
}
11593
11593
-
function tryReadFile(filePath) {
11594
11594
-
try {
11595
11595
-
return opts.fakeFs.readFileSync(npath.toPortablePath(filePath), `utf8`);
11596
11596
-
} catch (err) {
11597
11597
-
if (err.code === `ENOENT`)
11598
11598
-
return void 0;
11599
11599
-
throw err;
11600
11600
-
}
11601
11601
-
}
11602
11602
-
function resolveToUnqualified(request, issuer, { considerBuiltins = true } = {}) {
11603
11603
-
if (request.startsWith(`#`))
11604
11604
-
throw new Error(`resolveToUnqualified can not handle private import mappings`);
11605
11605
-
if (request === `pnpapi`)
11606
11606
-
return npath.toPortablePath(opts.pnpapiResolution);
11607
11607
-
if (considerBuiltins && isBuiltinModule(request))
11608
11608
-
return null;
11609
11609
-
const requestForDisplay = getPathForDisplay(request);
11610
11610
-
const issuerForDisplay = issuer && getPathForDisplay(issuer);
11611
11611
-
if (issuer && isPathIgnored(issuer)) {
11612
11612
-
if (!ppath.isAbsolute(request) || findPackageLocator(request) === null) {
11613
11613
-
const result = callNativeResolution(request, issuer);
11614
11614
-
if (result === false) {
11615
11615
-
throw makeError(
11616
11616
-
ErrorCode.BUILTIN_NODE_RESOLUTION_FAILED,
11617
11617
-
`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp)
11618
11618
-
11619
11619
-
Require request: "${requestForDisplay}"
11620
11620
-
Required by: ${issuerForDisplay}
11621
11621
-
`,
11622
11622
-
{ request: requestForDisplay, issuer: issuerForDisplay }
11623
11623
-
);
11624
11624
-
}
11625
11625
-
return npath.toPortablePath(result);
11626
11626
-
}
11627
11627
-
}
11628
11628
-
let unqualifiedPath;
11629
11629
-
const dependencyNameMatch = request.match(pathRegExp);
11630
11630
-
if (!dependencyNameMatch) {
11631
11631
-
if (ppath.isAbsolute(request)) {
11632
11632
-
unqualifiedPath = ppath.normalize(request);
11633
11633
-
} else {
11634
11634
-
if (!issuer) {
11635
11635
-
throw makeError(
11636
11636
-
ErrorCode.API_ERROR,
11637
11637
-
`The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute`,
11638
11638
-
{ request: requestForDisplay, issuer: issuerForDisplay }
11639
11639
-
);
11640
11640
-
}
11641
11641
-
const absoluteIssuer = ppath.resolve(issuer);
11642
11642
-
if (issuer.match(isDirRegExp)) {
11643
11643
-
unqualifiedPath = ppath.normalize(ppath.join(absoluteIssuer, request));
11644
11644
-
} else {
11645
11645
-
unqualifiedPath = ppath.normalize(ppath.join(ppath.dirname(absoluteIssuer), request));
11646
11646
-
}
11647
11647
-
}
11648
11648
-
} else {
11649
11649
-
if (!issuer) {
11650
11650
-
throw makeError(
11651
11651
-
ErrorCode.API_ERROR,
11652
11652
-
`The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute`,
11653
11653
-
{ request: requestForDisplay, issuer: issuerForDisplay }
11654
11654
-
);
11655
11655
-
}
11656
11656
-
const [, dependencyName, subPath] = dependencyNameMatch;
11657
11657
-
const issuerLocator = findPackageLocator(issuer);
11658
11658
-
if (!issuerLocator) {
11659
11659
-
const result = callNativeResolution(request, issuer);
11660
11660
-
if (result === false) {
11661
11661
-
throw makeError(
11662
11662
-
ErrorCode.BUILTIN_NODE_RESOLUTION_FAILED,
11663
11663
-
`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree).
11664
11664
-
11665
11665
-
Require path: "${requestForDisplay}"
11666
11666
-
Required by: ${issuerForDisplay}
11667
11667
-
`,
11668
11668
-
{ request: requestForDisplay, issuer: issuerForDisplay }
11669
11669
-
);
11670
11670
-
}
11671
11671
-
return npath.toPortablePath(result);
11672
11672
-
}
11673
11673
-
const issuerInformation = getPackageInformationSafe(issuerLocator);
11674
11674
-
let dependencyReference = issuerInformation.packageDependencies.get(dependencyName);
11675
11675
-
let fallbackReference = null;
11676
11676
-
if (dependencyReference == null) {
11677
11677
-
if (issuerLocator.name !== null) {
11678
11678
-
const exclusionEntry = runtimeState.fallbackExclusionList.get(issuerLocator.name);
11679
11679
-
const canUseFallbacks = !exclusionEntry || !exclusionEntry.has(issuerLocator.reference);
11680
11680
-
if (canUseFallbacks) {
11681
11681
-
for (let t = 0, T = fallbackLocators.length; t < T; ++t) {
11682
11682
-
const fallbackInformation = getPackageInformationSafe(fallbackLocators[t]);
11683
11683
-
const reference = fallbackInformation.packageDependencies.get(dependencyName);
11684
11684
-
if (reference == null)
11685
11685
-
continue;
11686
11686
-
if (alwaysWarnOnFallback)
11687
11687
-
fallbackReference = reference;
11688
11688
-
else
11689
11689
-
dependencyReference = reference;
11690
11690
-
break;
11691
11691
-
}
11692
11692
-
if (runtimeState.enableTopLevelFallback) {
11693
11693
-
if (dependencyReference == null && fallbackReference === null) {
11694
11694
-
const reference = runtimeState.fallbackPool.get(dependencyName);
11695
11695
-
if (reference != null) {
11696
11696
-
fallbackReference = reference;
11697
11697
-
}
11698
11698
-
}
11699
11699
-
}
11700
11700
-
}
11701
11701
-
}
11702
11702
-
}
11703
11703
-
let error = null;
11704
11704
-
if (dependencyReference === null) {
11705
11705
-
if (isDependencyTreeRoot(issuerLocator)) {
11706
11706
-
error = makeError(
11707
11707
-
ErrorCode.MISSING_PEER_DEPENDENCY,
11708
11708
-
`Your application tried to access ${dependencyName} (a peer dependency); this isn't allowed as there is no ancestor to satisfy the requirement. Use a devDependency if needed.
11709
11709
-
11710
11710
-
Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
11711
11711
-
Required by: ${issuerForDisplay}
11712
11712
-
`,
11713
11713
-
{ request: requestForDisplay, issuer: issuerForDisplay, dependencyName }
11714
11714
-
);
11715
11715
-
} else {
11716
11716
-
const brokenAncestors = findBrokenPeerDependencies(dependencyName, issuerLocator);
11717
11717
-
if (brokenAncestors.every((ancestor) => isDependencyTreeRoot(ancestor))) {
11718
11718
-
error = makeError(
11719
11719
-
ErrorCode.MISSING_PEER_DEPENDENCY,
11720
11720
-
`${issuerLocator.name} tried to access ${dependencyName} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound.
11721
11721
-
11722
11722
-
Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
11723
11723
-
Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay})
11724
11724
-
${brokenAncestors.map((ancestorLocator) => `Ancestor breaking the chain: ${ancestorLocator.name}@${ancestorLocator.reference}
11725
11725
-
`).join(``)}
11726
11726
-
`,
11727
11727
-
{ request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName, brokenAncestors }
11728
11728
-
);
11729
11729
-
} else {
11730
11730
-
error = makeError(
11731
11731
-
ErrorCode.MISSING_PEER_DEPENDENCY,
11732
11732
-
`${issuerLocator.name} tried to access ${dependencyName} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound.
11733
11733
-
11734
11734
-
Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
11735
11735
-
Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay})
11736
11736
-
11737
11737
-
${brokenAncestors.map((ancestorLocator) => `Ancestor breaking the chain: ${ancestorLocator.name}@${ancestorLocator.reference}
11738
11738
-
`).join(``)}
11739
11739
-
`,
11740
11740
-
{ request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName, brokenAncestors }
11741
11741
-
);
11742
11742
-
}
11743
11743
-
}
11744
11744
-
} else if (dependencyReference === void 0) {
11745
11745
-
if (!considerBuiltins && isBuiltinModule(request)) {
11746
11746
-
if (isDependencyTreeRoot(issuerLocator)) {
11747
11747
-
error = makeError(
11748
11748
-
ErrorCode.UNDECLARED_DEPENDENCY,
11749
11749
-
`Your application tried to access ${dependencyName}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${dependencyName} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound.
11750
11750
-
11751
11751
-
Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
11752
11752
-
Required by: ${issuerForDisplay}
11753
11753
-
`,
11754
11754
-
{ request: requestForDisplay, issuer: issuerForDisplay, dependencyName }
11755
11755
-
);
11756
11756
-
} else {
11757
11757
-
error = makeError(
11758
11758
-
ErrorCode.UNDECLARED_DEPENDENCY,
11759
11759
-
`${issuerLocator.name} tried to access ${dependencyName}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${dependencyName} isn't otherwise declared in ${issuerLocator.name}'s dependencies, this makes the require call ambiguous and unsound.
11760
11760
-
11761
11761
-
Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
11762
11762
-
Required by: ${issuerForDisplay}
11763
11763
-
`,
11764
11764
-
{ request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName }
11765
11765
-
);
11766
11766
-
}
11767
11767
-
} else {
11768
11768
-
if (isDependencyTreeRoot(issuerLocator)) {
11769
11769
-
error = makeError(
11770
11770
-
ErrorCode.UNDECLARED_DEPENDENCY,
11771
11771
-
`Your application tried to access ${dependencyName}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound.
11772
11772
-
11773
11773
-
Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
11774
11774
-
Required by: ${issuerForDisplay}
11775
11775
-
`,
11776
11776
-
{ request: requestForDisplay, issuer: issuerForDisplay, dependencyName }
11777
11777
-
);
11778
11778
-
} else {
11779
11779
-
error = makeError(
11780
11780
-
ErrorCode.UNDECLARED_DEPENDENCY,
11781
11781
-
`${issuerLocator.name} tried to access ${dependencyName}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.
11782
11782
-
11783
11783
-
Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
11784
11784
-
Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay})
11785
11785
-
`,
11786
11786
-
{ request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName }
11787
11787
-
);
11788
11788
-
}
11789
11789
-
}
11790
11790
-
}
11791
11791
-
if (dependencyReference == null) {
11792
11792
-
if (fallbackReference === null || error === null)
11793
11793
-
throw error || new Error(`Assertion failed: Expected an error to have been set`);
11794
11794
-
dependencyReference = fallbackReference;
11795
11795
-
const message = error.message.replace(/\n.*/g, ``);
11796
11796
-
error.message = message;
11797
11797
-
if (!emittedWarnings.has(message) && debugLevel !== 0) {
11798
11798
-
emittedWarnings.add(message);
11799
11799
-
process.emitWarning(error);
11800
11800
-
}
11801
11801
-
}
11802
11802
-
const dependencyLocator = Array.isArray(dependencyReference) ? { name: dependencyReference[0], reference: dependencyReference[1] } : { name: dependencyName, reference: dependencyReference };
11803
11803
-
const dependencyInformation = getPackageInformationSafe(dependencyLocator);
11804
11804
-
if (!dependencyInformation.packageLocation) {
11805
11805
-
throw makeError(
11806
11806
-
ErrorCode.MISSING_DEPENDENCY,
11807
11807
-
`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod.
11808
11808
-
11809
11809
-
Required package: ${dependencyLocator.name}@${dependencyLocator.reference}${dependencyLocator.name !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
11810
11810
-
Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay})
11811
11811
-
`,
11812
11812
-
{ request: requestForDisplay, issuer: issuerForDisplay, dependencyLocator: Object.assign({}, dependencyLocator) }
11813
11813
-
);
11814
11814
-
}
11815
11815
-
const dependencyLocation = dependencyInformation.packageLocation;
11816
11816
-
if (subPath) {
11817
11817
-
unqualifiedPath = ppath.join(dependencyLocation, subPath);
11818
11818
-
} else {
11819
11819
-
unqualifiedPath = dependencyLocation;
11820
11820
-
}
11821
11821
-
}
11822
11822
-
return ppath.normalize(unqualifiedPath);
11823
11823
-
}
11824
11824
-
function resolveUnqualifiedExport(request, unqualifiedPath, conditions = defaultExportsConditions) {
11825
11825
-
if (isStrictRegExp.test(request))
11826
11826
-
return unqualifiedPath;
11827
11827
-
const unqualifiedExportPath = applyNodeExportsResolution(unqualifiedPath, conditions);
11828
11828
-
if (unqualifiedExportPath) {
11829
11829
-
return ppath.normalize(unqualifiedExportPath);
11830
11830
-
} else {
11831
11831
-
return unqualifiedPath;
11832
11832
-
}
11833
11833
-
}
11834
11834
-
function resolveUnqualified(unqualifiedPath, { extensions = Object.keys(require$$0.Module._extensions) } = {}) {
11835
11835
-
var _a, _b;
11836
11836
-
const candidates = [];
11837
11837
-
const qualifiedPath = applyNodeExtensionResolution(unqualifiedPath, candidates, { extensions });
11838
11838
-
if (qualifiedPath) {
11839
11839
-
return ppath.normalize(qualifiedPath);
11840
11840
-
} else {
11841
11841
-
reportRequiredFilesToWatchMode(candidates.map((candidate) => npath.fromPortablePath(candidate)));
11842
11842
-
const unqualifiedPathForDisplay = getPathForDisplay(unqualifiedPath);
11843
11843
-
const containingPackage = findPackageLocator(unqualifiedPath);
11844
11844
-
if (containingPackage) {
11845
11845
-
const { packageLocation } = getPackageInformationSafe(containingPackage);
11846
11846
-
let exists = true;
11847
11847
-
try {
11848
11848
-
opts.fakeFs.accessSync(packageLocation);
11849
11849
-
} catch (err) {
11850
11850
-
if ((err == null ? void 0 : err.code) === `ENOENT`) {
11851
11851
-
exists = false;
11852
11852
-
} else {
11853
11853
-
const readableError = ((_b = (_a = err == null ? void 0 : err.message) != null ? _a : err) != null ? _b : `empty exception thrown`).replace(/^[A-Z]/, ($0) => $0.toLowerCase());
11854
11854
-
throw makeError(ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED, `Required package exists but could not be accessed (${readableError}).
11855
11855
-
11856
11856
-
Missing package: ${containingPackage.name}@${containingPackage.reference}
11857
11857
-
Expected package location: ${getPathForDisplay(packageLocation)}
11858
11858
-
`, { unqualifiedPath: unqualifiedPathForDisplay, extensions });
11859
11859
-
}
11860
11860
-
}
11861
11861
-
if (!exists) {
11862
11862
-
const errorMessage = packageLocation.includes(`/unplugged/`) ? `Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).` : `Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.`;
11863
11863
-
throw makeError(
11864
11864
-
ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED,
11865
11865
-
`${errorMessage}
11866
11866
-
11867
11867
-
Missing package: ${containingPackage.name}@${containingPackage.reference}
11868
11868
-
Expected package location: ${getPathForDisplay(packageLocation)}
11869
11869
-
`,
11870
11870
-
{ unqualifiedPath: unqualifiedPathForDisplay, extensions }
11871
11871
-
);
11872
11872
-
}
11873
11873
-
}
11874
11874
-
throw makeError(
11875
11875
-
ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED,
11876
11876
-
`Qualified path resolution failed: we looked for the following paths, but none could be accessed.
11877
11877
-
11878
11878
-
Source path: ${unqualifiedPathForDisplay}
11879
11879
-
${candidates.map((candidate) => `Not found: ${getPathForDisplay(candidate)}
11880
11880
-
`).join(``)}`,
11881
11881
-
{ unqualifiedPath: unqualifiedPathForDisplay, extensions }
11882
11882
-
);
11883
11883
-
}
11884
11884
-
}
11885
11885
-
function resolvePrivateRequest(request, issuer, opts2) {
11886
11886
-
var _a;
11887
11887
-
if (!issuer)
11888
11888
-
throw new Error(`Assertion failed: An issuer is required to resolve private import mappings`);
11889
11889
-
const resolved = packageImportsResolve({
11890
11890
-
name: request,
11891
11891
-
base: url.pathToFileURL(npath.fromPortablePath(issuer)),
11892
11892
-
conditions: (_a = opts2.conditions) != null ? _a : defaultExportsConditions,
11893
11893
-
readFileSyncFn: tryReadFile
11894
11894
-
});
11895
11895
-
if (resolved instanceof url.URL) {
11896
11896
-
return resolveUnqualified(npath.toPortablePath(url.fileURLToPath(resolved)), { extensions: opts2.extensions });
11897
11897
-
} else {
11898
11898
-
if (resolved.startsWith(`#`))
11899
11899
-
throw new Error(`Mapping from one private import to another isn't allowed`);
11900
11900
-
return resolveRequest(resolved, issuer, opts2);
11901
11901
-
}
11902
11902
-
}
11903
11903
-
function resolveRequest(request, issuer, opts2 = {}) {
11904
11904
-
try {
11905
11905
-
if (request.startsWith(`#`))
11906
11906
-
return resolvePrivateRequest(request, issuer, opts2);
11907
11907
-
const { considerBuiltins, extensions, conditions } = opts2;
11908
11908
-
const unqualifiedPath = resolveToUnqualified(request, issuer, { considerBuiltins });
11909
11909
-
if (request === `pnpapi`)
11910
11910
-
return unqualifiedPath;
11911
11911
-
if (unqualifiedPath === null)
11912
11912
-
return null;
11913
11913
-
const isIssuerIgnored = () => issuer !== null ? isPathIgnored(issuer) : false;
11914
11914
-
const remappedPath = (!considerBuiltins || !isBuiltinModule(request)) && !isIssuerIgnored() ? resolveUnqualifiedExport(request, unqualifiedPath, conditions) : unqualifiedPath;
11915
11915
-
return resolveUnqualified(remappedPath, { extensions });
11916
11916
-
} catch (error) {
11917
11917
-
if (Object.prototype.hasOwnProperty.call(error, `pnpCode`))
11918
11918
-
Object.assign(error.data, { request: getPathForDisplay(request), issuer: issuer && getPathForDisplay(issuer) });
11919
11919
-
throw error;
11920
11920
-
}
11921
11921
-
}
11922
11922
-
function resolveVirtual(request) {
11923
11923
-
const normalized = ppath.normalize(request);
11924
11924
-
const resolved = VirtualFS.resolveVirtual(normalized);
11925
11925
-
return resolved !== normalized ? resolved : null;
11926
11926
-
}
11927
11927
-
return {
11928
11928
-
VERSIONS,
11929
11929
-
topLevel,
11930
11930
-
getLocator: (name, referencish) => {
11931
11931
-
if (Array.isArray(referencish)) {
11932
11932
-
return { name: referencish[0], reference: referencish[1] };
11933
11933
-
} else {
11934
11934
-
return { name, reference: referencish };
11935
11935
-
}
11936
11936
-
},
11937
11937
-
getDependencyTreeRoots: () => {
11938
11938
-
return [...runtimeState.dependencyTreeRoots];
11939
11939
-
},
11940
11940
-
getAllLocators() {
11941
11941
-
const locators = [];
11942
11942
-
for (const [name, entry] of packageRegistry)
11943
11943
-
for (const reference of entry.keys())
11944
11944
-
if (name !== null && reference !== null)
11945
11945
-
locators.push({ name, reference });
11946
11946
-
return locators;
11947
11947
-
},
11948
11948
-
getPackageInformation: (locator) => {
11949
11949
-
const info = getPackageInformation(locator);
11950
11950
-
if (info === null)
11951
11951
-
return null;
11952
11952
-
const packageLocation = npath.fromPortablePath(info.packageLocation);
11953
11953
-
const nativeInfo = { ...info, packageLocation };
11954
11954
-
return nativeInfo;
11955
11955
-
},
11956
11956
-
findPackageLocator: (path) => {
11957
11957
-
return findPackageLocator(npath.toPortablePath(path));
11958
11958
-
},
11959
11959
-
resolveToUnqualified: maybeLog(`resolveToUnqualified`, (request, issuer, opts2) => {
11960
11960
-
const portableIssuer = issuer !== null ? npath.toPortablePath(issuer) : null;
11961
11961
-
const resolution = resolveToUnqualified(npath.toPortablePath(request), portableIssuer, opts2);
11962
11962
-
if (resolution === null)
11963
11963
-
return null;
11964
11964
-
return npath.fromPortablePath(resolution);
11965
11965
-
}),
11966
11966
-
resolveUnqualified: maybeLog(`resolveUnqualified`, (unqualifiedPath, opts2) => {
11967
11967
-
return npath.fromPortablePath(resolveUnqualified(npath.toPortablePath(unqualifiedPath), opts2));
11968
11968
-
}),
11969
11969
-
resolveRequest: maybeLog(`resolveRequest`, (request, issuer, opts2) => {
11970
11970
-
const portableIssuer = issuer !== null ? npath.toPortablePath(issuer) : null;
11971
11971
-
const resolution = resolveRequest(npath.toPortablePath(request), portableIssuer, opts2);
11972
11972
-
if (resolution === null)
11973
11973
-
return null;
11974
11974
-
return npath.fromPortablePath(resolution);
11975
11975
-
}),
11976
11976
-
resolveVirtual: maybeLog(`resolveVirtual`, (path) => {
11977
11977
-
const result = resolveVirtual(npath.toPortablePath(path));
11978
11978
-
if (result !== null) {
11979
11979
-
return npath.fromPortablePath(result);
11980
11980
-
} else {
11981
11981
-
return null;
11982
11982
-
}
11983
11983
-
})
11984
11984
-
};
11985
11985
-
}
11986
11986
-
11987
11987
-
function makeManager(pnpapi, opts) {
11988
11988
-
const initialApiPath = npath.toPortablePath(pnpapi.resolveToUnqualified(`pnpapi`, null));
11989
11989
-
const initialApiStats = opts.fakeFs.statSync(npath.toPortablePath(initialApiPath));
11990
11990
-
const apiMetadata = /* @__PURE__ */ new Map([
11991
11991
-
[initialApiPath, {
11992
11992
-
cache: require$$0.Module._cache,
11993
11993
-
instance: pnpapi,
11994
11994
-
stats: initialApiStats,
11995
11995
-
lastRefreshCheck: Date.now()
11996
11996
-
}]
11997
11997
-
]);
11998
11998
-
function loadApiInstance(pnpApiPath) {
11999
11999
-
const nativePath = npath.fromPortablePath(pnpApiPath);
12000
12000
-
const module = new require$$0.Module(nativePath, null);
12001
12001
-
module.load(nativePath);
12002
12002
-
return module.exports;
12003
12003
-
}
12004
12004
-
function refreshApiEntry(pnpApiPath, apiEntry) {
12005
12005
-
const timeNow = Date.now();
12006
12006
-
if (timeNow - apiEntry.lastRefreshCheck < 500)
12007
12007
-
return;
12008
12008
-
apiEntry.lastRefreshCheck = timeNow;
12009
12009
-
const stats = opts.fakeFs.statSync(pnpApiPath);
12010
12010
-
if (stats.mtime > apiEntry.stats.mtime) {
12011
12011
-
process.emitWarning(`[Warning] The runtime detected new informations in a PnP file; reloading the API instance (${npath.fromPortablePath(pnpApiPath)})`);
12012
12012
-
apiEntry.stats = stats;
12013
12013
-
apiEntry.instance = loadApiInstance(pnpApiPath);
12014
12014
-
}
12015
12015
-
}
12016
12016
-
function getApiEntry(pnpApiPath, refresh = false) {
12017
12017
-
let apiEntry = apiMetadata.get(pnpApiPath);
12018
12018
-
if (typeof apiEntry !== `undefined`) {
12019
12019
-
if (refresh) {
12020
12020
-
refreshApiEntry(pnpApiPath, apiEntry);
12021
12021
-
}
12022
12022
-
} else {
12023
12023
-
apiMetadata.set(pnpApiPath, apiEntry = {
12024
12024
-
cache: {},
12025
12025
-
instance: loadApiInstance(pnpApiPath),
12026
12026
-
stats: opts.fakeFs.statSync(pnpApiPath),
12027
12027
-
lastRefreshCheck: Date.now()
12028
12028
-
});
12029
12029
-
}
12030
12030
-
return apiEntry;
12031
12031
-
}
12032
12032
-
const findApiPathCache = /* @__PURE__ */ new Map();
12033
12033
-
function addToCacheAndReturn(start, end, target) {
12034
12034
-
if (target !== null)
12035
12035
-
target = VirtualFS.resolveVirtual(target);
12036
12036
-
let curr;
12037
12037
-
let next = start;
12038
12038
-
do {
12039
12039
-
curr = next;
12040
12040
-
findApiPathCache.set(curr, target);
12041
12041
-
next = ppath.dirname(curr);
12042
12042
-
} while (curr !== end);
12043
12043
-
return target;
12044
12044
-
}
12045
12045
-
function findApiPathFor(modulePath) {
12046
12046
-
let bestCandidate = null;
12047
12047
-
for (const [apiPath, apiEntry] of apiMetadata) {
12048
12048
-
const locator = apiEntry.instance.findPackageLocator(modulePath);
12049
12049
-
if (!locator)
12050
12050
-
continue;
12051
12051
-
if (apiMetadata.size === 1)
12052
12052
-
return apiPath;
12053
12053
-
const packageInformation = apiEntry.instance.getPackageInformation(locator);
12054
12054
-
if (!packageInformation)
12055
12055
-
throw new Error(`Assertion failed: Couldn't get package information for '${modulePath}'`);
12056
12056
-
if (!bestCandidate)
12057
12057
-
bestCandidate = { packageLocation: packageInformation.packageLocation, apiPaths: [] };
12058
12058
-
if (packageInformation.packageLocation === bestCandidate.packageLocation) {
12059
12059
-
bestCandidate.apiPaths.push(apiPath);
12060
12060
-
} else if (packageInformation.packageLocation.length > bestCandidate.packageLocation.length) {
12061
12061
-
bestCandidate = { packageLocation: packageInformation.packageLocation, apiPaths: [apiPath] };
12062
12062
-
}
12063
12063
-
}
12064
12064
-
if (bestCandidate) {
12065
12065
-
if (bestCandidate.apiPaths.length === 1)
12066
12066
-
return bestCandidate.apiPaths[0];
12067
12067
-
const controlSegment = bestCandidate.apiPaths.map((apiPath) => ` ${npath.fromPortablePath(apiPath)}`).join(`
12068
12068
-
`);
12069
12069
-
throw new Error(`Unable to locate pnpapi, the module '${modulePath}' is controlled by multiple pnpapi instances.
12070
12070
-
This is usually caused by using the global cache (enableGlobalCache: true)
12071
12071
-
12072
12072
-
Controlled by:
12073
12073
-
${controlSegment}
12074
12074
-
`);
12075
12075
-
}
12076
12076
-
const start = ppath.resolve(npath.toPortablePath(modulePath));
12077
12077
-
let curr;
12078
12078
-
let next = start;
12079
12079
-
do {
12080
12080
-
curr = next;
12081
12081
-
const cached = findApiPathCache.get(curr);
12082
12082
-
if (cached !== void 0)
12083
12083
-
return addToCacheAndReturn(start, curr, cached);
12084
12084
-
const cjsCandidate = ppath.join(curr, Filename.pnpCjs);
12085
12085
-
if (opts.fakeFs.existsSync(cjsCandidate) && opts.fakeFs.statSync(cjsCandidate).isFile())
12086
12086
-
return addToCacheAndReturn(start, curr, cjsCandidate);
12087
12087
-
const legacyCjsCandidate = ppath.join(curr, Filename.pnpJs);
12088
12088
-
if (opts.fakeFs.existsSync(legacyCjsCandidate) && opts.fakeFs.statSync(legacyCjsCandidate).isFile())
12089
12089
-
return addToCacheAndReturn(start, curr, legacyCjsCandidate);
12090
12090
-
next = ppath.dirname(curr);
12091
12091
-
} while (curr !== PortablePath.root);
12092
12092
-
return addToCacheAndReturn(start, curr, null);
12093
12093
-
}
12094
12094
-
function getApiPathFromParent(parent) {
12095
12095
-
if (parent == null)
12096
12096
-
return initialApiPath;
12097
12097
-
if (typeof parent.pnpApiPath === `undefined`) {
12098
12098
-
if (parent.filename !== null) {
12099
12099
-
return parent.pnpApiPath = findApiPathFor(parent.filename);
12100
12100
-
} else {
12101
12101
-
return initialApiPath;
12102
12102
-
}
12103
12103
-
}
12104
12104
-
if (parent.pnpApiPath !== null)
12105
12105
-
return parent.pnpApiPath;
12106
12106
-
return null;
12107
12107
-
}
12108
12108
-
return {
12109
12109
-
getApiPathFromParent,
12110
12110
-
findApiPathFor,
12111
12111
-
getApiEntry
12112
12112
-
};
12113
12113
-
}
12114
12114
-
12115
12115
-
const localFs = { ...fs__default.default };
12116
12116
-
const nodeFs = new NodeFS(localFs);
12117
12117
-
const defaultRuntimeState = $$SETUP_STATE(hydrateRuntimeState);
12118
12118
-
const defaultPnpapiResolution = __filename;
12119
12119
-
const defaultFsLayer = new VirtualFS({
12120
12120
-
baseFs: new ZipOpenFS({
12121
12121
-
baseFs: nodeFs,
12122
12122
-
libzip: () => getLibzipSync(),
12123
12123
-
maxOpenFiles: 80,
12124
12124
-
readOnlyArchives: true
12125
12125
-
})
12126
12126
-
});
12127
12127
-
class DynamicFS extends ProxiedFS {
12128
12128
-
constructor() {
12129
12129
-
super(ppath);
12130
12130
-
this.baseFs = defaultFsLayer;
12131
12131
-
}
12132
12132
-
mapToBase(p) {
12133
12133
-
return p;
12134
12134
-
}
12135
12135
-
mapFromBase(p) {
12136
12136
-
return p;
12137
12137
-
}
12138
12138
-
}
12139
12139
-
const dynamicFsLayer = new DynamicFS();
12140
12140
-
let manager;
12141
12141
-
const defaultApi = Object.assign(makeApi(defaultRuntimeState, {
12142
12142
-
fakeFs: dynamicFsLayer,
12143
12143
-
pnpapiResolution: defaultPnpapiResolution
12144
12144
-
}), {
12145
12145
-
makeApi: ({
12146
12146
-
basePath = void 0,
12147
12147
-
fakeFs = dynamicFsLayer,
12148
12148
-
pnpapiResolution = defaultPnpapiResolution,
12149
12149
-
...rest
12150
12150
-
}) => {
12151
12151
-
const apiRuntimeState = typeof basePath !== `undefined` ? $$SETUP_STATE(hydrateRuntimeState, basePath) : defaultRuntimeState;
12152
12152
-
return makeApi(apiRuntimeState, {
12153
12153
-
fakeFs,
12154
12154
-
pnpapiResolution,
12155
12155
-
...rest
12156
12156
-
});
12157
12157
-
},
12158
12158
-
setup: (api) => {
12159
12159
-
applyPatch(api || defaultApi, {
12160
12160
-
fakeFs: defaultFsLayer,
12161
12161
-
manager
12162
12162
-
});
12163
12163
-
dynamicFsLayer.baseFs = new NodeFS(fs__default.default);
12164
12164
-
}
12165
12165
-
});
12166
12166
-
manager = makeManager(defaultApi, {
12167
12167
-
fakeFs: dynamicFsLayer
12168
12168
-
});
12169
12169
-
if (module.parent && module.parent.id === `internal/preload`) {
12170
12170
-
defaultApi.setup();
12171
12171
-
if (module.filename) {
12172
12172
-
delete require$$0__default.default._cache[module.filename];
12173
12173
-
}
12174
12174
-
}
12175
12175
-
if (process.mainModule === module) {
12176
12176
-
const reportError = (code, message, data) => {
12177
12177
-
process.stdout.write(`${JSON.stringify([{ code, message, data }, null])}
12178
12178
-
`);
12179
12179
-
};
12180
12180
-
const reportSuccess = (resolution) => {
12181
12181
-
process.stdout.write(`${JSON.stringify([null, resolution])}
12182
12182
-
`);
12183
12183
-
};
12184
12184
-
const processResolution = (request, issuer) => {
12185
12185
-
try {
12186
12186
-
reportSuccess(defaultApi.resolveRequest(request, issuer));
12187
12187
-
} catch (error) {
12188
12188
-
reportError(error.code, error.message, error.data);
12189
12189
-
}
12190
12190
-
};
12191
12191
-
const processRequest = (data) => {
12192
12192
-
try {
12193
12193
-
const [request, issuer] = JSON.parse(data);
12194
12194
-
processResolution(request, issuer);
12195
12195
-
} catch (error) {
12196
12196
-
reportError(`INVALID_JSON`, error.message, error.data);
12197
12197
-
}
12198
12198
-
};
12199
12199
-
if (process.argv.length > 2) {
12200
12200
-
if (process.argv.length !== 4) {
12201
12201
-
process.stderr.write(`Usage: ${process.argv[0]} ${process.argv[1]} <request> <issuer>
12202
12202
-
`);
12203
12203
-
process.exitCode = 64;
12204
12204
-
} else {
12205
12205
-
processResolution(process.argv[2], process.argv[3]);
12206
12206
-
}
12207
12207
-
} else {
12208
12208
-
let buffer = ``;
12209
12209
-
const decoder = new StringDecoder__default.default.StringDecoder();
12210
12210
-
process.stdin.on(`data`, (chunk) => {
12211
12211
-
buffer += decoder.write(chunk);
12212
12212
-
do {
12213
12213
-
const index = buffer.indexOf(`
12214
12214
-
`);
12215
12215
-
if (index === -1)
12216
12216
-
break;
12217
12217
-
const line = buffer.slice(0, index);
12218
12218
-
buffer = buffer.slice(index + 1);
12219
12219
-
processRequest(line);
12220
12220
-
} while (true);
12221
12221
-
});
12222
12222
-
}
12223
12223
-
}
12224
12224
-
12225
12225
-
module.exports = defaultApi;
-2040
buttplug/buttplug-device-config/.pnp.loader.mjs
···
1
1
-
import { URL as URL$1, fileURLToPath, pathToFileURL } from 'url';
2
2
-
import fs from 'fs';
3
3
-
import path from 'path';
4
4
-
import moduleExports, { Module } from 'module';
5
5
-
import { EOL } from 'os';
6
6
-
import assert from 'assert';
7
7
-
8
8
-
const SAFE_TIME = 456789e3;
9
9
-
10
10
-
const PortablePath = {
11
11
-
root: `/`,
12
12
-
dot: `.`,
13
13
-
parent: `..`
14
14
-
};
15
15
-
const npath = Object.create(path);
16
16
-
const ppath = Object.create(path.posix);
17
17
-
npath.cwd = () => process.cwd();
18
18
-
ppath.cwd = () => toPortablePath(process.cwd());
19
19
-
ppath.resolve = (...segments) => {
20
20
-
if (segments.length > 0 && ppath.isAbsolute(segments[0])) {
21
21
-
return path.posix.resolve(...segments);
22
22
-
} else {
23
23
-
return path.posix.resolve(ppath.cwd(), ...segments);
24
24
-
}
25
25
-
};
26
26
-
const contains = function(pathUtils, from, to) {
27
27
-
from = pathUtils.normalize(from);
28
28
-
to = pathUtils.normalize(to);
29
29
-
if (from === to)
30
30
-
return `.`;
31
31
-
if (!from.endsWith(pathUtils.sep))
32
32
-
from = from + pathUtils.sep;
33
33
-
if (to.startsWith(from)) {
34
34
-
return to.slice(from.length);
35
35
-
} else {
36
36
-
return null;
37
37
-
}
38
38
-
};
39
39
-
npath.fromPortablePath = fromPortablePath;
40
40
-
npath.toPortablePath = toPortablePath;
41
41
-
npath.contains = (from, to) => contains(npath, from, to);
42
42
-
ppath.contains = (from, to) => contains(ppath, from, to);
43
43
-
const WINDOWS_PATH_REGEXP = /^([a-zA-Z]:.*)$/;
44
44
-
const UNC_WINDOWS_PATH_REGEXP = /^\/\/(\.\/)?(.*)$/;
45
45
-
const PORTABLE_PATH_REGEXP = /^\/([a-zA-Z]:.*)$/;
46
46
-
const UNC_PORTABLE_PATH_REGEXP = /^\/unc\/(\.dot\/)?(.*)$/;
47
47
-
function fromPortablePath(p) {
48
48
-
if (process.platform !== `win32`)
49
49
-
return p;
50
50
-
let portablePathMatch, uncPortablePathMatch;
51
51
-
if (portablePathMatch = p.match(PORTABLE_PATH_REGEXP))
52
52
-
p = portablePathMatch[1];
53
53
-
else if (uncPortablePathMatch = p.match(UNC_PORTABLE_PATH_REGEXP))
54
54
-
p = `\\\\${uncPortablePathMatch[1] ? `.\\` : ``}${uncPortablePathMatch[2]}`;
55
55
-
else
56
56
-
return p;
57
57
-
return p.replace(/\//g, `\\`);
58
58
-
}
59
59
-
function toPortablePath(p) {
60
60
-
if (process.platform !== `win32`)
61
61
-
return p;
62
62
-
p = p.replace(/\\/g, `/`);
63
63
-
let windowsPathMatch, uncWindowsPathMatch;
64
64
-
if (windowsPathMatch = p.match(WINDOWS_PATH_REGEXP))
65
65
-
p = `/${windowsPathMatch[1]}`;
66
66
-
else if (uncWindowsPathMatch = p.match(UNC_WINDOWS_PATH_REGEXP))
67
67
-
p = `/unc/${uncWindowsPathMatch[1] ? `.dot/` : ``}${uncWindowsPathMatch[2]}`;
68
68
-
return p;
69
69
-
}
70
70
-
function convertPath(targetPathUtils, sourcePath) {
71
71
-
return targetPathUtils === npath ? fromPortablePath(sourcePath) : toPortablePath(sourcePath);
72
72
-
}
73
73
-
74
74
-
const defaultTime = new Date(SAFE_TIME * 1e3);
75
75
-
async function copyPromise(destinationFs, destination, sourceFs, source, opts) {
76
76
-
const normalizedDestination = destinationFs.pathUtils.normalize(destination);
77
77
-
const normalizedSource = sourceFs.pathUtils.normalize(source);
78
78
-
const prelayout = [];
79
79
-
const postlayout = [];
80
80
-
const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : await sourceFs.lstatPromise(normalizedSource);
81
81
-
await destinationFs.mkdirpPromise(destinationFs.pathUtils.dirname(destination), { utimes: [atime, mtime] });
82
82
-
const updateTime = typeof destinationFs.lutimesPromise === `function` ? destinationFs.lutimesPromise.bind(destinationFs) : destinationFs.utimesPromise.bind(destinationFs);
83
83
-
await copyImpl(prelayout, postlayout, updateTime, destinationFs, normalizedDestination, sourceFs, normalizedSource, { ...opts, didParentExist: true });
84
84
-
for (const operation of prelayout)
85
85
-
await operation();
86
86
-
await Promise.all(postlayout.map((operation) => {
87
87
-
return operation();
88
88
-
}));
89
89
-
}
90
90
-
async function copyImpl(prelayout, postlayout, updateTime, destinationFs, destination, sourceFs, source, opts) {
91
91
-
var _a, _b;
92
92
-
const destinationStat = opts.didParentExist ? await maybeLStat(destinationFs, destination) : null;
93
93
-
const sourceStat = await sourceFs.lstatPromise(source);
94
94
-
const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : sourceStat;
95
95
-
let updated;
96
96
-
switch (true) {
97
97
-
case sourceStat.isDirectory():
98
98
-
{
99
99
-
updated = await copyFolder(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts);
100
100
-
}
101
101
-
break;
102
102
-
case sourceStat.isFile():
103
103
-
{
104
104
-
updated = await copyFile(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts);
105
105
-
}
106
106
-
break;
107
107
-
case sourceStat.isSymbolicLink():
108
108
-
{
109
109
-
updated = await copySymlink(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts);
110
110
-
}
111
111
-
break;
112
112
-
default:
113
113
-
{
114
114
-
throw new Error(`Unsupported file type (${sourceStat.mode})`);
115
115
-
}
116
116
-
}
117
117
-
if (updated || ((_a = destinationStat == null ? void 0 : destinationStat.mtime) == null ? void 0 : _a.getTime()) !== mtime.getTime() || ((_b = destinationStat == null ? void 0 : destinationStat.atime) == null ? void 0 : _b.getTime()) !== atime.getTime()) {
118
118
-
postlayout.push(() => updateTime(destination, atime, mtime));
119
119
-
updated = true;
120
120
-
}
121
121
-
if (destinationStat === null || (destinationStat.mode & 511) !== (sourceStat.mode & 511)) {
122
122
-
postlayout.push(() => destinationFs.chmodPromise(destination, sourceStat.mode & 511));
123
123
-
updated = true;
124
124
-
}
125
125
-
return updated;
126
126
-
}
127
127
-
async function maybeLStat(baseFs, p) {
128
128
-
try {
129
129
-
return await baseFs.lstatPromise(p);
130
130
-
} catch (e) {
131
131
-
return null;
132
132
-
}
133
133
-
}
134
134
-
async function copyFolder(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) {
135
135
-
if (destinationStat !== null && !destinationStat.isDirectory()) {
136
136
-
if (opts.overwrite) {
137
137
-
prelayout.push(async () => destinationFs.removePromise(destination));
138
138
-
destinationStat = null;
139
139
-
} else {
140
140
-
return false;
141
141
-
}
142
142
-
}
143
143
-
let updated = false;
144
144
-
if (destinationStat === null) {
145
145
-
prelayout.push(async () => {
146
146
-
try {
147
147
-
await destinationFs.mkdirPromise(destination, { mode: sourceStat.mode });
148
148
-
} catch (err) {
149
149
-
if (err.code !== `EEXIST`) {
150
150
-
throw err;
151
151
-
}
152
152
-
}
153
153
-
});
154
154
-
updated = true;
155
155
-
}
156
156
-
const entries = await sourceFs.readdirPromise(source);
157
157
-
const nextOpts = opts.didParentExist && !destinationStat ? { ...opts, didParentExist: false } : opts;
158
158
-
if (opts.stableSort) {
159
159
-
for (const entry of entries.sort()) {
160
160
-
if (await copyImpl(prelayout, postlayout, updateTime, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts)) {
161
161
-
updated = true;
162
162
-
}
163
163
-
}
164
164
-
} else {
165
165
-
const entriesUpdateStatus = await Promise.all(entries.map(async (entry) => {
166
166
-
await copyImpl(prelayout, postlayout, updateTime, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts);
167
167
-
}));
168
168
-
if (entriesUpdateStatus.some((status) => status)) {
169
169
-
updated = true;
170
170
-
}
171
171
-
}
172
172
-
return updated;
173
173
-
}
174
174
-
const isCloneSupportedCache = /* @__PURE__ */ new WeakMap();
175
175
-
function makeLinkOperation(opFs, destination, source, sourceStat, linkStrategy) {
176
176
-
return async () => {
177
177
-
await opFs.linkPromise(source, destination);
178
178
-
if (linkStrategy === "readOnly" /* ReadOnly */) {
179
179
-
sourceStat.mode &= ~146;
180
180
-
await opFs.chmodPromise(destination, sourceStat.mode);
181
181
-
}
182
182
-
};
183
183
-
}
184
184
-
function makeCloneLinkOperation(opFs, destination, source, sourceStat, linkStrategy) {
185
185
-
const isCloneSupported = isCloneSupportedCache.get(opFs);
186
186
-
if (typeof isCloneSupported === `undefined`) {
187
187
-
return async () => {
188
188
-
try {
189
189
-
await opFs.copyFilePromise(source, destination, fs.constants.COPYFILE_FICLONE_FORCE);
190
190
-
isCloneSupportedCache.set(opFs, true);
191
191
-
} catch (err) {
192
192
-
if (err.code === `ENOSYS` || err.code === `ENOTSUP`) {
193
193
-
isCloneSupportedCache.set(opFs, false);
194
194
-
await makeLinkOperation(opFs, destination, source, sourceStat, linkStrategy)();
195
195
-
} else {
196
196
-
throw err;
197
197
-
}
198
198
-
}
199
199
-
};
200
200
-
} else {
201
201
-
if (isCloneSupported) {
202
202
-
return async () => opFs.copyFilePromise(source, destination, fs.constants.COPYFILE_FICLONE_FORCE);
203
203
-
} else {
204
204
-
return makeLinkOperation(opFs, destination, source, sourceStat, linkStrategy);
205
205
-
}
206
206
-
}
207
207
-
}
208
208
-
async function copyFile(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) {
209
209
-
var _a;
210
210
-
if (destinationStat !== null) {
211
211
-
if (opts.overwrite) {
212
212
-
prelayout.push(async () => destinationFs.removePromise(destination));
213
213
-
destinationStat = null;
214
214
-
} else {
215
215
-
return false;
216
216
-
}
217
217
-
}
218
218
-
const linkStrategy = (_a = opts.linkStrategy) != null ? _a : null;
219
219
-
const op = destinationFs === sourceFs ? linkStrategy !== null ? makeCloneLinkOperation(destinationFs, destination, source, sourceStat, linkStrategy) : async () => destinationFs.copyFilePromise(source, destination, fs.constants.COPYFILE_FICLONE) : linkStrategy !== null ? makeLinkOperation(destinationFs, destination, source, sourceStat, linkStrategy) : async () => destinationFs.writeFilePromise(destination, await sourceFs.readFilePromise(source));
220
220
-
prelayout.push(async () => op());
221
221
-
return true;
222
222
-
}
223
223
-
async function copySymlink(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) {
224
224
-
if (destinationStat !== null) {
225
225
-
if (opts.overwrite) {
226
226
-
prelayout.push(async () => destinationFs.removePromise(destination));
227
227
-
destinationStat = null;
228
228
-
} else {
229
229
-
return false;
230
230
-
}
231
231
-
}
232
232
-
prelayout.push(async () => {
233
233
-
await destinationFs.symlinkPromise(convertPath(destinationFs.pathUtils, await sourceFs.readlinkPromise(source)), destination);
234
234
-
});
235
235
-
return true;
236
236
-
}
237
237
-
238
238
-
function makeError(code, message) {
239
239
-
return Object.assign(new Error(`${code}: ${message}`), { code });
240
240
-
}
241
241
-
function ENOSYS(message, reason) {
242
242
-
return makeError(`ENOSYS`, `${message}, ${reason}`);
243
243
-
}
244
244
-
245
245
-
class FakeFS {
246
246
-
constructor(pathUtils) {
247
247
-
this.pathUtils = pathUtils;
248
248
-
}
249
249
-
async *genTraversePromise(init, { stableSort = false } = {}) {
250
250
-
const stack = [init];
251
251
-
while (stack.length > 0) {
252
252
-
const p = stack.shift();
253
253
-
const entry = await this.lstatPromise(p);
254
254
-
if (entry.isDirectory()) {
255
255
-
const entries = await this.readdirPromise(p);
256
256
-
if (stableSort) {
257
257
-
for (const entry2 of entries.sort()) {
258
258
-
stack.push(this.pathUtils.join(p, entry2));
259
259
-
}
260
260
-
} else {
261
261
-
throw new Error(`Not supported`);
262
262
-
}
263
263
-
} else {
264
264
-
yield p;
265
265
-
}
266
266
-
}
267
267
-
}
268
268
-
async removePromise(p, { recursive = true, maxRetries = 5 } = {}) {
269
269
-
let stat;
270
270
-
try {
271
271
-
stat = await this.lstatPromise(p);
272
272
-
} catch (error) {
273
273
-
if (error.code === `ENOENT`) {
274
274
-
return;
275
275
-
} else {
276
276
-
throw error;
277
277
-
}
278
278
-
}
279
279
-
if (stat.isDirectory()) {
280
280
-
if (recursive) {
281
281
-
const entries = await this.readdirPromise(p);
282
282
-
await Promise.all(entries.map((entry) => {
283
283
-
return this.removePromise(this.pathUtils.resolve(p, entry));
284
284
-
}));
285
285
-
}
286
286
-
for (let t = 0; t <= maxRetries; t++) {
287
287
-
try {
288
288
-
await this.rmdirPromise(p);
289
289
-
break;
290
290
-
} catch (error) {
291
291
-
if (error.code !== `EBUSY` && error.code !== `ENOTEMPTY`) {
292
292
-
throw error;
293
293
-
} else if (t < maxRetries) {
294
294
-
await new Promise((resolve) => setTimeout(resolve, t * 100));
295
295
-
}
296
296
-
}
297
297
-
}
298
298
-
} else {
299
299
-
await this.unlinkPromise(p);
300
300
-
}
301
301
-
}
302
302
-
removeSync(p, { recursive = true } = {}) {
303
303
-
let stat;
304
304
-
try {
305
305
-
stat = this.lstatSync(p);
306
306
-
} catch (error) {
307
307
-
if (error.code === `ENOENT`) {
308
308
-
return;
309
309
-
} else {
310
310
-
throw error;
311
311
-
}
312
312
-
}
313
313
-
if (stat.isDirectory()) {
314
314
-
if (recursive)
315
315
-
for (const entry of this.readdirSync(p))
316
316
-
this.removeSync(this.pathUtils.resolve(p, entry));
317
317
-
this.rmdirSync(p);
318
318
-
} else {
319
319
-
this.unlinkSync(p);
320
320
-
}
321
321
-
}
322
322
-
async mkdirpPromise(p, { chmod, utimes } = {}) {
323
323
-
p = this.resolve(p);
324
324
-
if (p === this.pathUtils.dirname(p))
325
325
-
return void 0;
326
326
-
const parts = p.split(this.pathUtils.sep);
327
327
-
let createdDirectory;
328
328
-
for (let u = 2; u <= parts.length; ++u) {
329
329
-
const subPath = parts.slice(0, u).join(this.pathUtils.sep);
330
330
-
if (!this.existsSync(subPath)) {
331
331
-
try {
332
332
-
await this.mkdirPromise(subPath);
333
333
-
} catch (error) {
334
334
-
if (error.code === `EEXIST`) {
335
335
-
continue;
336
336
-
} else {
337
337
-
throw error;
338
338
-
}
339
339
-
}
340
340
-
createdDirectory != null ? createdDirectory : createdDirectory = subPath;
341
341
-
if (chmod != null)
342
342
-
await this.chmodPromise(subPath, chmod);
343
343
-
if (utimes != null) {
344
344
-
await this.utimesPromise(subPath, utimes[0], utimes[1]);
345
345
-
} else {
346
346
-
const parentStat = await this.statPromise(this.pathUtils.dirname(subPath));
347
347
-
await this.utimesPromise(subPath, parentStat.atime, parentStat.mtime);
348
348
-
}
349
349
-
}
350
350
-
}
351
351
-
return createdDirectory;
352
352
-
}
353
353
-
mkdirpSync(p, { chmod, utimes } = {}) {
354
354
-
p = this.resolve(p);
355
355
-
if (p === this.pathUtils.dirname(p))
356
356
-
return void 0;
357
357
-
const parts = p.split(this.pathUtils.sep);
358
358
-
let createdDirectory;
359
359
-
for (let u = 2; u <= parts.length; ++u) {
360
360
-
const subPath = parts.slice(0, u).join(this.pathUtils.sep);
361
361
-
if (!this.existsSync(subPath)) {
362
362
-
try {
363
363
-
this.mkdirSync(subPath);
364
364
-
} catch (error) {
365
365
-
if (error.code === `EEXIST`) {
366
366
-
continue;
367
367
-
} else {
368
368
-
throw error;
369
369
-
}
370
370
-
}
371
371
-
createdDirectory != null ? createdDirectory : createdDirectory = subPath;
372
372
-
if (chmod != null)
373
373
-
this.chmodSync(subPath, chmod);
374
374
-
if (utimes != null) {
375
375
-
this.utimesSync(subPath, utimes[0], utimes[1]);
376
376
-
} else {
377
377
-
const parentStat = this.statSync(this.pathUtils.dirname(subPath));
378
378
-
this.utimesSync(subPath, parentStat.atime, parentStat.mtime);
379
379
-
}
380
380
-
}
381
381
-
}
382
382
-
return createdDirectory;
383
383
-
}
384
384
-
async copyPromise(destination, source, { baseFs = this, overwrite = true, stableSort = false, stableTime = false, linkStrategy = null } = {}) {
385
385
-
return await copyPromise(this, destination, baseFs, source, { overwrite, stableSort, stableTime, linkStrategy });
386
386
-
}
387
387
-
copySync(destination, source, { baseFs = this, overwrite = true } = {}) {
388
388
-
const stat = baseFs.lstatSync(source);
389
389
-
const exists = this.existsSync(destination);
390
390
-
if (stat.isDirectory()) {
391
391
-
this.mkdirpSync(destination);
392
392
-
const directoryListing = baseFs.readdirSync(source);
393
393
-
for (const entry of directoryListing) {
394
394
-
this.copySync(this.pathUtils.join(destination, entry), baseFs.pathUtils.join(source, entry), { baseFs, overwrite });
395
395
-
}
396
396
-
} else if (stat.isFile()) {
397
397
-
if (!exists || overwrite) {
398
398
-
if (exists)
399
399
-
this.removeSync(destination);
400
400
-
const content = baseFs.readFileSync(source);
401
401
-
this.writeFileSync(destination, content);
402
402
-
}
403
403
-
} else if (stat.isSymbolicLink()) {
404
404
-
if (!exists || overwrite) {
405
405
-
if (exists)
406
406
-
this.removeSync(destination);
407
407
-
const target = baseFs.readlinkSync(source);
408
408
-
this.symlinkSync(convertPath(this.pathUtils, target), destination);
409
409
-
}
410
410
-
} else {
411
411
-
throw new Error(`Unsupported file type (file: ${source}, mode: 0o${stat.mode.toString(8).padStart(6, `0`)})`);
412
412
-
}
413
413
-
const mode = stat.mode & 511;
414
414
-
this.chmodSync(destination, mode);
415
415
-
}
416
416
-
async changeFilePromise(p, content, opts = {}) {
417
417
-
if (Buffer.isBuffer(content)) {
418
418
-
return this.changeFileBufferPromise(p, content, opts);
419
419
-
} else {
420
420
-
return this.changeFileTextPromise(p, content, opts);
421
421
-
}
422
422
-
}
423
423
-
async changeFileBufferPromise(p, content, { mode } = {}) {
424
424
-
let current = Buffer.alloc(0);
425
425
-
try {
426
426
-
current = await this.readFilePromise(p);
427
427
-
} catch (error) {
428
428
-
}
429
429
-
if (Buffer.compare(current, content) === 0)
430
430
-
return;
431
431
-
await this.writeFilePromise(p, content, { mode });
432
432
-
}
433
433
-
async changeFileTextPromise(p, content, { automaticNewlines, mode } = {}) {
434
434
-
let current = ``;
435
435
-
try {
436
436
-
current = await this.readFilePromise(p, `utf8`);
437
437
-
} catch (error) {
438
438
-
}
439
439
-
const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content;
440
440
-
if (current === normalizedContent)
441
441
-
return;
442
442
-
await this.writeFilePromise(p, normalizedContent, { mode });
443
443
-
}
444
444
-
changeFileSync(p, content, opts = {}) {
445
445
-
if (Buffer.isBuffer(content)) {
446
446
-
return this.changeFileBufferSync(p, content, opts);
447
447
-
} else {
448
448
-
return this.changeFileTextSync(p, content, opts);
449
449
-
}
450
450
-
}
451
451
-
changeFileBufferSync(p, content, { mode } = {}) {
452
452
-
let current = Buffer.alloc(0);
453
453
-
try {
454
454
-
current = this.readFileSync(p);
455
455
-
} catch (error) {
456
456
-
}
457
457
-
if (Buffer.compare(current, content) === 0)
458
458
-
return;
459
459
-
this.writeFileSync(p, content, { mode });
460
460
-
}
461
461
-
changeFileTextSync(p, content, { automaticNewlines = false, mode } = {}) {
462
462
-
let current = ``;
463
463
-
try {
464
464
-
current = this.readFileSync(p, `utf8`);
465
465
-
} catch (error) {
466
466
-
}
467
467
-
const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content;
468
468
-
if (current === normalizedContent)
469
469
-
return;
470
470
-
this.writeFileSync(p, normalizedContent, { mode });
471
471
-
}
472
472
-
async movePromise(fromP, toP) {
473
473
-
try {
474
474
-
await this.renamePromise(fromP, toP);
475
475
-
} catch (error) {
476
476
-
if (error.code === `EXDEV`) {
477
477
-
await this.copyPromise(toP, fromP);
478
478
-
await this.removePromise(fromP);
479
479
-
} else {
480
480
-
throw error;
481
481
-
}
482
482
-
}
483
483
-
}
484
484
-
moveSync(fromP, toP) {
485
485
-
try {
486
486
-
this.renameSync(fromP, toP);
487
487
-
} catch (error) {
488
488
-
if (error.code === `EXDEV`) {
489
489
-
this.copySync(toP, fromP);
490
490
-
this.removeSync(fromP);
491
491
-
} else {
492
492
-
throw error;
493
493
-
}
494
494
-
}
495
495
-
}
496
496
-
async lockPromise(affectedPath, callback) {
497
497
-
const lockPath = `${affectedPath}.flock`;
498
498
-
const interval = 1e3 / 60;
499
499
-
const startTime = Date.now();
500
500
-
let fd = null;
501
501
-
const isAlive = async () => {
502
502
-
let pid;
503
503
-
try {
504
504
-
[pid] = await this.readJsonPromise(lockPath);
505
505
-
} catch (error) {
506
506
-
return Date.now() - startTime < 500;
507
507
-
}
508
508
-
try {
509
509
-
process.kill(pid, 0);
510
510
-
return true;
511
511
-
} catch (error) {
512
512
-
return false;
513
513
-
}
514
514
-
};
515
515
-
while (fd === null) {
516
516
-
try {
517
517
-
fd = await this.openPromise(lockPath, `wx`);
518
518
-
} catch (error) {
519
519
-
if (error.code === `EEXIST`) {
520
520
-
if (!await isAlive()) {
521
521
-
try {
522
522
-
await this.unlinkPromise(lockPath);
523
523
-
continue;
524
524
-
} catch (error2) {
525
525
-
}
526
526
-
}
527
527
-
if (Date.now() - startTime < 60 * 1e3) {
528
528
-
await new Promise((resolve) => setTimeout(resolve, interval));
529
529
-
} else {
530
530
-
throw new Error(`Couldn't acquire a lock in a reasonable time (via ${lockPath})`);
531
531
-
}
532
532
-
} else {
533
533
-
throw error;
534
534
-
}
535
535
-
}
536
536
-
}
537
537
-
await this.writePromise(fd, JSON.stringify([process.pid]));
538
538
-
try {
539
539
-
return await callback();
540
540
-
} finally {
541
541
-
try {
542
542
-
await this.closePromise(fd);
543
543
-
await this.unlinkPromise(lockPath);
544
544
-
} catch (error) {
545
545
-
}
546
546
-
}
547
547
-
}
548
548
-
async readJsonPromise(p) {
549
549
-
const content = await this.readFilePromise(p, `utf8`);
550
550
-
try {
551
551
-
return JSON.parse(content);
552
552
-
} catch (error) {
553
553
-
error.message += ` (in ${p})`;
554
554
-
throw error;
555
555
-
}
556
556
-
}
557
557
-
readJsonSync(p) {
558
558
-
const content = this.readFileSync(p, `utf8`);
559
559
-
try {
560
560
-
return JSON.parse(content);
561
561
-
} catch (error) {
562
562
-
error.message += ` (in ${p})`;
563
563
-
throw error;
564
564
-
}
565
565
-
}
566
566
-
async writeJsonPromise(p, data) {
567
567
-
return await this.writeFilePromise(p, `${JSON.stringify(data, null, 2)}
568
568
-
`);
569
569
-
}
570
570
-
writeJsonSync(p, data) {
571
571
-
return this.writeFileSync(p, `${JSON.stringify(data, null, 2)}
572
572
-
`);
573
573
-
}
574
574
-
async preserveTimePromise(p, cb) {
575
575
-
const stat = await this.lstatPromise(p);
576
576
-
const result = await cb();
577
577
-
if (typeof result !== `undefined`)
578
578
-
p = result;
579
579
-
if (this.lutimesPromise) {
580
580
-
await this.lutimesPromise(p, stat.atime, stat.mtime);
581
581
-
} else if (!stat.isSymbolicLink()) {
582
582
-
await this.utimesPromise(p, stat.atime, stat.mtime);
583
583
-
}
584
584
-
}
585
585
-
async preserveTimeSync(p, cb) {
586
586
-
const stat = this.lstatSync(p);
587
587
-
const result = cb();
588
588
-
if (typeof result !== `undefined`)
589
589
-
p = result;
590
590
-
if (this.lutimesSync) {
591
591
-
this.lutimesSync(p, stat.atime, stat.mtime);
592
592
-
} else if (!stat.isSymbolicLink()) {
593
593
-
this.utimesSync(p, stat.atime, stat.mtime);
594
594
-
}
595
595
-
}
596
596
-
}
597
597
-
class BasePortableFakeFS extends FakeFS {
598
598
-
constructor() {
599
599
-
super(ppath);
600
600
-
}
601
601
-
}
602
602
-
function getEndOfLine(content) {
603
603
-
const matches = content.match(/\r?\n/g);
604
604
-
if (matches === null)
605
605
-
return EOL;
606
606
-
const crlf = matches.filter((nl) => nl === `\r
607
607
-
`).length;
608
608
-
const lf = matches.length - crlf;
609
609
-
return crlf > lf ? `\r
610
610
-
` : `
611
611
-
`;
612
612
-
}
613
613
-
function normalizeLineEndings(originalContent, newContent) {
614
614
-
return newContent.replace(/\r?\n/g, getEndOfLine(originalContent));
615
615
-
}
616
616
-
617
617
-
class NodeFS extends BasePortableFakeFS {
618
618
-
constructor(realFs = fs) {
619
619
-
super();
620
620
-
this.realFs = realFs;
621
621
-
if (typeof this.realFs.lutimes !== `undefined`) {
622
622
-
this.lutimesPromise = this.lutimesPromiseImpl;
623
623
-
this.lutimesSync = this.lutimesSyncImpl;
624
624
-
}
625
625
-
}
626
626
-
getExtractHint() {
627
627
-
return false;
628
628
-
}
629
629
-
getRealPath() {
630
630
-
return PortablePath.root;
631
631
-
}
632
632
-
resolve(p) {
633
633
-
return ppath.resolve(p);
634
634
-
}
635
635
-
async openPromise(p, flags, mode) {
636
636
-
return await new Promise((resolve, reject) => {
637
637
-
this.realFs.open(npath.fromPortablePath(p), flags, mode, this.makeCallback(resolve, reject));
638
638
-
});
639
639
-
}
640
640
-
openSync(p, flags, mode) {
641
641
-
return this.realFs.openSync(npath.fromPortablePath(p), flags, mode);
642
642
-
}
643
643
-
async opendirPromise(p, opts) {
644
644
-
return await new Promise((resolve, reject) => {
645
645
-
if (typeof opts !== `undefined`) {
646
646
-
this.realFs.opendir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
647
647
-
} else {
648
648
-
this.realFs.opendir(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
649
649
-
}
650
650
-
}).then((dir) => {
651
651
-
return Object.defineProperty(dir, `path`, { value: p, configurable: true, writable: true });
652
652
-
});
653
653
-
}
654
654
-
opendirSync(p, opts) {
655
655
-
const dir = typeof opts !== `undefined` ? this.realFs.opendirSync(npath.fromPortablePath(p), opts) : this.realFs.opendirSync(npath.fromPortablePath(p));
656
656
-
return Object.defineProperty(dir, `path`, { value: p, configurable: true, writable: true });
657
657
-
}
658
658
-
async readPromise(fd, buffer, offset = 0, length = 0, position = -1) {
659
659
-
return await new Promise((resolve, reject) => {
660
660
-
this.realFs.read(fd, buffer, offset, length, position, (error, bytesRead) => {
661
661
-
if (error) {
662
662
-
reject(error);
663
663
-
} else {
664
664
-
resolve(bytesRead);
665
665
-
}
666
666
-
});
667
667
-
});
668
668
-
}
669
669
-
readSync(fd, buffer, offset, length, position) {
670
670
-
return this.realFs.readSync(fd, buffer, offset, length, position);
671
671
-
}
672
672
-
async writePromise(fd, buffer, offset, length, position) {
673
673
-
return await new Promise((resolve, reject) => {
674
674
-
if (typeof buffer === `string`) {
675
675
-
return this.realFs.write(fd, buffer, offset, this.makeCallback(resolve, reject));
676
676
-
} else {
677
677
-
return this.realFs.write(fd, buffer, offset, length, position, this.makeCallback(resolve, reject));
678
678
-
}
679
679
-
});
680
680
-
}
681
681
-
writeSync(fd, buffer, offset, length, position) {
682
682
-
if (typeof buffer === `string`) {
683
683
-
return this.realFs.writeSync(fd, buffer, offset);
684
684
-
} else {
685
685
-
return this.realFs.writeSync(fd, buffer, offset, length, position);
686
686
-
}
687
687
-
}
688
688
-
async closePromise(fd) {
689
689
-
await new Promise((resolve, reject) => {
690
690
-
this.realFs.close(fd, this.makeCallback(resolve, reject));
691
691
-
});
692
692
-
}
693
693
-
closeSync(fd) {
694
694
-
this.realFs.closeSync(fd);
695
695
-
}
696
696
-
createReadStream(p, opts) {
697
697
-
const realPath = p !== null ? npath.fromPortablePath(p) : p;
698
698
-
return this.realFs.createReadStream(realPath, opts);
699
699
-
}
700
700
-
createWriteStream(p, opts) {
701
701
-
const realPath = p !== null ? npath.fromPortablePath(p) : p;
702
702
-
return this.realFs.createWriteStream(realPath, opts);
703
703
-
}
704
704
-
async realpathPromise(p) {
705
705
-
return await new Promise((resolve, reject) => {
706
706
-
this.realFs.realpath(npath.fromPortablePath(p), {}, this.makeCallback(resolve, reject));
707
707
-
}).then((path) => {
708
708
-
return npath.toPortablePath(path);
709
709
-
});
710
710
-
}
711
711
-
realpathSync(p) {
712
712
-
return npath.toPortablePath(this.realFs.realpathSync(npath.fromPortablePath(p), {}));
713
713
-
}
714
714
-
async existsPromise(p) {
715
715
-
return await new Promise((resolve) => {
716
716
-
this.realFs.exists(npath.fromPortablePath(p), resolve);
717
717
-
});
718
718
-
}
719
719
-
accessSync(p, mode) {
720
720
-
return this.realFs.accessSync(npath.fromPortablePath(p), mode);
721
721
-
}
722
722
-
async accessPromise(p, mode) {
723
723
-
return await new Promise((resolve, reject) => {
724
724
-
this.realFs.access(npath.fromPortablePath(p), mode, this.makeCallback(resolve, reject));
725
725
-
});
726
726
-
}
727
727
-
existsSync(p) {
728
728
-
return this.realFs.existsSync(npath.fromPortablePath(p));
729
729
-
}
730
730
-
async statPromise(p, opts) {
731
731
-
return await new Promise((resolve, reject) => {
732
732
-
if (opts) {
733
733
-
this.realFs.stat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
734
734
-
} else {
735
735
-
this.realFs.stat(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
736
736
-
}
737
737
-
});
738
738
-
}
739
739
-
statSync(p, opts) {
740
740
-
if (opts) {
741
741
-
return this.realFs.statSync(npath.fromPortablePath(p), opts);
742
742
-
} else {
743
743
-
return this.realFs.statSync(npath.fromPortablePath(p));
744
744
-
}
745
745
-
}
746
746
-
async fstatPromise(fd, opts) {
747
747
-
return await new Promise((resolve, reject) => {
748
748
-
if (opts) {
749
749
-
this.realFs.fstat(fd, opts, this.makeCallback(resolve, reject));
750
750
-
} else {
751
751
-
this.realFs.fstat(fd, this.makeCallback(resolve, reject));
752
752
-
}
753
753
-
});
754
754
-
}
755
755
-
fstatSync(fd, opts) {
756
756
-
if (opts) {
757
757
-
return this.realFs.fstatSync(fd, opts);
758
758
-
} else {
759
759
-
return this.realFs.fstatSync(fd);
760
760
-
}
761
761
-
}
762
762
-
async lstatPromise(p, opts) {
763
763
-
return await new Promise((resolve, reject) => {
764
764
-
if (opts) {
765
765
-
this.realFs.lstat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
766
766
-
} else {
767
767
-
this.realFs.lstat(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
768
768
-
}
769
769
-
});
770
770
-
}
771
771
-
lstatSync(p, opts) {
772
772
-
if (opts) {
773
773
-
return this.realFs.lstatSync(npath.fromPortablePath(p), opts);
774
774
-
} else {
775
775
-
return this.realFs.lstatSync(npath.fromPortablePath(p));
776
776
-
}
777
777
-
}
778
778
-
async fchmodPromise(fd, mask) {
779
779
-
return await new Promise((resolve, reject) => {
780
780
-
this.realFs.fchmod(fd, mask, this.makeCallback(resolve, reject));
781
781
-
});
782
782
-
}
783
783
-
fchmodSync(fd, mask) {
784
784
-
return this.realFs.fchmodSync(fd, mask);
785
785
-
}
786
786
-
async chmodPromise(p, mask) {
787
787
-
return await new Promise((resolve, reject) => {
788
788
-
this.realFs.chmod(npath.fromPortablePath(p), mask, this.makeCallback(resolve, reject));
789
789
-
});
790
790
-
}
791
791
-
chmodSync(p, mask) {
792
792
-
return this.realFs.chmodSync(npath.fromPortablePath(p), mask);
793
793
-
}
794
794
-
async fchownPromise(fd, uid, gid) {
795
795
-
return await new Promise((resolve, reject) => {
796
796
-
this.realFs.fchown(fd, uid, gid, this.makeCallback(resolve, reject));
797
797
-
});
798
798
-
}
799
799
-
fchownSync(fd, uid, gid) {
800
800
-
return this.realFs.fchownSync(fd, uid, gid);
801
801
-
}
802
802
-
async chownPromise(p, uid, gid) {
803
803
-
return await new Promise((resolve, reject) => {
804
804
-
this.realFs.chown(npath.fromPortablePath(p), uid, gid, this.makeCallback(resolve, reject));
805
805
-
});
806
806
-
}
807
807
-
chownSync(p, uid, gid) {
808
808
-
return this.realFs.chownSync(npath.fromPortablePath(p), uid, gid);
809
809
-
}
810
810
-
async renamePromise(oldP, newP) {
811
811
-
return await new Promise((resolve, reject) => {
812
812
-
this.realFs.rename(npath.fromPortablePath(oldP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject));
813
813
-
});
814
814
-
}
815
815
-
renameSync(oldP, newP) {
816
816
-
return this.realFs.renameSync(npath.fromPortablePath(oldP), npath.fromPortablePath(newP));
817
817
-
}
818
818
-
async copyFilePromise(sourceP, destP, flags = 0) {
819
819
-
return await new Promise((resolve, reject) => {
820
820
-
this.realFs.copyFile(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags, this.makeCallback(resolve, reject));
821
821
-
});
822
822
-
}
823
823
-
copyFileSync(sourceP, destP, flags = 0) {
824
824
-
return this.realFs.copyFileSync(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags);
825
825
-
}
826
826
-
async appendFilePromise(p, content, opts) {
827
827
-
return await new Promise((resolve, reject) => {
828
828
-
const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
829
829
-
if (opts) {
830
830
-
this.realFs.appendFile(fsNativePath, content, opts, this.makeCallback(resolve, reject));
831
831
-
} else {
832
832
-
this.realFs.appendFile(fsNativePath, content, this.makeCallback(resolve, reject));
833
833
-
}
834
834
-
});
835
835
-
}
836
836
-
appendFileSync(p, content, opts) {
837
837
-
const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
838
838
-
if (opts) {
839
839
-
this.realFs.appendFileSync(fsNativePath, content, opts);
840
840
-
} else {
841
841
-
this.realFs.appendFileSync(fsNativePath, content);
842
842
-
}
843
843
-
}
844
844
-
async writeFilePromise(p, content, opts) {
845
845
-
return await new Promise((resolve, reject) => {
846
846
-
const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
847
847
-
if (opts) {
848
848
-
this.realFs.writeFile(fsNativePath, content, opts, this.makeCallback(resolve, reject));
849
849
-
} else {
850
850
-
this.realFs.writeFile(fsNativePath, content, this.makeCallback(resolve, reject));
851
851
-
}
852
852
-
});
853
853
-
}
854
854
-
writeFileSync(p, content, opts) {
855
855
-
const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
856
856
-
if (opts) {
857
857
-
this.realFs.writeFileSync(fsNativePath, content, opts);
858
858
-
} else {
859
859
-
this.realFs.writeFileSync(fsNativePath, content);
860
860
-
}
861
861
-
}
862
862
-
async unlinkPromise(p) {
863
863
-
return await new Promise((resolve, reject) => {
864
864
-
this.realFs.unlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
865
865
-
});
866
866
-
}
867
867
-
unlinkSync(p) {
868
868
-
return this.realFs.unlinkSync(npath.fromPortablePath(p));
869
869
-
}
870
870
-
async utimesPromise(p, atime, mtime) {
871
871
-
return await new Promise((resolve, reject) => {
872
872
-
this.realFs.utimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject));
873
873
-
});
874
874
-
}
875
875
-
utimesSync(p, atime, mtime) {
876
876
-
this.realFs.utimesSync(npath.fromPortablePath(p), atime, mtime);
877
877
-
}
878
878
-
async lutimesPromiseImpl(p, atime, mtime) {
879
879
-
const lutimes = this.realFs.lutimes;
880
880
-
if (typeof lutimes === `undefined`)
881
881
-
throw ENOSYS(`unavailable Node binding`, `lutimes '${p}'`);
882
882
-
return await new Promise((resolve, reject) => {
883
883
-
lutimes.call(this.realFs, npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject));
884
884
-
});
885
885
-
}
886
886
-
lutimesSyncImpl(p, atime, mtime) {
887
887
-
const lutimesSync = this.realFs.lutimesSync;
888
888
-
if (typeof lutimesSync === `undefined`)
889
889
-
throw ENOSYS(`unavailable Node binding`, `lutimes '${p}'`);
890
890
-
lutimesSync.call(this.realFs, npath.fromPortablePath(p), atime, mtime);
891
891
-
}
892
892
-
async mkdirPromise(p, opts) {
893
893
-
return await new Promise((resolve, reject) => {
894
894
-
this.realFs.mkdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
895
895
-
});
896
896
-
}
897
897
-
mkdirSync(p, opts) {
898
898
-
return this.realFs.mkdirSync(npath.fromPortablePath(p), opts);
899
899
-
}
900
900
-
async rmdirPromise(p, opts) {
901
901
-
return await new Promise((resolve, reject) => {
902
902
-
if (opts) {
903
903
-
this.realFs.rmdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
904
904
-
} else {
905
905
-
this.realFs.rmdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
906
906
-
}
907
907
-
});
908
908
-
}
909
909
-
rmdirSync(p, opts) {
910
910
-
return this.realFs.rmdirSync(npath.fromPortablePath(p), opts);
911
911
-
}
912
912
-
async linkPromise(existingP, newP) {
913
913
-
return await new Promise((resolve, reject) => {
914
914
-
this.realFs.link(npath.fromPortablePath(existingP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject));
915
915
-
});
916
916
-
}
917
917
-
linkSync(existingP, newP) {
918
918
-
return this.realFs.linkSync(npath.fromPortablePath(existingP), npath.fromPortablePath(newP));
919
919
-
}
920
920
-
async symlinkPromise(target, p, type) {
921
921
-
return await new Promise((resolve, reject) => {
922
922
-
this.realFs.symlink(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type, this.makeCallback(resolve, reject));
923
923
-
});
924
924
-
}
925
925
-
symlinkSync(target, p, type) {
926
926
-
return this.realFs.symlinkSync(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type);
927
927
-
}
928
928
-
async readFilePromise(p, encoding) {
929
929
-
return await new Promise((resolve, reject) => {
930
930
-
const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
931
931
-
this.realFs.readFile(fsNativePath, encoding, this.makeCallback(resolve, reject));
932
932
-
});
933
933
-
}
934
934
-
readFileSync(p, encoding) {
935
935
-
const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
936
936
-
return this.realFs.readFileSync(fsNativePath, encoding);
937
937
-
}
938
938
-
async readdirPromise(p, opts) {
939
939
-
return await new Promise((resolve, reject) => {
940
940
-
if (opts == null ? void 0 : opts.withFileTypes) {
941
941
-
this.realFs.readdir(npath.fromPortablePath(p), { withFileTypes: true }, this.makeCallback(resolve, reject));
942
942
-
} else {
943
943
-
this.realFs.readdir(npath.fromPortablePath(p), this.makeCallback((value) => resolve(value), reject));
944
944
-
}
945
945
-
});
946
946
-
}
947
947
-
readdirSync(p, opts) {
948
948
-
if (opts == null ? void 0 : opts.withFileTypes) {
949
949
-
return this.realFs.readdirSync(npath.fromPortablePath(p), { withFileTypes: true });
950
950
-
} else {
951
951
-
return this.realFs.readdirSync(npath.fromPortablePath(p));
952
952
-
}
953
953
-
}
954
954
-
async readlinkPromise(p) {
955
955
-
return await new Promise((resolve, reject) => {
956
956
-
this.realFs.readlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
957
957
-
}).then((path) => {
958
958
-
return npath.toPortablePath(path);
959
959
-
});
960
960
-
}
961
961
-
readlinkSync(p) {
962
962
-
return npath.toPortablePath(this.realFs.readlinkSync(npath.fromPortablePath(p)));
963
963
-
}
964
964
-
async truncatePromise(p, len) {
965
965
-
return await new Promise((resolve, reject) => {
966
966
-
this.realFs.truncate(npath.fromPortablePath(p), len, this.makeCallback(resolve, reject));
967
967
-
});
968
968
-
}
969
969
-
truncateSync(p, len) {
970
970
-
return this.realFs.truncateSync(npath.fromPortablePath(p), len);
971
971
-
}
972
972
-
async ftruncatePromise(fd, len) {
973
973
-
return await new Promise((resolve, reject) => {
974
974
-
this.realFs.ftruncate(fd, len, this.makeCallback(resolve, reject));
975
975
-
});
976
976
-
}
977
977
-
ftruncateSync(fd, len) {
978
978
-
return this.realFs.ftruncateSync(fd, len);
979
979
-
}
980
980
-
watch(p, a, b) {
981
981
-
return this.realFs.watch(
982
982
-
npath.fromPortablePath(p),
983
983
-
a,
984
984
-
b
985
985
-
);
986
986
-
}
987
987
-
watchFile(p, a, b) {
988
988
-
return this.realFs.watchFile(
989
989
-
npath.fromPortablePath(p),
990
990
-
a,
991
991
-
b
992
992
-
);
993
993
-
}
994
994
-
unwatchFile(p, cb) {
995
995
-
return this.realFs.unwatchFile(npath.fromPortablePath(p), cb);
996
996
-
}
997
997
-
makeCallback(resolve, reject) {
998
998
-
return (err, result) => {
999
999
-
if (err) {
1000
1000
-
reject(err);
1001
1001
-
} else {
1002
1002
-
resolve(result);
1003
1003
-
}
1004
1004
-
};
1005
1005
-
}
1006
1006
-
}
1007
1007
-
1008
1008
-
class ProxiedFS extends FakeFS {
1009
1009
-
getExtractHint(hints) {
1010
1010
-
return this.baseFs.getExtractHint(hints);
1011
1011
-
}
1012
1012
-
resolve(path) {
1013
1013
-
return this.mapFromBase(this.baseFs.resolve(this.mapToBase(path)));
1014
1014
-
}
1015
1015
-
getRealPath() {
1016
1016
-
return this.mapFromBase(this.baseFs.getRealPath());
1017
1017
-
}
1018
1018
-
async openPromise(p, flags, mode) {
1019
1019
-
return this.baseFs.openPromise(this.mapToBase(p), flags, mode);
1020
1020
-
}
1021
1021
-
openSync(p, flags, mode) {
1022
1022
-
return this.baseFs.openSync(this.mapToBase(p), flags, mode);
1023
1023
-
}
1024
1024
-
async opendirPromise(p, opts) {
1025
1025
-
return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(p), opts), { path: p });
1026
1026
-
}
1027
1027
-
opendirSync(p, opts) {
1028
1028
-
return Object.assign(this.baseFs.opendirSync(this.mapToBase(p), opts), { path: p });
1029
1029
-
}
1030
1030
-
async readPromise(fd, buffer, offset, length, position) {
1031
1031
-
return await this.baseFs.readPromise(fd, buffer, offset, length, position);
1032
1032
-
}
1033
1033
-
readSync(fd, buffer, offset, length, position) {
1034
1034
-
return this.baseFs.readSync(fd, buffer, offset, length, position);
1035
1035
-
}
1036
1036
-
async writePromise(fd, buffer, offset, length, position) {
1037
1037
-
if (typeof buffer === `string`) {
1038
1038
-
return await this.baseFs.writePromise(fd, buffer, offset);
1039
1039
-
} else {
1040
1040
-
return await this.baseFs.writePromise(fd, buffer, offset, length, position);
1041
1041
-
}
1042
1042
-
}
1043
1043
-
writeSync(fd, buffer, offset, length, position) {
1044
1044
-
if (typeof buffer === `string`) {
1045
1045
-
return this.baseFs.writeSync(fd, buffer, offset);
1046
1046
-
} else {
1047
1047
-
return this.baseFs.writeSync(fd, buffer, offset, length, position);
1048
1048
-
}
1049
1049
-
}
1050
1050
-
async closePromise(fd) {
1051
1051
-
return this.baseFs.closePromise(fd);
1052
1052
-
}
1053
1053
-
closeSync(fd) {
1054
1054
-
this.baseFs.closeSync(fd);
1055
1055
-
}
1056
1056
-
createReadStream(p, opts) {
1057
1057
-
return this.baseFs.createReadStream(p !== null ? this.mapToBase(p) : p, opts);
1058
1058
-
}
1059
1059
-
createWriteStream(p, opts) {
1060
1060
-
return this.baseFs.createWriteStream(p !== null ? this.mapToBase(p) : p, opts);
1061
1061
-
}
1062
1062
-
async realpathPromise(p) {
1063
1063
-
return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(p)));
1064
1064
-
}
1065
1065
-
realpathSync(p) {
1066
1066
-
return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(p)));
1067
1067
-
}
1068
1068
-
async existsPromise(p) {
1069
1069
-
return this.baseFs.existsPromise(this.mapToBase(p));
1070
1070
-
}
1071
1071
-
existsSync(p) {
1072
1072
-
return this.baseFs.existsSync(this.mapToBase(p));
1073
1073
-
}
1074
1074
-
accessSync(p, mode) {
1075
1075
-
return this.baseFs.accessSync(this.mapToBase(p), mode);
1076
1076
-
}
1077
1077
-
async accessPromise(p, mode) {
1078
1078
-
return this.baseFs.accessPromise(this.mapToBase(p), mode);
1079
1079
-
}
1080
1080
-
async statPromise(p, opts) {
1081
1081
-
return this.baseFs.statPromise(this.mapToBase(p), opts);
1082
1082
-
}
1083
1083
-
statSync(p, opts) {
1084
1084
-
return this.baseFs.statSync(this.mapToBase(p), opts);
1085
1085
-
}
1086
1086
-
async fstatPromise(fd, opts) {
1087
1087
-
return this.baseFs.fstatPromise(fd, opts);
1088
1088
-
}
1089
1089
-
fstatSync(fd, opts) {
1090
1090
-
return this.baseFs.fstatSync(fd, opts);
1091
1091
-
}
1092
1092
-
lstatPromise(p, opts) {
1093
1093
-
return this.baseFs.lstatPromise(this.mapToBase(p), opts);
1094
1094
-
}
1095
1095
-
lstatSync(p, opts) {
1096
1096
-
return this.baseFs.lstatSync(this.mapToBase(p), opts);
1097
1097
-
}
1098
1098
-
async fchmodPromise(fd, mask) {
1099
1099
-
return this.baseFs.fchmodPromise(fd, mask);
1100
1100
-
}
1101
1101
-
fchmodSync(fd, mask) {
1102
1102
-
return this.baseFs.fchmodSync(fd, mask);
1103
1103
-
}
1104
1104
-
async chmodPromise(p, mask) {
1105
1105
-
return this.baseFs.chmodPromise(this.mapToBase(p), mask);
1106
1106
-
}
1107
1107
-
chmodSync(p, mask) {
1108
1108
-
return this.baseFs.chmodSync(this.mapToBase(p), mask);
1109
1109
-
}
1110
1110
-
async fchownPromise(fd, uid, gid) {
1111
1111
-
return this.baseFs.fchownPromise(fd, uid, gid);
1112
1112
-
}
1113
1113
-
fchownSync(fd, uid, gid) {
1114
1114
-
return this.baseFs.fchownSync(fd, uid, gid);
1115
1115
-
}
1116
1116
-
async chownPromise(p, uid, gid) {
1117
1117
-
return this.baseFs.chownPromise(this.mapToBase(p), uid, gid);
1118
1118
-
}
1119
1119
-
chownSync(p, uid, gid) {
1120
1120
-
return this.baseFs.chownSync(this.mapToBase(p), uid, gid);
1121
1121
-
}
1122
1122
-
async renamePromise(oldP, newP) {
1123
1123
-
return this.baseFs.renamePromise(this.mapToBase(oldP), this.mapToBase(newP));
1124
1124
-
}
1125
1125
-
renameSync(oldP, newP) {
1126
1126
-
return this.baseFs.renameSync(this.mapToBase(oldP), this.mapToBase(newP));
1127
1127
-
}
1128
1128
-
async copyFilePromise(sourceP, destP, flags = 0) {
1129
1129
-
return this.baseFs.copyFilePromise(this.mapToBase(sourceP), this.mapToBase(destP), flags);
1130
1130
-
}
1131
1131
-
copyFileSync(sourceP, destP, flags = 0) {
1132
1132
-
return this.baseFs.copyFileSync(this.mapToBase(sourceP), this.mapToBase(destP), flags);
1133
1133
-
}
1134
1134
-
async appendFilePromise(p, content, opts) {
1135
1135
-
return this.baseFs.appendFilePromise(this.fsMapToBase(p), content, opts);
1136
1136
-
}
1137
1137
-
appendFileSync(p, content, opts) {
1138
1138
-
return this.baseFs.appendFileSync(this.fsMapToBase(p), content, opts);
1139
1139
-
}
1140
1140
-
async writeFilePromise(p, content, opts) {
1141
1141
-
return this.baseFs.writeFilePromise(this.fsMapToBase(p), content, opts);
1142
1142
-
}
1143
1143
-
writeFileSync(p, content, opts) {
1144
1144
-
return this.baseFs.writeFileSync(this.fsMapToBase(p), content, opts);
1145
1145
-
}
1146
1146
-
async unlinkPromise(p) {
1147
1147
-
return this.baseFs.unlinkPromise(this.mapToBase(p));
1148
1148
-
}
1149
1149
-
unlinkSync(p) {
1150
1150
-
return this.baseFs.unlinkSync(this.mapToBase(p));
1151
1151
-
}
1152
1152
-
async utimesPromise(p, atime, mtime) {
1153
1153
-
return this.baseFs.utimesPromise(this.mapToBase(p), atime, mtime);
1154
1154
-
}
1155
1155
-
utimesSync(p, atime, mtime) {
1156
1156
-
return this.baseFs.utimesSync(this.mapToBase(p), atime, mtime);
1157
1157
-
}
1158
1158
-
async mkdirPromise(p, opts) {
1159
1159
-
return this.baseFs.mkdirPromise(this.mapToBase(p), opts);
1160
1160
-
}
1161
1161
-
mkdirSync(p, opts) {
1162
1162
-
return this.baseFs.mkdirSync(this.mapToBase(p), opts);
1163
1163
-
}
1164
1164
-
async rmdirPromise(p, opts) {
1165
1165
-
return this.baseFs.rmdirPromise(this.mapToBase(p), opts);
1166
1166
-
}
1167
1167
-
rmdirSync(p, opts) {
1168
1168
-
return this.baseFs.rmdirSync(this.mapToBase(p), opts);
1169
1169
-
}
1170
1170
-
async linkPromise(existingP, newP) {
1171
1171
-
return this.baseFs.linkPromise(this.mapToBase(existingP), this.mapToBase(newP));
1172
1172
-
}
1173
1173
-
linkSync(existingP, newP) {
1174
1174
-
return this.baseFs.linkSync(this.mapToBase(existingP), this.mapToBase(newP));
1175
1175
-
}
1176
1176
-
async symlinkPromise(target, p, type) {
1177
1177
-
const mappedP = this.mapToBase(p);
1178
1178
-
if (this.pathUtils.isAbsolute(target))
1179
1179
-
return this.baseFs.symlinkPromise(this.mapToBase(target), mappedP, type);
1180
1180
-
const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target));
1181
1181
-
const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget);
1182
1182
-
return this.baseFs.symlinkPromise(mappedTarget, mappedP, type);
1183
1183
-
}
1184
1184
-
symlinkSync(target, p, type) {
1185
1185
-
const mappedP = this.mapToBase(p);
1186
1186
-
if (this.pathUtils.isAbsolute(target))
1187
1187
-
return this.baseFs.symlinkSync(this.mapToBase(target), mappedP, type);
1188
1188
-
const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target));
1189
1189
-
const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget);
1190
1190
-
return this.baseFs.symlinkSync(mappedTarget, mappedP, type);
1191
1191
-
}
1192
1192
-
async readFilePromise(p, encoding) {
1193
1193
-
if (encoding === `utf8`) {
1194
1194
-
return this.baseFs.readFilePromise(this.fsMapToBase(p), encoding);
1195
1195
-
} else {
1196
1196
-
return this.baseFs.readFilePromise(this.fsMapToBase(p), encoding);
1197
1197
-
}
1198
1198
-
}
1199
1199
-
readFileSync(p, encoding) {
1200
1200
-
if (encoding === `utf8`) {
1201
1201
-
return this.baseFs.readFileSync(this.fsMapToBase(p), encoding);
1202
1202
-
} else {
1203
1203
-
return this.baseFs.readFileSync(this.fsMapToBase(p), encoding);
1204
1204
-
}
1205
1205
-
}
1206
1206
-
async readdirPromise(p, opts) {
1207
1207
-
return this.baseFs.readdirPromise(this.mapToBase(p), opts);
1208
1208
-
}
1209
1209
-
readdirSync(p, opts) {
1210
1210
-
return this.baseFs.readdirSync(this.mapToBase(p), opts);
1211
1211
-
}
1212
1212
-
async readlinkPromise(p) {
1213
1213
-
return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(p)));
1214
1214
-
}
1215
1215
-
readlinkSync(p) {
1216
1216
-
return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(p)));
1217
1217
-
}
1218
1218
-
async truncatePromise(p, len) {
1219
1219
-
return this.baseFs.truncatePromise(this.mapToBase(p), len);
1220
1220
-
}
1221
1221
-
truncateSync(p, len) {
1222
1222
-
return this.baseFs.truncateSync(this.mapToBase(p), len);
1223
1223
-
}
1224
1224
-
async ftruncatePromise(fd, len) {
1225
1225
-
return this.baseFs.ftruncatePromise(fd, len);
1226
1226
-
}
1227
1227
-
ftruncateSync(fd, len) {
1228
1228
-
return this.baseFs.ftruncateSync(fd, len);
1229
1229
-
}
1230
1230
-
watch(p, a, b) {
1231
1231
-
return this.baseFs.watch(
1232
1232
-
this.mapToBase(p),
1233
1233
-
a,
1234
1234
-
b
1235
1235
-
);
1236
1236
-
}
1237
1237
-
watchFile(p, a, b) {
1238
1238
-
return this.baseFs.watchFile(
1239
1239
-
this.mapToBase(p),
1240
1240
-
a,
1241
1241
-
b
1242
1242
-
);
1243
1243
-
}
1244
1244
-
unwatchFile(p, cb) {
1245
1245
-
return this.baseFs.unwatchFile(this.mapToBase(p), cb);
1246
1246
-
}
1247
1247
-
fsMapToBase(p) {
1248
1248
-
if (typeof p === `number`) {
1249
1249
-
return p;
1250
1250
-
} else {
1251
1251
-
return this.mapToBase(p);
1252
1252
-
}
1253
1253
-
}
1254
1254
-
}
1255
1255
-
1256
1256
-
const NUMBER_REGEXP = /^[0-9]+$/;
1257
1257
-
const VIRTUAL_REGEXP = /^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/;
1258
1258
-
const VALID_COMPONENT = /^([^/]+-)?[a-f0-9]+$/;
1259
1259
-
class VirtualFS extends ProxiedFS {
1260
1260
-
constructor({ baseFs = new NodeFS() } = {}) {
1261
1261
-
super(ppath);
1262
1262
-
this.baseFs = baseFs;
1263
1263
-
}
1264
1264
-
static makeVirtualPath(base, component, to) {
1265
1265
-
if (ppath.basename(base) !== `__virtual__`)
1266
1266
-
throw new Error(`Assertion failed: Virtual folders must be named "__virtual__"`);
1267
1267
-
if (!ppath.basename(component).match(VALID_COMPONENT))
1268
1268
-
throw new Error(`Assertion failed: Virtual components must be ended by an hexadecimal hash`);
1269
1269
-
const target = ppath.relative(ppath.dirname(base), to);
1270
1270
-
const segments = target.split(`/`);
1271
1271
-
let depth = 0;
1272
1272
-
while (depth < segments.length && segments[depth] === `..`)
1273
1273
-
depth += 1;
1274
1274
-
const finalSegments = segments.slice(depth);
1275
1275
-
const fullVirtualPath = ppath.join(base, component, String(depth), ...finalSegments);
1276
1276
-
return fullVirtualPath;
1277
1277
-
}
1278
1278
-
static resolveVirtual(p) {
1279
1279
-
const match = p.match(VIRTUAL_REGEXP);
1280
1280
-
if (!match || !match[3] && match[5])
1281
1281
-
return p;
1282
1282
-
const target = ppath.dirname(match[1]);
1283
1283
-
if (!match[3] || !match[4])
1284
1284
-
return target;
1285
1285
-
const isnum = NUMBER_REGEXP.test(match[4]);
1286
1286
-
if (!isnum)
1287
1287
-
return p;
1288
1288
-
const depth = Number(match[4]);
1289
1289
-
const backstep = `../`.repeat(depth);
1290
1290
-
const subpath = match[5] || `.`;
1291
1291
-
return VirtualFS.resolveVirtual(ppath.join(target, backstep, subpath));
1292
1292
-
}
1293
1293
-
getExtractHint(hints) {
1294
1294
-
return this.baseFs.getExtractHint(hints);
1295
1295
-
}
1296
1296
-
getRealPath() {
1297
1297
-
return this.baseFs.getRealPath();
1298
1298
-
}
1299
1299
-
realpathSync(p) {
1300
1300
-
const match = p.match(VIRTUAL_REGEXP);
1301
1301
-
if (!match)
1302
1302
-
return this.baseFs.realpathSync(p);
1303
1303
-
if (!match[5])
1304
1304
-
return p;
1305
1305
-
const realpath = this.baseFs.realpathSync(this.mapToBase(p));
1306
1306
-
return VirtualFS.makeVirtualPath(match[1], match[3], realpath);
1307
1307
-
}
1308
1308
-
async realpathPromise(p) {
1309
1309
-
const match = p.match(VIRTUAL_REGEXP);
1310
1310
-
if (!match)
1311
1311
-
return await this.baseFs.realpathPromise(p);
1312
1312
-
if (!match[5])
1313
1313
-
return p;
1314
1314
-
const realpath = await this.baseFs.realpathPromise(this.mapToBase(p));
1315
1315
-
return VirtualFS.makeVirtualPath(match[1], match[3], realpath);
1316
1316
-
}
1317
1317
-
mapToBase(p) {
1318
1318
-
if (p === ``)
1319
1319
-
return p;
1320
1320
-
if (this.pathUtils.isAbsolute(p))
1321
1321
-
return VirtualFS.resolveVirtual(p);
1322
1322
-
const resolvedRoot = VirtualFS.resolveVirtual(this.baseFs.resolve(PortablePath.dot));
1323
1323
-
const resolvedP = VirtualFS.resolveVirtual(this.baseFs.resolve(p));
1324
1324
-
return ppath.relative(resolvedRoot, resolvedP) || PortablePath.dot;
1325
1325
-
}
1326
1326
-
mapFromBase(p) {
1327
1327
-
return p;
1328
1328
-
}
1329
1329
-
}
1330
1330
-
1331
1331
-
const builtinModules = new Set(Module.builtinModules || Object.keys(process.binding(`natives`)));
1332
1332
-
const isBuiltinModule = (request) => request.startsWith(`node:`) || builtinModules.has(request);
1333
1333
-
function readPackageScope(checkPath) {
1334
1334
-
const rootSeparatorIndex = checkPath.indexOf(npath.sep);
1335
1335
-
let separatorIndex;
1336
1336
-
do {
1337
1337
-
separatorIndex = checkPath.lastIndexOf(npath.sep);
1338
1338
-
checkPath = checkPath.slice(0, separatorIndex);
1339
1339
-
if (checkPath.endsWith(`${npath.sep}node_modules`))
1340
1340
-
return false;
1341
1341
-
const pjson = readPackage(checkPath + npath.sep);
1342
1342
-
if (pjson) {
1343
1343
-
return {
1344
1344
-
data: pjson,
1345
1345
-
path: checkPath
1346
1346
-
};
1347
1347
-
}
1348
1348
-
} while (separatorIndex > rootSeparatorIndex);
1349
1349
-
return false;
1350
1350
-
}
1351
1351
-
function readPackage(requestPath) {
1352
1352
-
const jsonPath = npath.resolve(requestPath, `package.json`);
1353
1353
-
if (!fs.existsSync(jsonPath))
1354
1354
-
return null;
1355
1355
-
return JSON.parse(fs.readFileSync(jsonPath, `utf8`));
1356
1356
-
}
1357
1357
-
1358
1358
-
const [major, minor] = process.versions.node.split(`.`).map((value) => parseInt(value, 10));
1359
1359
-
const HAS_CONSOLIDATED_HOOKS = major > 16 || major === 16 && minor >= 12;
1360
1360
-
const HAS_UNFLAGGED_JSON_MODULES = major > 17 || major === 17 && minor >= 5 || major === 16 && minor >= 15;
1361
1361
-
const HAS_JSON_IMPORT_ASSERTION_REQUIREMENT = major > 17 || major === 17 && minor >= 1 || major === 16 && minor > 14;
1362
1362
-
1363
1363
-
async function tryReadFile$1(path2) {
1364
1364
-
try {
1365
1365
-
return await fs.promises.readFile(path2, `utf8`);
1366
1366
-
} catch (error) {
1367
1367
-
if (error.code === `ENOENT`)
1368
1368
-
return null;
1369
1369
-
throw error;
1370
1370
-
}
1371
1371
-
}
1372
1372
-
function tryParseURL(str, base) {
1373
1373
-
try {
1374
1374
-
return new URL$1(str, base);
1375
1375
-
} catch {
1376
1376
-
return null;
1377
1377
-
}
1378
1378
-
}
1379
1379
-
let entrypointPath = null;
1380
1380
-
function setEntrypointPath(file) {
1381
1381
-
entrypointPath = file;
1382
1382
-
}
1383
1383
-
function getFileFormat(filepath) {
1384
1384
-
var _a, _b;
1385
1385
-
const ext = path.extname(filepath);
1386
1386
-
switch (ext) {
1387
1387
-
case `.mjs`: {
1388
1388
-
return `module`;
1389
1389
-
}
1390
1390
-
case `.cjs`: {
1391
1391
-
return `commonjs`;
1392
1392
-
}
1393
1393
-
case `.wasm`: {
1394
1394
-
throw new Error(
1395
1395
-
`Unknown file extension ".wasm" for ${filepath}`
1396
1396
-
);
1397
1397
-
}
1398
1398
-
case `.json`: {
1399
1399
-
if (HAS_UNFLAGGED_JSON_MODULES)
1400
1400
-
return `json`;
1401
1401
-
throw new Error(
1402
1402
-
`Unknown file extension ".json" for ${filepath}`
1403
1403
-
);
1404
1404
-
}
1405
1405
-
case `.js`: {
1406
1406
-
const pkg = readPackageScope(filepath);
1407
1407
-
if (!pkg)
1408
1408
-
return `commonjs`;
1409
1409
-
return (_a = pkg.data.type) != null ? _a : `commonjs`;
1410
1410
-
}
1411
1411
-
default: {
1412
1412
-
if (entrypointPath !== filepath)
1413
1413
-
return null;
1414
1414
-
const pkg = readPackageScope(filepath);
1415
1415
-
if (!pkg)
1416
1416
-
return `commonjs`;
1417
1417
-
if (pkg.data.type === `module`)
1418
1418
-
return null;
1419
1419
-
return (_b = pkg.data.type) != null ? _b : `commonjs`;
1420
1420
-
}
1421
1421
-
}
1422
1422
-
}
1423
1423
-
1424
1424
-
async function getFormat$1(resolved, context, defaultGetFormat) {
1425
1425
-
const url = tryParseURL(resolved);
1426
1426
-
if ((url == null ? void 0 : url.protocol) !== `file:`)
1427
1427
-
return defaultGetFormat(resolved, context, defaultGetFormat);
1428
1428
-
const format = getFileFormat(fileURLToPath(url));
1429
1429
-
if (format) {
1430
1430
-
return {
1431
1431
-
format
1432
1432
-
};
1433
1433
-
}
1434
1434
-
return defaultGetFormat(resolved, context, defaultGetFormat);
1435
1435
-
}
1436
1436
-
1437
1437
-
async function getSource$1(urlString, context, defaultGetSource) {
1438
1438
-
const url = tryParseURL(urlString);
1439
1439
-
if ((url == null ? void 0 : url.protocol) !== `file:`)
1440
1440
-
return defaultGetSource(urlString, context, defaultGetSource);
1441
1441
-
return {
1442
1442
-
source: await fs.promises.readFile(fileURLToPath(url), `utf8`)
1443
1443
-
};
1444
1444
-
}
1445
1445
-
1446
1446
-
async function load$1(urlString, context, nextLoad) {
1447
1447
-
var _a;
1448
1448
-
const url = tryParseURL(urlString);
1449
1449
-
if ((url == null ? void 0 : url.protocol) !== `file:`)
1450
1450
-
return nextLoad(urlString, context, nextLoad);
1451
1451
-
const filePath = fileURLToPath(url);
1452
1452
-
const format = getFileFormat(filePath);
1453
1453
-
if (!format)
1454
1454
-
return nextLoad(urlString, context, nextLoad);
1455
1455
-
if (HAS_JSON_IMPORT_ASSERTION_REQUIREMENT && format === `json` && ((_a = context.importAssertions) == null ? void 0 : _a.type) !== `json`) {
1456
1456
-
const err = new TypeError(`[ERR_IMPORT_ASSERTION_TYPE_MISSING]: Module "${urlString}" needs an import assertion of type "json"`);
1457
1457
-
err.code = `ERR_IMPORT_ASSERTION_TYPE_MISSING`;
1458
1458
-
throw err;
1459
1459
-
}
1460
1460
-
if (process.env.WATCH_REPORT_DEPENDENCIES && process.send) {
1461
1461
-
process.send({
1462
1462
-
"watch:import": pathToFileURL(
1463
1463
-
npath.fromPortablePath(
1464
1464
-
VirtualFS.resolveVirtual(npath.toPortablePath(filePath))
1465
1465
-
)
1466
1466
-
).href
1467
1467
-
});
1468
1468
-
}
1469
1469
-
return {
1470
1470
-
format,
1471
1471
-
source: await fs.promises.readFile(filePath, `utf8`),
1472
1472
-
shortCircuit: true
1473
1473
-
};
1474
1474
-
}
1475
1475
-
1476
1476
-
const ArrayIsArray = Array.isArray;
1477
1477
-
const JSONStringify = JSON.stringify;
1478
1478
-
const ObjectGetOwnPropertyNames = Object.getOwnPropertyNames;
1479
1479
-
const ObjectPrototypeHasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
1480
1480
-
const RegExpPrototypeExec = (obj, string) => RegExp.prototype.exec.call(obj, string);
1481
1481
-
const RegExpPrototypeSymbolReplace = (obj, ...rest) => RegExp.prototype[Symbol.replace].apply(obj, rest);
1482
1482
-
const StringPrototypeEndsWith = (str, ...rest) => String.prototype.endsWith.apply(str, rest);
1483
1483
-
const StringPrototypeIncludes = (str, ...rest) => String.prototype.includes.apply(str, rest);
1484
1484
-
const StringPrototypeLastIndexOf = (str, ...rest) => String.prototype.lastIndexOf.apply(str, rest);
1485
1485
-
const StringPrototypeIndexOf = (str, ...rest) => String.prototype.indexOf.apply(str, rest);
1486
1486
-
const StringPrototypeReplace = (str, ...rest) => String.prototype.replace.apply(str, rest);
1487
1487
-
const StringPrototypeSlice = (str, ...rest) => String.prototype.slice.apply(str, rest);
1488
1488
-
const StringPrototypeStartsWith = (str, ...rest) => String.prototype.startsWith.apply(str, rest);
1489
1489
-
const SafeMap = Map;
1490
1490
-
const JSONParse = JSON.parse;
1491
1491
-
1492
1492
-
function createErrorType(code, messageCreator, errorType) {
1493
1493
-
return class extends errorType {
1494
1494
-
constructor(...args) {
1495
1495
-
super(messageCreator(...args));
1496
1496
-
this.code = code;
1497
1497
-
this.name = `${errorType.name} [${code}]`;
1498
1498
-
}
1499
1499
-
};
1500
1500
-
}
1501
1501
-
const ERR_PACKAGE_IMPORT_NOT_DEFINED = createErrorType(
1502
1502
-
`ERR_PACKAGE_IMPORT_NOT_DEFINED`,
1503
1503
-
(specifier, packagePath, base) => {
1504
1504
-
return `Package import specifier "${specifier}" is not defined${packagePath ? ` in package ${packagePath}package.json` : ``} imported from ${base}`;
1505
1505
-
},
1506
1506
-
TypeError
1507
1507
-
);
1508
1508
-
const ERR_INVALID_MODULE_SPECIFIER = createErrorType(
1509
1509
-
`ERR_INVALID_MODULE_SPECIFIER`,
1510
1510
-
(request, reason, base = void 0) => {
1511
1511
-
return `Invalid module "${request}" ${reason}${base ? ` imported from ${base}` : ``}`;
1512
1512
-
},
1513
1513
-
TypeError
1514
1514
-
);
1515
1515
-
const ERR_INVALID_PACKAGE_TARGET = createErrorType(
1516
1516
-
`ERR_INVALID_PACKAGE_TARGET`,
1517
1517
-
(pkgPath, key, target, isImport = false, base = void 0) => {
1518
1518
-
const relError = typeof target === `string` && !isImport && target.length && !StringPrototypeStartsWith(target, `./`);
1519
1519
-
if (key === `.`) {
1520
1520
-
assert(isImport === false);
1521
1521
-
return `Invalid "exports" main target ${JSONStringify(target)} defined in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`;
1522
1522
-
}
1523
1523
-
return `Invalid "${isImport ? `imports` : `exports`}" target ${JSONStringify(
1524
1524
-
target
1525
1525
-
)} defined for '${key}' in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`;
1526
1526
-
},
1527
1527
-
Error
1528
1528
-
);
1529
1529
-
const ERR_INVALID_PACKAGE_CONFIG = createErrorType(
1530
1530
-
`ERR_INVALID_PACKAGE_CONFIG`,
1531
1531
-
(path, base, message) => {
1532
1532
-
return `Invalid package config ${path}${base ? ` while importing ${base}` : ``}${message ? `. ${message}` : ``}`;
1533
1533
-
},
1534
1534
-
Error
1535
1535
-
);
1536
1536
-
1537
1537
-
function filterOwnProperties(source, keys) {
1538
1538
-
const filtered = /* @__PURE__ */ Object.create(null);
1539
1539
-
for (let i = 0; i < keys.length; i++) {
1540
1540
-
const key = keys[i];
1541
1541
-
if (ObjectPrototypeHasOwnProperty(source, key)) {
1542
1542
-
filtered[key] = source[key];
1543
1543
-
}
1544
1544
-
}
1545
1545
-
return filtered;
1546
1546
-
}
1547
1547
-
1548
1548
-
const packageJSONCache = new SafeMap();
1549
1549
-
function getPackageConfig(path, specifier, base, readFileSyncFn) {
1550
1550
-
const existing = packageJSONCache.get(path);
1551
1551
-
if (existing !== void 0) {
1552
1552
-
return existing;
1553
1553
-
}
1554
1554
-
const source = readFileSyncFn(path);
1555
1555
-
if (source === void 0) {
1556
1556
-
const packageConfig2 = {
1557
1557
-
pjsonPath: path,
1558
1558
-
exists: false,
1559
1559
-
main: void 0,
1560
1560
-
name: void 0,
1561
1561
-
type: "none",
1562
1562
-
exports: void 0,
1563
1563
-
imports: void 0
1564
1564
-
};
1565
1565
-
packageJSONCache.set(path, packageConfig2);
1566
1566
-
return packageConfig2;
1567
1567
-
}
1568
1568
-
let packageJSON;
1569
1569
-
try {
1570
1570
-
packageJSON = JSONParse(source);
1571
1571
-
} catch (error) {
1572
1572
-
throw new ERR_INVALID_PACKAGE_CONFIG(
1573
1573
-
path,
1574
1574
-
(base ? `"${specifier}" from ` : "") + fileURLToPath(base || specifier),
1575
1575
-
error.message
1576
1576
-
);
1577
1577
-
}
1578
1578
-
let { imports, main, name, type } = filterOwnProperties(packageJSON, [
1579
1579
-
"imports",
1580
1580
-
"main",
1581
1581
-
"name",
1582
1582
-
"type"
1583
1583
-
]);
1584
1584
-
const exports = ObjectPrototypeHasOwnProperty(packageJSON, "exports") ? packageJSON.exports : void 0;
1585
1585
-
if (typeof imports !== "object" || imports === null) {
1586
1586
-
imports = void 0;
1587
1587
-
}
1588
1588
-
if (typeof main !== "string") {
1589
1589
-
main = void 0;
1590
1590
-
}
1591
1591
-
if (typeof name !== "string") {
1592
1592
-
name = void 0;
1593
1593
-
}
1594
1594
-
if (type !== "module" && type !== "commonjs") {
1595
1595
-
type = "none";
1596
1596
-
}
1597
1597
-
const packageConfig = {
1598
1598
-
pjsonPath: path,
1599
1599
-
exists: true,
1600
1600
-
main,
1601
1601
-
name,
1602
1602
-
type,
1603
1603
-
exports,
1604
1604
-
imports
1605
1605
-
};
1606
1606
-
packageJSONCache.set(path, packageConfig);
1607
1607
-
return packageConfig;
1608
1608
-
}
1609
1609
-
function getPackageScopeConfig(resolved, readFileSyncFn) {
1610
1610
-
let packageJSONUrl = new URL("./package.json", resolved);
1611
1611
-
while (true) {
1612
1612
-
const packageJSONPath2 = packageJSONUrl.pathname;
1613
1613
-
if (StringPrototypeEndsWith(packageJSONPath2, "node_modules/package.json")) {
1614
1614
-
break;
1615
1615
-
}
1616
1616
-
const packageConfig2 = getPackageConfig(
1617
1617
-
fileURLToPath(packageJSONUrl),
1618
1618
-
resolved,
1619
1619
-
void 0,
1620
1620
-
readFileSyncFn
1621
1621
-
);
1622
1622
-
if (packageConfig2.exists) {
1623
1623
-
return packageConfig2;
1624
1624
-
}
1625
1625
-
const lastPackageJSONUrl = packageJSONUrl;
1626
1626
-
packageJSONUrl = new URL("../package.json", packageJSONUrl);
1627
1627
-
if (packageJSONUrl.pathname === lastPackageJSONUrl.pathname) {
1628
1628
-
break;
1629
1629
-
}
1630
1630
-
}
1631
1631
-
const packageJSONPath = fileURLToPath(packageJSONUrl);
1632
1632
-
const packageConfig = {
1633
1633
-
pjsonPath: packageJSONPath,
1634
1634
-
exists: false,
1635
1635
-
main: void 0,
1636
1636
-
name: void 0,
1637
1637
-
type: "none",
1638
1638
-
exports: void 0,
1639
1639
-
imports: void 0
1640
1640
-
};
1641
1641
-
packageJSONCache.set(packageJSONPath, packageConfig);
1642
1642
-
return packageConfig;
1643
1643
-
}
1644
1644
-
1645
1645
-
/**
1646
1646
-
@license
1647
1647
-
Copyright Node.js contributors. All rights reserved.
1648
1648
-
1649
1649
-
Permission is hereby granted, free of charge, to any person obtaining a copy
1650
1650
-
of this software and associated documentation files (the "Software"), to
1651
1651
-
deal in the Software without restriction, including without limitation the
1652
1652
-
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
1653
1653
-
sell copies of the Software, and to permit persons to whom the Software is
1654
1654
-
furnished to do so, subject to the following conditions:
1655
1655
-
1656
1656
-
The above copyright notice and this permission notice shall be included in
1657
1657
-
all copies or substantial portions of the Software.
1658
1658
-
1659
1659
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1660
1660
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1661
1661
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1662
1662
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1663
1663
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1664
1664
-
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1665
1665
-
IN THE SOFTWARE.
1666
1666
-
*/
1667
1667
-
function throwImportNotDefined(specifier, packageJSONUrl, base) {
1668
1668
-
throw new ERR_PACKAGE_IMPORT_NOT_DEFINED(
1669
1669
-
specifier,
1670
1670
-
packageJSONUrl && fileURLToPath(new URL(".", packageJSONUrl)),
1671
1671
-
fileURLToPath(base)
1672
1672
-
);
1673
1673
-
}
1674
1674
-
function throwInvalidSubpath(subpath, packageJSONUrl, internal, base) {
1675
1675
-
const reason = `request is not a valid subpath for the "${internal ? "imports" : "exports"}" resolution of ${fileURLToPath(packageJSONUrl)}`;
1676
1676
-
throw new ERR_INVALID_MODULE_SPECIFIER(
1677
1677
-
subpath,
1678
1678
-
reason,
1679
1679
-
base && fileURLToPath(base)
1680
1680
-
);
1681
1681
-
}
1682
1682
-
function throwInvalidPackageTarget(subpath, target, packageJSONUrl, internal, base) {
1683
1683
-
if (typeof target === "object" && target !== null) {
1684
1684
-
target = JSONStringify(target, null, "");
1685
1685
-
} else {
1686
1686
-
target = `${target}`;
1687
1687
-
}
1688
1688
-
throw new ERR_INVALID_PACKAGE_TARGET(
1689
1689
-
fileURLToPath(new URL(".", packageJSONUrl)),
1690
1690
-
subpath,
1691
1691
-
target,
1692
1692
-
internal,
1693
1693
-
base && fileURLToPath(base)
1694
1694
-
);
1695
1695
-
}
1696
1696
-
const invalidSegmentRegEx = /(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i;
1697
1697
-
const patternRegEx = /\*/g;
1698
1698
-
function resolvePackageTargetString(target, subpath, match, packageJSONUrl, base, pattern, internal, conditions) {
1699
1699
-
if (subpath !== "" && !pattern && target[target.length - 1] !== "/")
1700
1700
-
throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base);
1701
1701
-
if (!StringPrototypeStartsWith(target, "./")) {
1702
1702
-
if (internal && !StringPrototypeStartsWith(target, "../") && !StringPrototypeStartsWith(target, "/")) {
1703
1703
-
let isURL = false;
1704
1704
-
try {
1705
1705
-
new URL(target);
1706
1706
-
isURL = true;
1707
1707
-
} catch {
1708
1708
-
}
1709
1709
-
if (!isURL) {
1710
1710
-
const exportTarget = pattern ? RegExpPrototypeSymbolReplace(patternRegEx, target, () => subpath) : target + subpath;
1711
1711
-
return exportTarget;
1712
1712
-
}
1713
1713
-
}
1714
1714
-
throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base);
1715
1715
-
}
1716
1716
-
if (RegExpPrototypeExec(
1717
1717
-
invalidSegmentRegEx,
1718
1718
-
StringPrototypeSlice(target, 2)
1719
1719
-
) !== null)
1720
1720
-
throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base);
1721
1721
-
const resolved = new URL(target, packageJSONUrl);
1722
1722
-
const resolvedPath = resolved.pathname;
1723
1723
-
const packagePath = new URL(".", packageJSONUrl).pathname;
1724
1724
-
if (!StringPrototypeStartsWith(resolvedPath, packagePath))
1725
1725
-
throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base);
1726
1726
-
if (subpath === "")
1727
1727
-
return resolved;
1728
1728
-
if (RegExpPrototypeExec(invalidSegmentRegEx, subpath) !== null) {
1729
1729
-
const request = pattern ? StringPrototypeReplace(match, "*", () => subpath) : match + subpath;
1730
1730
-
throwInvalidSubpath(request, packageJSONUrl, internal, base);
1731
1731
-
}
1732
1732
-
if (pattern) {
1733
1733
-
return new URL(
1734
1734
-
RegExpPrototypeSymbolReplace(patternRegEx, resolved.href, () => subpath)
1735
1735
-
);
1736
1736
-
}
1737
1737
-
return new URL(subpath, resolved);
1738
1738
-
}
1739
1739
-
function isArrayIndex(key) {
1740
1740
-
const keyNum = +key;
1741
1741
-
if (`${keyNum}` !== key)
1742
1742
-
return false;
1743
1743
-
return keyNum >= 0 && keyNum < 4294967295;
1744
1744
-
}
1745
1745
-
function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, base, pattern, internal, conditions) {
1746
1746
-
if (typeof target === "string") {
1747
1747
-
return resolvePackageTargetString(
1748
1748
-
target,
1749
1749
-
subpath,
1750
1750
-
packageSubpath,
1751
1751
-
packageJSONUrl,
1752
1752
-
base,
1753
1753
-
pattern,
1754
1754
-
internal);
1755
1755
-
} else if (ArrayIsArray(target)) {
1756
1756
-
if (target.length === 0) {
1757
1757
-
return null;
1758
1758
-
}
1759
1759
-
let lastException;
1760
1760
-
for (let i = 0; i < target.length; i++) {
1761
1761
-
const targetItem = target[i];
1762
1762
-
let resolveResult;
1763
1763
-
try {
1764
1764
-
resolveResult = resolvePackageTarget(
1765
1765
-
packageJSONUrl,
1766
1766
-
targetItem,
1767
1767
-
subpath,
1768
1768
-
packageSubpath,
1769
1769
-
base,
1770
1770
-
pattern,
1771
1771
-
internal,
1772
1772
-
conditions
1773
1773
-
);
1774
1774
-
} catch (e) {
1775
1775
-
lastException = e;
1776
1776
-
if (e.code === "ERR_INVALID_PACKAGE_TARGET") {
1777
1777
-
continue;
1778
1778
-
}
1779
1779
-
throw e;
1780
1780
-
}
1781
1781
-
if (resolveResult === void 0) {
1782
1782
-
continue;
1783
1783
-
}
1784
1784
-
if (resolveResult === null) {
1785
1785
-
lastException = null;
1786
1786
-
continue;
1787
1787
-
}
1788
1788
-
return resolveResult;
1789
1789
-
}
1790
1790
-
if (lastException === void 0 || lastException === null)
1791
1791
-
return lastException;
1792
1792
-
throw lastException;
1793
1793
-
} else if (typeof target === "object" && target !== null) {
1794
1794
-
const keys = ObjectGetOwnPropertyNames(target);
1795
1795
-
for (let i = 0; i < keys.length; i++) {
1796
1796
-
const key = keys[i];
1797
1797
-
if (isArrayIndex(key)) {
1798
1798
-
throw new ERR_INVALID_PACKAGE_CONFIG(
1799
1799
-
fileURLToPath(packageJSONUrl),
1800
1800
-
base,
1801
1801
-
'"exports" cannot contain numeric property keys.'
1802
1802
-
);
1803
1803
-
}
1804
1804
-
}
1805
1805
-
for (let i = 0; i < keys.length; i++) {
1806
1806
-
const key = keys[i];
1807
1807
-
if (key === "default" || conditions.has(key)) {
1808
1808
-
const conditionalTarget = target[key];
1809
1809
-
const resolveResult = resolvePackageTarget(
1810
1810
-
packageJSONUrl,
1811
1811
-
conditionalTarget,
1812
1812
-
subpath,
1813
1813
-
packageSubpath,
1814
1814
-
base,
1815
1815
-
pattern,
1816
1816
-
internal,
1817
1817
-
conditions
1818
1818
-
);
1819
1819
-
if (resolveResult === void 0)
1820
1820
-
continue;
1821
1821
-
return resolveResult;
1822
1822
-
}
1823
1823
-
}
1824
1824
-
return void 0;
1825
1825
-
} else if (target === null) {
1826
1826
-
return null;
1827
1827
-
}
1828
1828
-
throwInvalidPackageTarget(
1829
1829
-
packageSubpath,
1830
1830
-
target,
1831
1831
-
packageJSONUrl,
1832
1832
-
internal,
1833
1833
-
base
1834
1834
-
);
1835
1835
-
}
1836
1836
-
function patternKeyCompare(a, b) {
1837
1837
-
const aPatternIndex = StringPrototypeIndexOf(a, "*");
1838
1838
-
const bPatternIndex = StringPrototypeIndexOf(b, "*");
1839
1839
-
const baseLenA = aPatternIndex === -1 ? a.length : aPatternIndex + 1;
1840
1840
-
const baseLenB = bPatternIndex === -1 ? b.length : bPatternIndex + 1;
1841
1841
-
if (baseLenA > baseLenB)
1842
1842
-
return -1;
1843
1843
-
if (baseLenB > baseLenA)
1844
1844
-
return 1;
1845
1845
-
if (aPatternIndex === -1)
1846
1846
-
return 1;
1847
1847
-
if (bPatternIndex === -1)
1848
1848
-
return -1;
1849
1849
-
if (a.length > b.length)
1850
1850
-
return -1;
1851
1851
-
if (b.length > a.length)
1852
1852
-
return 1;
1853
1853
-
return 0;
1854
1854
-
}
1855
1855
-
function packageImportsResolve({
1856
1856
-
name,
1857
1857
-
base,
1858
1858
-
conditions,
1859
1859
-
readFileSyncFn
1860
1860
-
}) {
1861
1861
-
if (name === "#" || StringPrototypeStartsWith(name, "#/") || StringPrototypeEndsWith(name, "/")) {
1862
1862
-
const reason = "is not a valid internal imports specifier name";
1863
1863
-
throw new ERR_INVALID_MODULE_SPECIFIER(name, reason, fileURLToPath(base));
1864
1864
-
}
1865
1865
-
let packageJSONUrl;
1866
1866
-
const packageConfig = getPackageScopeConfig(base, readFileSyncFn);
1867
1867
-
if (packageConfig.exists) {
1868
1868
-
packageJSONUrl = pathToFileURL(packageConfig.pjsonPath);
1869
1869
-
const imports = packageConfig.imports;
1870
1870
-
if (imports) {
1871
1871
-
if (ObjectPrototypeHasOwnProperty(imports, name) && !StringPrototypeIncludes(name, "*")) {
1872
1872
-
const resolveResult = resolvePackageTarget(
1873
1873
-
packageJSONUrl,
1874
1874
-
imports[name],
1875
1875
-
"",
1876
1876
-
name,
1877
1877
-
base,
1878
1878
-
false,
1879
1879
-
true,
1880
1880
-
conditions
1881
1881
-
);
1882
1882
-
if (resolveResult != null) {
1883
1883
-
return resolveResult;
1884
1884
-
}
1885
1885
-
} else {
1886
1886
-
let bestMatch = "";
1887
1887
-
let bestMatchSubpath;
1888
1888
-
const keys = ObjectGetOwnPropertyNames(imports);
1889
1889
-
for (let i = 0; i < keys.length; i++) {
1890
1890
-
const key = keys[i];
1891
1891
-
const patternIndex = StringPrototypeIndexOf(key, "*");
1892
1892
-
if (patternIndex !== -1 && StringPrototypeStartsWith(
1893
1893
-
name,
1894
1894
-
StringPrototypeSlice(key, 0, patternIndex)
1895
1895
-
)) {
1896
1896
-
const patternTrailer = StringPrototypeSlice(key, patternIndex + 1);
1897
1897
-
if (name.length >= key.length && StringPrototypeEndsWith(name, patternTrailer) && patternKeyCompare(bestMatch, key) === 1 && StringPrototypeLastIndexOf(key, "*") === patternIndex) {
1898
1898
-
bestMatch = key;
1899
1899
-
bestMatchSubpath = StringPrototypeSlice(
1900
1900
-
name,
1901
1901
-
patternIndex,
1902
1902
-
name.length - patternTrailer.length
1903
1903
-
);
1904
1904
-
}
1905
1905
-
}
1906
1906
-
}
1907
1907
-
if (bestMatch) {
1908
1908
-
const target = imports[bestMatch];
1909
1909
-
const resolveResult = resolvePackageTarget(
1910
1910
-
packageJSONUrl,
1911
1911
-
target,
1912
1912
-
bestMatchSubpath,
1913
1913
-
bestMatch,
1914
1914
-
base,
1915
1915
-
true,
1916
1916
-
true,
1917
1917
-
conditions
1918
1918
-
);
1919
1919
-
if (resolveResult != null) {
1920
1920
-
return resolveResult;
1921
1921
-
}
1922
1922
-
}
1923
1923
-
}
1924
1924
-
}
1925
1925
-
}
1926
1926
-
throwImportNotDefined(name, packageJSONUrl, base);
1927
1927
-
}
1928
1928
-
1929
1929
-
const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/;
1930
1930
-
const isRelativeRegexp = /^\.{0,2}\//;
1931
1931
-
function tryReadFile(filePath) {
1932
1932
-
try {
1933
1933
-
return fs.readFileSync(filePath, `utf8`);
1934
1934
-
} catch (err) {
1935
1935
-
if (err.code === `ENOENT`)
1936
1936
-
return void 0;
1937
1937
-
throw err;
1938
1938
-
}
1939
1939
-
}
1940
1940
-
async function resolvePrivateRequest(specifier, issuer, context, nextResolve) {
1941
1941
-
const resolved = packageImportsResolve({
1942
1942
-
name: specifier,
1943
1943
-
base: pathToFileURL(issuer),
1944
1944
-
conditions: new Set(context.conditions),
1945
1945
-
readFileSyncFn: tryReadFile
1946
1946
-
});
1947
1947
-
if (resolved instanceof URL) {
1948
1948
-
return { url: resolved.href, shortCircuit: true };
1949
1949
-
} else {
1950
1950
-
if (resolved.startsWith(`#`))
1951
1951
-
throw new Error(`Mapping from one private import to another isn't allowed`);
1952
1952
-
return resolve$1(resolved, context, nextResolve);
1953
1953
-
}
1954
1954
-
}
1955
1955
-
async function resolve$1(originalSpecifier, context, nextResolve) {
1956
1956
-
var _a;
1957
1957
-
const { findPnpApi } = moduleExports;
1958
1958
-
if (!findPnpApi || isBuiltinModule(originalSpecifier))
1959
1959
-
return nextResolve(originalSpecifier, context, nextResolve);
1960
1960
-
let specifier = originalSpecifier;
1961
1961
-
const url = tryParseURL(specifier, isRelativeRegexp.test(specifier) ? context.parentURL : void 0);
1962
1962
-
if (url) {
1963
1963
-
if (url.protocol !== `file:`)
1964
1964
-
return nextResolve(originalSpecifier, context, nextResolve);
1965
1965
-
specifier = fileURLToPath(url);
1966
1966
-
}
1967
1967
-
const { parentURL, conditions = [] } = context;
1968
1968
-
const issuer = parentURL ? fileURLToPath(parentURL) : process.cwd();
1969
1969
-
const pnpapi = (_a = findPnpApi(issuer)) != null ? _a : url ? findPnpApi(specifier) : null;
1970
1970
-
if (!pnpapi)
1971
1971
-
return nextResolve(originalSpecifier, context, nextResolve);
1972
1972
-
if (specifier.startsWith(`#`))
1973
1973
-
return resolvePrivateRequest(specifier, issuer, context, nextResolve);
1974
1974
-
const dependencyNameMatch = specifier.match(pathRegExp);
1975
1975
-
let allowLegacyResolve = false;
1976
1976
-
if (dependencyNameMatch) {
1977
1977
-
const [, dependencyName, subPath] = dependencyNameMatch;
1978
1978
-
if (subPath === ``) {
1979
1979
-
const resolved = pnpapi.resolveToUnqualified(`${dependencyName}/package.json`, issuer);
1980
1980
-
if (resolved) {
1981
1981
-
const content = await tryReadFile$1(resolved);
1982
1982
-
if (content) {
1983
1983
-
const pkg = JSON.parse(content);
1984
1984
-
allowLegacyResolve = pkg.exports == null;
1985
1985
-
}
1986
1986
-
}
1987
1987
-
}
1988
1988
-
}
1989
1989
-
const result = pnpapi.resolveRequest(specifier, issuer, {
1990
1990
-
conditions: new Set(conditions),
1991
1991
-
extensions: allowLegacyResolve ? void 0 : []
1992
1992
-
});
1993
1993
-
if (!result)
1994
1994
-
throw new Error(`Resolving '${specifier}' from '${issuer}' failed`);
1995
1995
-
const resultURL = pathToFileURL(result);
1996
1996
-
if (url) {
1997
1997
-
resultURL.search = url.search;
1998
1998
-
resultURL.hash = url.hash;
1999
1999
-
}
2000
2000
-
if (!parentURL)
2001
2001
-
setEntrypointPath(fileURLToPath(resultURL));
2002
2002
-
return {
2003
2003
-
url: resultURL.href,
2004
2004
-
shortCircuit: true
2005
2005
-
};
2006
2006
-
}
2007
2007
-
2008
2008
-
const binding = process.binding(`fs`);
2009
2009
-
const originalfstat = binding.fstat;
2010
2010
-
const ZIP_MASK = 4278190080;
2011
2011
-
const ZIP_MAGIC = 704643072;
2012
2012
-
binding.fstat = function(...args) {
2013
2013
-
const [fd, useBigint, req] = args;
2014
2014
-
if ((fd & ZIP_MASK) === ZIP_MAGIC && useBigint === false && req === void 0) {
2015
2015
-
try {
2016
2016
-
const stats = fs.fstatSync(fd);
2017
2017
-
return new Float64Array([
2018
2018
-
stats.dev,
2019
2019
-
stats.mode,
2020
2020
-
stats.nlink,
2021
2021
-
stats.uid,
2022
2022
-
stats.gid,
2023
2023
-
stats.rdev,
2024
2024
-
stats.blksize,
2025
2025
-
stats.ino,
2026
2026
-
stats.size,
2027
2027
-
stats.blocks
2028
2028
-
]);
2029
2029
-
} catch {
2030
2030
-
}
2031
2031
-
}
2032
2032
-
return originalfstat.apply(this, args);
2033
2033
-
};
2034
2034
-
2035
2035
-
const resolve = resolve$1;
2036
2036
-
const getFormat = HAS_CONSOLIDATED_HOOKS ? void 0 : getFormat$1;
2037
2037
-
const getSource = HAS_CONSOLIDATED_HOOKS ? void 0 : getSource$1;
2038
2038
-
const load = HAS_CONSOLIDATED_HOOKS ? load$1 : void 0;
2039
2039
-
2040
2040
-
export { getFormat, getSource, load, resolve };