@nudojs/env 0.3.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-MW5NHORB.js → chunk-6RZUMVN5.js} +14 -0
- package/dist/es.js +1 -1
- package/dist/node.js +229 -19
- package/dist/web.js +1 -1
- package/package.json +2 -2
|
@@ -99,6 +99,19 @@ function envFn(paramTypes, returnType, apply, opts) {
|
|
|
99
99
|
if (opts?.conf && opts.conf !== "exact") a.conf = opts.conf;
|
|
100
100
|
return a;
|
|
101
101
|
}
|
|
102
|
+
function envFnVariadic(restType, returnType, opts) {
|
|
103
|
+
const required = opts?.required ?? [];
|
|
104
|
+
const restName = opts?.restName ?? "...rest";
|
|
105
|
+
const paramTypes = [...required, restType];
|
|
106
|
+
const params = [
|
|
107
|
+
...required.map((_, i) => `x${i}`),
|
|
108
|
+
restName
|
|
109
|
+
];
|
|
110
|
+
return envFn(paramTypes, returnType, opts?.apply, {
|
|
111
|
+
params,
|
|
112
|
+
...opts?.name ? { name: opts.name } : {}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
102
115
|
function slotsOf(entries) {
|
|
103
116
|
const out = {};
|
|
104
117
|
for (const [k, v] of Object.entries(entries)) {
|
|
@@ -396,6 +409,7 @@ export {
|
|
|
396
409
|
promiseOf,
|
|
397
410
|
brandOf,
|
|
398
411
|
envFn,
|
|
412
|
+
envFnVariadic,
|
|
399
413
|
objAbs,
|
|
400
414
|
prim,
|
|
401
415
|
defineEnv
|
package/dist/es.js
CHANGED
package/dist/node.js
CHANGED
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
brandOf,
|
|
4
4
|
defineEnv,
|
|
5
5
|
envFn,
|
|
6
|
+
envFnVariadic,
|
|
6
7
|
nullLit,
|
|
7
8
|
objAbs,
|
|
8
9
|
prim,
|
|
@@ -10,7 +11,7 @@ import {
|
|
|
10
11
|
tupleOf,
|
|
11
12
|
undef,
|
|
12
13
|
unionOf
|
|
13
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-6RZUMVN5.js";
|
|
14
15
|
|
|
15
16
|
// src/node.ts
|
|
16
17
|
import {
|
|
@@ -130,6 +131,106 @@ function defineEnv2() {
|
|
|
130
131
|
chmodSync: envFn([prim.str(), prim.num()], undef()),
|
|
131
132
|
chownSync: envFn([prim.str(), prim.num(), prim.num()], undef()),
|
|
132
133
|
accessSync: envFn([prim.str(), prim.num()], undef()),
|
|
134
|
+
// Callback-style async on `fs` / `node:fs` (Node actual API).
|
|
135
|
+
// Promise APIs live only under fs.promises / node:fs/promises.
|
|
136
|
+
readFile: envFn(
|
|
137
|
+
[prim.str(), prim.unknown, prim.unknown],
|
|
138
|
+
undef(),
|
|
139
|
+
void 0,
|
|
140
|
+
{ params: ["path", "options?", "callback"] }
|
|
141
|
+
),
|
|
142
|
+
writeFile: envFn(
|
|
143
|
+
[prim.str(), unionOf(prim.str(), bufferBrand), prim.unknown],
|
|
144
|
+
undef(),
|
|
145
|
+
void 0,
|
|
146
|
+
{ params: ["path", "data", "callback"] }
|
|
147
|
+
),
|
|
148
|
+
mkdir: envFn(
|
|
149
|
+
[prim.str(), prim.unknown, prim.unknown],
|
|
150
|
+
undef(),
|
|
151
|
+
void 0,
|
|
152
|
+
{ params: ["path", "options?", "callback"] }
|
|
153
|
+
),
|
|
154
|
+
rm: envFn(
|
|
155
|
+
[prim.str(), prim.unknown, prim.unknown],
|
|
156
|
+
undef(),
|
|
157
|
+
void 0,
|
|
158
|
+
{ params: ["path", "options?", "callback"] }
|
|
159
|
+
),
|
|
160
|
+
stat: envFn(
|
|
161
|
+
[prim.str(), prim.unknown, prim.unknown],
|
|
162
|
+
undef(),
|
|
163
|
+
void 0,
|
|
164
|
+
{ params: ["path", "options?", "callback"] }
|
|
165
|
+
),
|
|
166
|
+
readdir: envFn(
|
|
167
|
+
[prim.str(), prim.unknown, prim.unknown],
|
|
168
|
+
undef(),
|
|
169
|
+
void 0,
|
|
170
|
+
{ params: ["path", "options?", "callback"] }
|
|
171
|
+
),
|
|
172
|
+
access: envFn(
|
|
173
|
+
[prim.str(), prim.unknown, prim.unknown],
|
|
174
|
+
undef(),
|
|
175
|
+
void 0,
|
|
176
|
+
{ params: ["path", "mode?", "callback"] }
|
|
177
|
+
),
|
|
178
|
+
appendFile: envFn(
|
|
179
|
+
[prim.str(), unionOf(prim.str(), bufferBrand), prim.unknown],
|
|
180
|
+
undef(),
|
|
181
|
+
void 0,
|
|
182
|
+
{ params: ["path", "data", "callback"] }
|
|
183
|
+
),
|
|
184
|
+
unlink: envFn(
|
|
185
|
+
[prim.str(), prim.unknown, prim.unknown],
|
|
186
|
+
undef(),
|
|
187
|
+
void 0,
|
|
188
|
+
{ params: ["path", "options?", "callback"] }
|
|
189
|
+
),
|
|
190
|
+
rename: envFn(
|
|
191
|
+
[prim.str(), prim.str(), prim.unknown],
|
|
192
|
+
undef(),
|
|
193
|
+
void 0,
|
|
194
|
+
{ params: ["oldPath", "newPath", "callback"] }
|
|
195
|
+
),
|
|
196
|
+
copyFile: envFn(
|
|
197
|
+
[prim.str(), prim.str(), prim.unknown],
|
|
198
|
+
undef(),
|
|
199
|
+
void 0,
|
|
200
|
+
{ params: ["src", "dest", "callback"] }
|
|
201
|
+
),
|
|
202
|
+
realpath: envFn(
|
|
203
|
+
[prim.str(), prim.unknown, prim.unknown],
|
|
204
|
+
undef(),
|
|
205
|
+
void 0,
|
|
206
|
+
{ params: ["path", "options?", "callback"] }
|
|
207
|
+
),
|
|
208
|
+
readlink: envFn(
|
|
209
|
+
[prim.str(), prim.unknown, prim.unknown],
|
|
210
|
+
undef(),
|
|
211
|
+
void 0,
|
|
212
|
+
{ params: ["path", "options?", "callback"] }
|
|
213
|
+
),
|
|
214
|
+
symlink: envFn(
|
|
215
|
+
[prim.str(), prim.str(), prim.unknown, prim.unknown],
|
|
216
|
+
undef(),
|
|
217
|
+
void 0,
|
|
218
|
+
{ params: ["target", "path", "type?", "callback"] }
|
|
219
|
+
),
|
|
220
|
+
chmod: envFn(
|
|
221
|
+
[prim.str(), prim.num(), prim.unknown],
|
|
222
|
+
undef(),
|
|
223
|
+
void 0,
|
|
224
|
+
{ params: ["path", "mode", "callback"] }
|
|
225
|
+
),
|
|
226
|
+
open: envFn(
|
|
227
|
+
[prim.str(), prim.unknown, prim.unknown],
|
|
228
|
+
undef(),
|
|
229
|
+
void 0,
|
|
230
|
+
{ params: ["path", "flags?", "callback"] }
|
|
231
|
+
)
|
|
232
|
+
};
|
|
233
|
+
const fsPromisesModule = {
|
|
133
234
|
readFile: envFn(
|
|
134
235
|
[prim.str(), prim.unknown],
|
|
135
236
|
promiseOf(unionOf(prim.str(), bufferBrand))
|
|
@@ -148,7 +249,19 @@ function defineEnv2() {
|
|
|
148
249
|
[prim.str(), prim.unknown],
|
|
149
250
|
promiseOf(arrOf(prim.unknown))
|
|
150
251
|
),
|
|
151
|
-
access: envFn([prim.str(), prim.num()], promiseOf(undef()))
|
|
252
|
+
access: envFn([prim.str(), prim.num()], promiseOf(undef())),
|
|
253
|
+
appendFile: envFn(
|
|
254
|
+
[prim.str(), unionOf(prim.str(), bufferBrand)],
|
|
255
|
+
promiseOf(undef())
|
|
256
|
+
),
|
|
257
|
+
unlink: envFn([prim.str()], promiseOf(undef())),
|
|
258
|
+
rename: envFn([prim.str(), prim.str()], promiseOf(undef())),
|
|
259
|
+
copyFile: envFn([prim.str(), prim.str()], promiseOf(undef())),
|
|
260
|
+
realpath: envFn([prim.str()], promiseOf(prim.str())),
|
|
261
|
+
readlink: envFn([prim.str()], promiseOf(prim.str())),
|
|
262
|
+
symlink: envFn([prim.str(), prim.str()], promiseOf(undef())),
|
|
263
|
+
chmod: envFn([prim.str(), prim.num()], promiseOf(undef())),
|
|
264
|
+
open: envFn([prim.str(), prim.str()], promiseOf(prim.unknown))
|
|
152
265
|
};
|
|
153
266
|
const strImpl1Abs = (fn) => (args) => {
|
|
154
267
|
const a = absStr(args[0]);
|
|
@@ -178,10 +291,21 @@ function defineEnv2() {
|
|
|
178
291
|
return p !== void 0 ? boolLit(nodePath.isAbsolute(p)) : void 0;
|
|
179
292
|
};
|
|
180
293
|
const pathModule = {
|
|
181
|
-
|
|
182
|
-
|
|
294
|
+
// Node variadic: declare min required arity + rest label (not n fixed slots).
|
|
295
|
+
join: envFnVariadic(prim.str(), prim.str(), {
|
|
296
|
+
apply: pathJoinAbs,
|
|
297
|
+
required: [prim.str()],
|
|
298
|
+
restName: "...paths"
|
|
299
|
+
}),
|
|
300
|
+
resolve: envFnVariadic(prim.str(), prim.str(), {
|
|
301
|
+
apply: pathResolveAbs,
|
|
302
|
+
restName: "...paths"
|
|
303
|
+
}),
|
|
183
304
|
dirname: envFn([prim.str()], prim.str(), strImpl1Abs(nodePath.dirname)),
|
|
184
|
-
|
|
305
|
+
// ext is optional in Node — required arity 1; label+type render `ext?: string`.
|
|
306
|
+
basename: envFn([prim.str(), prim.str()], prim.str(), pathBasenameAbs, {
|
|
307
|
+
params: ["path", "ext?"]
|
|
308
|
+
}),
|
|
185
309
|
extname: envFn([prim.str()], prim.str(), strImpl1Abs(nodePath.extname)),
|
|
186
310
|
relative: envFn([prim.str(), prim.str()], prim.str(), pathRelativeAbs),
|
|
187
311
|
normalize: envFn([prim.str()], prim.str(), strImpl1Abs(nodePath.normalize)),
|
|
@@ -259,6 +383,7 @@ function defineEnv2() {
|
|
|
259
383
|
toJSON: envFn([], prim.str())
|
|
260
384
|
});
|
|
261
385
|
const urlModule = {
|
|
386
|
+
// base is optional in Node — required arity 1; label+type render `base?: string`.
|
|
262
387
|
URL: envFn(
|
|
263
388
|
[prim.str(), prim.str()],
|
|
264
389
|
nodeUrlObj,
|
|
@@ -286,7 +411,8 @@ function defineEnv2() {
|
|
|
286
411
|
} catch {
|
|
287
412
|
return void 0;
|
|
288
413
|
}
|
|
289
|
-
}
|
|
414
|
+
},
|
|
415
|
+
{ params: ["href", "base?"] }
|
|
290
416
|
),
|
|
291
417
|
URLSearchParams: envFn(
|
|
292
418
|
[prim.unknown],
|
|
@@ -384,15 +510,27 @@ function defineEnv2() {
|
|
|
384
510
|
fork: envFn([prim.str(), arrOf(prim.str()), prim.unknown], prim.unknown)
|
|
385
511
|
};
|
|
386
512
|
const utilModule = {
|
|
387
|
-
|
|
513
|
+
// Signature-level: promisify preserves fn-ness only as unknown (no generic).
|
|
514
|
+
promisify: envFn([prim.unknown], prim.unknown, void 0, { name: "util.promisify" }),
|
|
388
515
|
inspect: envFn([prim.unknown, prim.unknown], prim.str()),
|
|
389
|
-
format:
|
|
516
|
+
format: envFnVariadic(prim.unknown, prim.str(), {
|
|
517
|
+
// util.format() with zero args is valid in Node.
|
|
518
|
+
restName: "...args",
|
|
519
|
+
name: "util.format"
|
|
520
|
+
}),
|
|
521
|
+
callbackify: envFn([prim.unknown], prim.unknown),
|
|
522
|
+
deprecate: envFn([prim.unknown, prim.str()], prim.unknown),
|
|
523
|
+
inherits: envFn([prim.unknown, prim.unknown], undef()),
|
|
524
|
+
isDeepStrictEqual: envFn([prim.unknown, prim.unknown], prim.bool()),
|
|
390
525
|
types: objAbs({
|
|
391
526
|
isDate: envFn([prim.unknown], prim.bool()),
|
|
392
527
|
isRegExp: envFn([prim.unknown], prim.bool()),
|
|
393
528
|
isPromise: envFn([prim.unknown], prim.bool()),
|
|
394
529
|
isArrayBuffer: envFn([prim.unknown], prim.bool()),
|
|
395
|
-
isTypedArray: envFn([prim.unknown], prim.bool())
|
|
530
|
+
isTypedArray: envFn([prim.unknown], prim.bool()),
|
|
531
|
+
isNativeError: envFn([prim.unknown], prim.bool()),
|
|
532
|
+
isAsyncFunction: envFn([prim.unknown], prim.bool()),
|
|
533
|
+
isGeneratorFunction: envFn([prim.unknown], prim.bool())
|
|
396
534
|
}),
|
|
397
535
|
TextEncoder: envFn(
|
|
398
536
|
[],
|
|
@@ -403,6 +541,79 @@ function defineEnv2() {
|
|
|
403
541
|
objAbs({ decode: envFn([prim.unknown], prim.str()) })
|
|
404
542
|
)
|
|
405
543
|
};
|
|
544
|
+
const eventEmitterShape = objAbs({
|
|
545
|
+
on: envFn([prim.str(), prim.unknown], prim.unknown),
|
|
546
|
+
once: envFn([prim.str(), prim.unknown], prim.unknown),
|
|
547
|
+
off: envFn([prim.str(), prim.unknown], prim.unknown),
|
|
548
|
+
emit: envFn([prim.str()], prim.bool()),
|
|
549
|
+
addListener: envFn([prim.str(), prim.unknown], prim.unknown),
|
|
550
|
+
removeListener: envFn([prim.str(), prim.unknown], prim.unknown),
|
|
551
|
+
removeAllListeners: envFn([prim.str()], prim.unknown),
|
|
552
|
+
listeners: envFn([prim.str()], arrOf(prim.unknown)),
|
|
553
|
+
listenerCount: envFn([prim.str()], prim.num()),
|
|
554
|
+
eventNames: envFn([], arrOf(prim.str()))
|
|
555
|
+
});
|
|
556
|
+
const eventEmitterInstance = brandOf("EventEmitter", eventEmitterShape);
|
|
557
|
+
const EventEmitterCtor = envFn([prim.unknown], eventEmitterInstance, void 0, {
|
|
558
|
+
params: ["options?"]
|
|
559
|
+
});
|
|
560
|
+
const eventsModule = {
|
|
561
|
+
EventEmitter: EventEmitterCtor,
|
|
562
|
+
once: envFn(
|
|
563
|
+
[prim.unknown, prim.str()],
|
|
564
|
+
promiseOf(arrOf(prim.unknown))
|
|
565
|
+
),
|
|
566
|
+
on: envFn([prim.unknown, prim.str()], prim.unknown),
|
|
567
|
+
listenerCount: envFn([prim.unknown, prim.str()], prim.num())
|
|
568
|
+
};
|
|
569
|
+
const streamIoMethods = {
|
|
570
|
+
on: envFn([prim.str(), prim.unknown], prim.unknown),
|
|
571
|
+
once: envFn([prim.str(), prim.unknown], prim.unknown),
|
|
572
|
+
off: envFn([prim.str(), prim.unknown], prim.unknown),
|
|
573
|
+
emit: envFn([prim.str()], prim.bool()),
|
|
574
|
+
pipe: envFn([prim.unknown], prim.unknown),
|
|
575
|
+
destroy: envFn([prim.unknown], undef()),
|
|
576
|
+
read: envFn([prim.num()], prim.unknown),
|
|
577
|
+
write: envFn([unionOf(prim.str(), bufferBrand)], prim.bool()),
|
|
578
|
+
end: envFn([prim.unknown], undef()),
|
|
579
|
+
pause: envFn([], prim.unknown),
|
|
580
|
+
resume: envFn([], prim.unknown),
|
|
581
|
+
setEncoding: envFn([prim.str()], prim.unknown)
|
|
582
|
+
};
|
|
583
|
+
const streamCtor = (brandName) => envFn([prim.unknown], brandOf(brandName, objAbs(streamIoMethods)), void 0, {
|
|
584
|
+
params: ["options?"]
|
|
585
|
+
});
|
|
586
|
+
const streamModule = {
|
|
587
|
+
Readable: streamCtor("Readable"),
|
|
588
|
+
Writable: streamCtor("Writable"),
|
|
589
|
+
Duplex: streamCtor("Duplex"),
|
|
590
|
+
Transform: streamCtor("Transform"),
|
|
591
|
+
pipeline: envFnVariadic(prim.unknown, promiseOf(undef()), {
|
|
592
|
+
restName: "...streams"
|
|
593
|
+
}),
|
|
594
|
+
finished: envFn([prim.unknown], promiseOf(undef()))
|
|
595
|
+
};
|
|
596
|
+
const parsedQueryString = brandOf(
|
|
597
|
+
"ParsedQueryString",
|
|
598
|
+
objAbs({})
|
|
599
|
+
);
|
|
600
|
+
const querystringModule = {
|
|
601
|
+
// sep/eq/options optional — required arity 1; labels+types render `sep?: string` etc.
|
|
602
|
+
parse: envFn(
|
|
603
|
+
[prim.str(), prim.str(), prim.str(), prim.unknown],
|
|
604
|
+
parsedQueryString,
|
|
605
|
+
void 0,
|
|
606
|
+
{ params: ["str", "sep?", "eq?", "options?"] }
|
|
607
|
+
),
|
|
608
|
+
stringify: envFn(
|
|
609
|
+
[prim.unknown, prim.str(), prim.str(), prim.unknown],
|
|
610
|
+
prim.str(),
|
|
611
|
+
void 0,
|
|
612
|
+
{ params: ["obj", "sep?", "eq?", "options?"] }
|
|
613
|
+
),
|
|
614
|
+
escape: envFn([prim.str()], prim.str()),
|
|
615
|
+
unescape: envFn([prim.str()], prim.str())
|
|
616
|
+
};
|
|
406
617
|
const nodeGlobals = {
|
|
407
618
|
process: objAbs({
|
|
408
619
|
env: objAbs({}),
|
|
@@ -472,15 +683,8 @@ function defineEnv2() {
|
|
|
472
683
|
const modules = {
|
|
473
684
|
fs: fsModule,
|
|
474
685
|
"node:fs": fsModule,
|
|
475
|
-
"
|
|
476
|
-
|
|
477
|
-
writeFile: fsModule.writeFile,
|
|
478
|
-
mkdir: fsModule.mkdir,
|
|
479
|
-
rm: fsModule.rm,
|
|
480
|
-
stat: fsModule.stat,
|
|
481
|
-
readdir: fsModule.readdir,
|
|
482
|
-
access: fsModule.access
|
|
483
|
-
},
|
|
686
|
+
"fs/promises": fsPromisesModule,
|
|
687
|
+
"node:fs/promises": fsPromisesModule,
|
|
484
688
|
path: pathModule,
|
|
485
689
|
"node:path": pathModule,
|
|
486
690
|
os: osModule,
|
|
@@ -492,7 +696,13 @@ function defineEnv2() {
|
|
|
492
696
|
child_process: childProcessModule,
|
|
493
697
|
"node:child_process": childProcessModule,
|
|
494
698
|
util: utilModule,
|
|
495
|
-
"node:util": utilModule
|
|
699
|
+
"node:util": utilModule,
|
|
700
|
+
events: eventsModule,
|
|
701
|
+
"node:events": eventsModule,
|
|
702
|
+
stream: streamModule,
|
|
703
|
+
"node:stream": streamModule,
|
|
704
|
+
querystring: querystringModule,
|
|
705
|
+
"node:querystring": querystringModule
|
|
496
706
|
};
|
|
497
707
|
return {
|
|
498
708
|
globals: { ...esEnv.globals, ...nodeGlobals },
|
package/dist/web.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nudojs/env",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"engines": {
|
|
5
5
|
"node": ">=20"
|
|
6
6
|
},
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"registry": "https://registry.npmjs.org"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@nudojs/core": "2.
|
|
38
|
+
"@nudojs/core": "2.1.0"
|
|
39
39
|
},
|
|
40
40
|
"scripts": {
|
|
41
41
|
"build": "tsup src/es.ts src/web.ts src/node.ts --format esm --dts"
|