@nudojs/env 0.2.3 → 0.2.5

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/node.js CHANGED
@@ -1,17 +1,33 @@
1
1
  import {
2
- defineEnv
3
- } from "./chunk-VBTQ36SR.js";
2
+ arrOf,
3
+ brandOf,
4
+ defineEnv,
5
+ envFn,
6
+ nullLit,
7
+ objAbs,
8
+ prim,
9
+ promiseOf,
10
+ tupleOf,
11
+ undef,
12
+ unionOf
13
+ } from "./chunk-BPVYU23Z.js";
4
14
 
5
15
  // src/node.ts
6
- import { T } from "@nudojs/core";
16
+ import {
17
+ litValue,
18
+ strLit,
19
+ boolLit
20
+ } from "@nudojs/core";
7
21
  import nodePath from "path";
8
- function litStr(tv) {
9
- return tv.kind === "literal" && typeof tv.value === "string" ? tv.value : void 0;
22
+ function absStr(a) {
23
+ if (!a) return void 0;
24
+ const v = litValue(a);
25
+ return typeof v === "string" ? v : void 0;
10
26
  }
11
- function allLitStr(args) {
27
+ function allAbsStr(args) {
12
28
  const result = [];
13
29
  for (const a of args) {
14
- const s = litStr(a);
30
+ const s = absStr(a);
15
31
  if (s === void 0) return void 0;
16
32
  result.push(s);
17
33
  }
@@ -19,334 +35,439 @@ function allLitStr(args) {
19
35
  }
20
36
  function defineEnv2() {
21
37
  const esEnv = defineEnv();
22
- const BufferInstance = T.instanceOf("Buffer", {
23
- toString: T.fnSig([T.string], T.string),
24
- toJSON: T.fnSig([], T.object({ type: T.string, data: T.array(T.number) })),
25
- length: T.number,
26
- slice: T.fnSig([T.number, T.number], T.instanceOf("Buffer")),
27
- copy: T.fnSig([T.unknown, T.number, T.number, T.number], T.number),
28
- write: T.fnSig([T.string, T.number, T.number, T.string], T.number),
29
- readUInt8: T.fnSig([T.number], T.number),
30
- readUInt16BE: T.fnSig([T.number], T.number),
31
- readUInt16LE: T.fnSig([T.number], T.number),
32
- readUInt32BE: T.fnSig([T.number], T.number),
33
- readUInt32LE: T.fnSig([T.number], T.number),
34
- readInt8: T.fnSig([T.number], T.number),
35
- readInt16BE: T.fnSig([T.number], T.number),
36
- readInt16LE: T.fnSig([T.number], T.number),
37
- readInt32BE: T.fnSig([T.number], T.number),
38
- readInt32LE: T.fnSig([T.number], T.number),
39
- includes: T.fnSig([T.union(T.string, T.number)], T.boolean),
40
- indexOf: T.fnSig([T.union(T.string, T.number)], T.number),
41
- fill: T.fnSig([T.union(T.string, T.number)], T.instanceOf("Buffer")),
42
- equals: T.fnSig([T.instanceOf("Buffer")], T.boolean),
43
- compare: T.fnSig([T.instanceOf("Buffer")], T.number),
44
- subarray: T.fnSig([T.number, T.number], T.instanceOf("Buffer"))
45
- });
38
+ const BufferInstance = brandOf(
39
+ "Buffer",
40
+ objAbs({
41
+ toString: envFn([prim.str()], prim.str()),
42
+ toJSON: envFn(
43
+ [],
44
+ objAbs({ type: prim.str(), data: arrOf(prim.num()) })
45
+ ),
46
+ length: prim.num(),
47
+ slice: envFn([prim.num(), prim.num()], brandOf("Buffer")),
48
+ copy: envFn(
49
+ [prim.unknown, prim.num(), prim.num(), prim.num()],
50
+ prim.num()
51
+ ),
52
+ write: envFn(
53
+ [prim.str(), prim.num(), prim.num(), prim.str()],
54
+ prim.num()
55
+ ),
56
+ readUInt8: envFn([prim.num()], prim.num()),
57
+ readUInt16BE: envFn([prim.num()], prim.num()),
58
+ readUInt16LE: envFn([prim.num()], prim.num()),
59
+ readUInt32BE: envFn([prim.num()], prim.num()),
60
+ readUInt32LE: envFn([prim.num()], prim.num()),
61
+ readInt8: envFn([prim.num()], prim.num()),
62
+ readInt16BE: envFn([prim.num()], prim.num()),
63
+ readInt16LE: envFn([prim.num()], prim.num()),
64
+ readInt32BE: envFn([prim.num()], prim.num()),
65
+ readInt32LE: envFn([prim.num()], prim.num()),
66
+ includes: envFn([unionOf(prim.str(), prim.num())], prim.bool()),
67
+ indexOf: envFn([unionOf(prim.str(), prim.num())], prim.num()),
68
+ fill: envFn([unionOf(prim.str(), prim.num())], brandOf("Buffer")),
69
+ equals: envFn([brandOf("Buffer")], prim.bool()),
70
+ compare: envFn([brandOf("Buffer")], prim.num()),
71
+ subarray: envFn([prim.num(), prim.num()], brandOf("Buffer"))
72
+ })
73
+ );
74
+ const bufferBrand = BufferInstance;
46
75
  const fsModule = {
47
- readFileSync: T.fnSig(
48
- [T.string, T.union(T.string, T.object({}))],
49
- T.union(T.string, BufferInstance),
50
- T.never,
76
+ // encoding 字面量 → string;否则 string|Buffer(TS 重载近似)
77
+ readFileSync: envFn(
78
+ [prim.str(), unionOf(prim.str(), objAbs({}))],
79
+ unionOf(prim.str(), bufferBrand),
51
80
  (args) => {
52
81
  const enc = args[1];
53
- if (!enc) return T.union(T.string, BufferInstance);
54
- if (enc.kind === "literal" && typeof enc.value === "string") return T.string;
55
- if (enc.kind === "primitive" && enc.type === "string") return T.string;
56
- return T.union(T.string, BufferInstance);
82
+ if (!enc) return unionOf(prim.str(), bufferBrand);
83
+ if (enc.term?.op === "lit" && typeof enc.term.value === "string") {
84
+ return prim.str();
85
+ }
86
+ if (enc.shape.k === "prim" && enc.shape.type === "string" && !enc.term) {
87
+ return prim.str();
88
+ }
89
+ return unionOf(prim.str(), bufferBrand);
57
90
  }
58
91
  ),
59
- writeFileSync: T.fnSig([T.string, T.union(T.string, BufferInstance)], T.undefined),
60
- appendFileSync: T.fnSig([T.string, T.union(T.string, BufferInstance)], T.undefined),
61
- existsSync: T.fnSig([T.string], T.boolean),
62
- mkdirSync: T.fnSig([T.string, T.unknown], T.union(T.string, T.undefined)),
63
- rmdirSync: T.fnSig([T.string], T.undefined),
64
- rmSync: T.fnSig([T.string, T.unknown], T.undefined),
65
- unlinkSync: T.fnSig([T.string], T.undefined),
66
- renameSync: T.fnSig([T.string, T.string], T.undefined),
67
- copyFileSync: T.fnSig([T.string, T.string], T.undefined),
68
- statSync: T.fnSig([T.string], T.object({
69
- isFile: T.fnSig([], T.boolean),
70
- isDirectory: T.fnSig([], T.boolean),
71
- isSymbolicLink: T.fnSig([], T.boolean),
72
- size: T.number,
73
- mtime: T.unknown,
74
- ctime: T.unknown,
75
- atime: T.unknown,
76
- birthtime: T.unknown,
77
- mode: T.number,
78
- uid: T.number,
79
- gid: T.number
80
- })),
81
- readdirSync: T.fnSig([T.string, T.unknown], T.array(T.union(T.string, T.unknown))),
82
- realpathSync: T.fnSig([T.string], T.string),
83
- readlinkSync: T.fnSig([T.string], T.string),
84
- symlinkSync: T.fnSig([T.string, T.string], T.undefined),
85
- chmodSync: T.fnSig([T.string, T.number], T.undefined),
86
- chownSync: T.fnSig([T.string, T.number, T.number], T.undefined),
87
- accessSync: T.fnSig([T.string, T.number], T.undefined),
88
- readFile: T.fnSig([T.string, T.unknown], T.promise(T.union(T.string, BufferInstance))),
89
- writeFile: T.fnSig([T.string, T.union(T.string, BufferInstance)], T.promise(T.undefined)),
90
- mkdir: T.fnSig([T.string, T.unknown], T.promise(T.union(T.string, T.undefined))),
91
- rm: T.fnSig([T.string, T.unknown], T.promise(T.undefined)),
92
- stat: T.fnSig([T.string], T.promise(T.unknown)),
93
- readdir: T.fnSig([T.string, T.unknown], T.promise(T.array(T.unknown))),
94
- access: T.fnSig([T.string, T.number], T.promise(T.undefined))
92
+ writeFileSync: envFn(
93
+ [prim.str(), unionOf(prim.str(), bufferBrand)],
94
+ undef()
95
+ ),
96
+ appendFileSync: envFn(
97
+ [prim.str(), unionOf(prim.str(), bufferBrand)],
98
+ undef()
99
+ ),
100
+ existsSync: envFn([prim.str()], prim.bool()),
101
+ mkdirSync: envFn([prim.str(), prim.unknown], unionOf(prim.str(), undef())),
102
+ rmdirSync: envFn([prim.str()], undef()),
103
+ rmSync: envFn([prim.str(), prim.unknown], undef()),
104
+ unlinkSync: envFn([prim.str()], undef()),
105
+ renameSync: envFn([prim.str(), prim.str()], undef()),
106
+ copyFileSync: envFn([prim.str(), prim.str()], undef()),
107
+ statSync: envFn(
108
+ [prim.str()],
109
+ objAbs({
110
+ isFile: envFn([], prim.bool()),
111
+ isDirectory: envFn([], prim.bool()),
112
+ isSymbolicLink: envFn([], prim.bool()),
113
+ size: prim.num(),
114
+ mtime: prim.unknown,
115
+ ctime: prim.unknown,
116
+ atime: prim.unknown,
117
+ birthtime: prim.unknown,
118
+ mode: prim.num(),
119
+ uid: prim.num(),
120
+ gid: prim.num()
121
+ })
122
+ ),
123
+ readdirSync: envFn(
124
+ [prim.str(), prim.unknown],
125
+ arrOf(unionOf(prim.str(), prim.unknown))
126
+ ),
127
+ realpathSync: envFn([prim.str()], prim.str()),
128
+ readlinkSync: envFn([prim.str()], prim.str()),
129
+ symlinkSync: envFn([prim.str(), prim.str()], undef()),
130
+ chmodSync: envFn([prim.str(), prim.num()], undef()),
131
+ chownSync: envFn([prim.str(), prim.num(), prim.num()], undef()),
132
+ accessSync: envFn([prim.str(), prim.num()], undef()),
133
+ readFile: envFn(
134
+ [prim.str(), prim.unknown],
135
+ promiseOf(unionOf(prim.str(), bufferBrand))
136
+ ),
137
+ writeFile: envFn(
138
+ [prim.str(), unionOf(prim.str(), bufferBrand)],
139
+ promiseOf(undef())
140
+ ),
141
+ mkdir: envFn(
142
+ [prim.str(), prim.unknown],
143
+ promiseOf(unionOf(prim.str(), undef()))
144
+ ),
145
+ rm: envFn([prim.str(), prim.unknown], promiseOf(undef())),
146
+ stat: envFn([prim.str()], promiseOf(prim.unknown)),
147
+ readdir: envFn(
148
+ [prim.str(), prim.unknown],
149
+ promiseOf(arrOf(prim.unknown))
150
+ ),
151
+ access: envFn([prim.str(), prim.num()], promiseOf(undef()))
152
+ };
153
+ const strImpl1Abs = (fn) => (args) => {
154
+ const a = absStr(args[0]);
155
+ return a !== void 0 ? strLit(fn(a)) : void 0;
156
+ };
157
+ const pathJoinAbs = (args) => {
158
+ const strs = allAbsStr(args);
159
+ return strs ? strLit(nodePath.join(...strs)) : void 0;
160
+ };
161
+ const pathResolveAbs = (args) => {
162
+ const strs = allAbsStr(args);
163
+ return strs ? strLit(nodePath.resolve(...strs)) : void 0;
95
164
  };
96
- const strImpl1 = (fn) => (args) => {
97
- const a = litStr(args[0]);
98
- return a !== void 0 ? T.literal(fn(a)) : void 0;
165
+ const pathBasenameAbs = (args) => {
166
+ const p = absStr(args[0]);
167
+ if (p === void 0) return void 0;
168
+ const ext = args[1] !== void 0 ? absStr(args[1]) : void 0;
169
+ return strLit(ext !== void 0 ? nodePath.basename(p, ext) : nodePath.basename(p));
170
+ };
171
+ const pathRelativeAbs = (args) => {
172
+ const from = absStr(args[0]);
173
+ const to = absStr(args[1]);
174
+ return from !== void 0 && to !== void 0 ? strLit(nodePath.relative(from, to)) : void 0;
175
+ };
176
+ const pathIsAbsoluteAbs = (args) => {
177
+ const p = absStr(args[0]);
178
+ return p !== void 0 ? boolLit(nodePath.isAbsolute(p)) : void 0;
99
179
  };
100
180
  const pathModule = {
101
- join: T.fnSig([T.string, T.string], T.string, T.never, (args) => {
102
- const strs = allLitStr(args);
103
- return strs ? T.literal(nodePath.join(...strs)) : void 0;
104
- }),
105
- resolve: T.fnSig([T.string], T.string, T.never, (args) => {
106
- const strs = allLitStr(args);
107
- return strs ? T.literal(nodePath.resolve(...strs)) : void 0;
108
- }),
109
- dirname: T.fnSig([T.string], T.string, T.never, strImpl1(nodePath.dirname)),
110
- basename: T.fnSig([T.string, T.string], T.string, T.never, (args) => {
111
- const p = litStr(args[0]);
112
- if (p === void 0) return void 0;
113
- const ext = args[1] !== void 0 ? litStr(args[1]) : void 0;
114
- return T.literal(ext !== void 0 ? nodePath.basename(p, ext) : nodePath.basename(p));
115
- }),
116
- extname: T.fnSig([T.string], T.string, T.never, strImpl1(nodePath.extname)),
117
- relative: T.fnSig([T.string, T.string], T.string, T.never, (args) => {
118
- const from = litStr(args[0]);
119
- const to = litStr(args[1]);
120
- return from !== void 0 && to !== void 0 ? T.literal(nodePath.relative(from, to)) : void 0;
121
- }),
122
- normalize: T.fnSig([T.string], T.string, T.never, strImpl1(nodePath.normalize)),
123
- isAbsolute: T.fnSig([T.string], T.boolean, T.never, (args) => {
124
- const p = litStr(args[0]);
125
- return p !== void 0 ? T.literal(nodePath.isAbsolute(p)) : void 0;
126
- }),
127
- parse: T.fnSig([T.string], T.object({
128
- root: T.string,
129
- dir: T.string,
130
- base: T.string,
131
- ext: T.string,
132
- name: T.string
133
- }), T.never, (args) => {
134
- const p = litStr(args[0]);
135
- if (p === void 0) return void 0;
136
- const parsed = nodePath.parse(p);
137
- return T.object({
138
- root: T.literal(parsed.root),
139
- dir: T.literal(parsed.dir),
140
- base: T.literal(parsed.base),
141
- ext: T.literal(parsed.ext),
142
- name: T.literal(parsed.name)
143
- });
144
- }),
145
- format: T.fnSig([T.object({})], T.string),
146
- sep: T.string,
147
- delimiter: T.string,
148
- posix: T.unknown,
149
- win32: T.unknown
181
+ join: envFn([prim.str(), prim.str()], prim.str(), pathJoinAbs),
182
+ resolve: envFn([prim.str()], prim.str(), pathResolveAbs),
183
+ dirname: envFn([prim.str()], prim.str(), strImpl1Abs(nodePath.dirname)),
184
+ basename: envFn([prim.str(), prim.str()], prim.str(), pathBasenameAbs),
185
+ extname: envFn([prim.str()], prim.str(), strImpl1Abs(nodePath.extname)),
186
+ relative: envFn([prim.str(), prim.str()], prim.str(), pathRelativeAbs),
187
+ normalize: envFn([prim.str()], prim.str(), strImpl1Abs(nodePath.normalize)),
188
+ isAbsolute: envFn([prim.str()], prim.bool(), pathIsAbsoluteAbs),
189
+ parse: envFn(
190
+ [prim.str()],
191
+ objAbs({
192
+ root: prim.str(),
193
+ dir: prim.str(),
194
+ base: prim.str(),
195
+ ext: prim.str(),
196
+ name: prim.str()
197
+ }),
198
+ (args) => {
199
+ const p = absStr(args[0]);
200
+ if (p === void 0) return void 0;
201
+ const parsed = nodePath.parse(p);
202
+ return objAbs({
203
+ root: strLit(parsed.root),
204
+ dir: strLit(parsed.dir),
205
+ base: strLit(parsed.base),
206
+ ext: strLit(parsed.ext),
207
+ name: strLit(parsed.name)
208
+ });
209
+ }
210
+ ),
211
+ format: envFn([objAbs({})], prim.str()),
212
+ sep: prim.str(),
213
+ delimiter: prim.str(),
214
+ posix: prim.unknown,
215
+ win32: prim.unknown
150
216
  };
151
217
  const osModule = {
152
- platform: T.fnSig([], T.string),
153
- arch: T.fnSig([], T.string),
154
- type: T.fnSig([], T.string),
155
- release: T.fnSig([], T.string),
156
- hostname: T.fnSig([], T.string),
157
- homedir: T.fnSig([], T.string),
158
- tmpdir: T.fnSig([], T.string),
159
- cpus: T.fnSig([], T.array(T.object({
160
- model: T.string,
161
- speed: T.number
162
- }))),
163
- totalmem: T.fnSig([], T.number),
164
- freemem: T.fnSig([], T.number),
165
- uptime: T.fnSig([], T.number),
166
- loadavg: T.fnSig([], T.tuple([T.number, T.number, T.number])),
167
- networkInterfaces: T.fnSig([], T.unknown),
168
- userInfo: T.fnSig([], T.object({
169
- username: T.string,
170
- uid: T.number,
171
- gid: T.number,
172
- shell: T.union(T.string, T.null),
173
- homedir: T.string
174
- })),
175
- EOL: T.string
218
+ platform: envFn([], prim.str()),
219
+ arch: envFn([], prim.str()),
220
+ type: envFn([], prim.str()),
221
+ release: envFn([], prim.str()),
222
+ hostname: envFn([], prim.str()),
223
+ homedir: envFn([], prim.str()),
224
+ tmpdir: envFn([], prim.str()),
225
+ cpus: envFn(
226
+ [],
227
+ arrOf(objAbs({ model: prim.str(), speed: prim.num() }))
228
+ ),
229
+ totalmem: envFn([], prim.num()),
230
+ freemem: envFn([], prim.num()),
231
+ uptime: envFn([], prim.num()),
232
+ loadavg: envFn([], tupleOf([prim.num(), prim.num(), prim.num()])),
233
+ networkInterfaces: envFn([], prim.unknown),
234
+ userInfo: envFn(
235
+ [],
236
+ objAbs({
237
+ username: prim.str(),
238
+ uid: prim.num(),
239
+ gid: prim.num(),
240
+ shell: unionOf(prim.str(), nullLit()),
241
+ homedir: prim.str()
242
+ })
243
+ ),
244
+ EOL: prim.str()
176
245
  };
177
- const nodeUrlObj = T.object({
178
- href: T.string,
179
- origin: T.string,
180
- protocol: T.string,
181
- username: T.string,
182
- password: T.string,
183
- host: T.string,
184
- hostname: T.string,
185
- port: T.string,
186
- pathname: T.string,
187
- search: T.string,
188
- hash: T.string,
189
- toString: T.fnSig([], T.string),
190
- toJSON: T.fnSig([], T.string)
246
+ const nodeUrlObj = objAbs({
247
+ href: prim.str(),
248
+ origin: prim.str(),
249
+ protocol: prim.str(),
250
+ username: prim.str(),
251
+ password: prim.str(),
252
+ host: prim.str(),
253
+ hostname: prim.str(),
254
+ port: prim.str(),
255
+ pathname: prim.str(),
256
+ search: prim.str(),
257
+ hash: prim.str(),
258
+ toString: envFn([], prim.str()),
259
+ toJSON: envFn([], prim.str())
191
260
  });
192
261
  const urlModule = {
193
- URL: T.fnSig([T.string, T.string], nodeUrlObj, T.instanceOf("TypeError"), (args) => {
194
- const href = litStr(args[0]);
195
- const base = args[1] !== void 0 ? litStr(args[1]) : void 0;
196
- if (href === void 0) return void 0;
197
- try {
198
- const url = base !== void 0 ? new URL(href, base) : new URL(href);
199
- return T.object({
200
- href: T.literal(url.href),
201
- origin: T.literal(url.origin),
202
- protocol: T.literal(url.protocol),
203
- username: T.literal(url.username),
204
- password: T.literal(url.password),
205
- host: T.literal(url.host),
206
- hostname: T.literal(url.hostname),
207
- port: T.literal(url.port),
208
- pathname: T.literal(url.pathname),
209
- search: T.literal(url.search),
210
- hash: T.literal(url.hash),
211
- toString: T.fnSig([], T.string, T.never, () => T.literal(url.href)),
212
- toJSON: T.fnSig([], T.string, T.never, () => T.literal(url.href))
213
- });
214
- } catch {
215
- return void 0;
262
+ URL: envFn(
263
+ [prim.str(), prim.str()],
264
+ nodeUrlObj,
265
+ (args) => {
266
+ const href = absStr(args[0]);
267
+ const base = args[1] !== void 0 ? absStr(args[1]) : void 0;
268
+ if (href === void 0) return void 0;
269
+ try {
270
+ const url = base !== void 0 ? new URL(href, base) : new URL(href);
271
+ return objAbs({
272
+ href: strLit(url.href),
273
+ origin: strLit(url.origin),
274
+ protocol: strLit(url.protocol),
275
+ username: strLit(url.username),
276
+ password: strLit(url.password),
277
+ host: strLit(url.host),
278
+ hostname: strLit(url.hostname),
279
+ port: strLit(url.port),
280
+ pathname: strLit(url.pathname),
281
+ search: strLit(url.search),
282
+ hash: strLit(url.hash),
283
+ toString: envFn([], prim.str(), () => strLit(url.href)),
284
+ toJSON: envFn([], prim.str(), () => strLit(url.href))
285
+ });
286
+ } catch {
287
+ return void 0;
288
+ }
216
289
  }
217
- }),
218
- URLSearchParams: T.fnSig([T.unknown], T.object({
219
- get: T.fnSig([T.string], T.union(T.string, T.null)),
220
- has: T.fnSig([T.string], T.boolean),
221
- set: T.fnSig([T.string, T.string], T.undefined),
222
- append: T.fnSig([T.string, T.string], T.undefined),
223
- delete: T.fnSig([T.string], T.undefined),
224
- toString: T.fnSig([], T.string)
225
- })),
226
- fileURLToPath: T.fnSig([T.string], T.string, T.never, strImpl1((s) => {
290
+ ),
291
+ URLSearchParams: envFn(
292
+ [prim.unknown],
293
+ objAbs({
294
+ get: envFn([prim.str()], unionOf(prim.str(), nullLit())),
295
+ has: envFn([prim.str()], prim.bool()),
296
+ set: envFn([prim.str(), prim.str()], undef()),
297
+ append: envFn([prim.str(), prim.str()], undef()),
298
+ delete: envFn([prim.str()], undef()),
299
+ toString: envFn([], prim.str())
300
+ })
301
+ ),
302
+ fileURLToPath: envFn([prim.str()], prim.str(), strImpl1Abs((s) => {
227
303
  try {
228
304
  return new URL(s).pathname;
229
305
  } catch {
230
306
  return s;
231
307
  }
232
308
  })),
233
- pathToFileURL: T.fnSig([T.string], T.object({ href: T.string }), T.never, (args) => {
234
- const p = litStr(args[0]);
235
- if (p === void 0) return void 0;
236
- try {
237
- const href = `file://${p.startsWith("/") ? "" : "/"}${p}`;
238
- return T.object({ href: T.literal(href) });
239
- } catch {
240
- return void 0;
309
+ pathToFileURL: envFn(
310
+ [prim.str()],
311
+ objAbs({ href: prim.str() }),
312
+ (args) => {
313
+ const p = absStr(args[0]);
314
+ if (p === void 0) return void 0;
315
+ try {
316
+ const href = `file://${p.startsWith("/") ? "" : "/"}${p}`;
317
+ return objAbs({ href: strLit(href) });
318
+ } catch {
319
+ return void 0;
320
+ }
241
321
  }
242
- }),
243
- format: T.fnSig([T.unknown], T.string)
322
+ ),
323
+ format: envFn([prim.unknown], prim.str())
244
324
  };
245
325
  const cryptoModule = {
246
- randomBytes: T.fnSig([T.number], BufferInstance),
247
- randomUUID: T.fnSig([], T.string),
248
- randomInt: T.fnSig([T.number, T.number], T.number),
249
- createHash: T.fnSig([T.string], T.object({
250
- update: T.fnSig([T.union(T.string, BufferInstance)], T.unknown),
251
- digest: T.fnSig([T.string], T.union(T.string, BufferInstance))
252
- })),
253
- createHmac: T.fnSig([T.string, T.union(T.string, BufferInstance)], T.object({
254
- update: T.fnSig([T.union(T.string, BufferInstance)], T.unknown),
255
- digest: T.fnSig([T.string], T.union(T.string, BufferInstance))
256
- })),
257
- createCipheriv: T.fnSig([T.string, T.unknown, T.unknown], T.unknown),
258
- createDecipheriv: T.fnSig([T.string, T.unknown, T.unknown], T.unknown),
259
- pbkdf2Sync: T.fnSig([T.string, T.string, T.number, T.number, T.string], BufferInstance),
260
- scryptSync: T.fnSig([T.string, T.string, T.number], BufferInstance),
261
- timingSafeEqual: T.fnSig([BufferInstance, BufferInstance], T.boolean)
326
+ randomBytes: envFn([prim.num()], bufferBrand),
327
+ randomUUID: envFn([], prim.str()),
328
+ randomInt: envFn([prim.num(), prim.num()], prim.num()),
329
+ createHash: envFn(
330
+ [prim.str()],
331
+ objAbs({
332
+ update: envFn([unionOf(prim.str(), bufferBrand)], prim.unknown),
333
+ digest: envFn(
334
+ [prim.str()],
335
+ unionOf(prim.str(), bufferBrand)
336
+ )
337
+ })
338
+ ),
339
+ createHmac: envFn(
340
+ [prim.str(), unionOf(prim.str(), bufferBrand)],
341
+ objAbs({
342
+ update: envFn([unionOf(prim.str(), bufferBrand)], prim.unknown),
343
+ digest: envFn(
344
+ [prim.str()],
345
+ unionOf(prim.str(), bufferBrand)
346
+ )
347
+ })
348
+ ),
349
+ createCipheriv: envFn(
350
+ [prim.str(), prim.unknown, prim.unknown],
351
+ prim.unknown
352
+ ),
353
+ createDecipheriv: envFn(
354
+ [prim.str(), prim.unknown, prim.unknown],
355
+ prim.unknown
356
+ ),
357
+ pbkdf2Sync: envFn(
358
+ [prim.str(), prim.str(), prim.num(), prim.num(), prim.str()],
359
+ bufferBrand
360
+ ),
361
+ scryptSync: envFn([prim.str(), prim.str(), prim.num()], bufferBrand),
362
+ timingSafeEqual: envFn([bufferBrand, bufferBrand], prim.bool())
262
363
  };
263
364
  const childProcessModule = {
264
- execSync: T.fnSig([T.string, T.unknown], T.union(T.string, BufferInstance)),
265
- execFileSync: T.fnSig([T.string, T.array(T.string), T.unknown], T.union(T.string, BufferInstance)),
266
- spawnSync: T.fnSig([T.string, T.array(T.string), T.unknown], T.object({
267
- status: T.union(T.number, T.null),
268
- stdout: T.union(T.string, BufferInstance),
269
- stderr: T.union(T.string, BufferInstance),
270
- error: T.union(T.instanceOf("Error"), T.undefined)
271
- })),
272
- exec: T.fnSig([T.string, T.unknown], T.unknown),
273
- spawn: T.fnSig([T.string, T.array(T.string), T.unknown], T.unknown),
274
- fork: T.fnSig([T.string, T.array(T.string), T.unknown], T.unknown)
365
+ execSync: envFn(
366
+ [prim.str(), prim.unknown],
367
+ unionOf(prim.str(), bufferBrand)
368
+ ),
369
+ execFileSync: envFn(
370
+ [prim.str(), arrOf(prim.str()), prim.unknown],
371
+ unionOf(prim.str(), bufferBrand)
372
+ ),
373
+ spawnSync: envFn(
374
+ [prim.str(), arrOf(prim.str()), prim.unknown],
375
+ objAbs({
376
+ status: unionOf(prim.num(), nullLit()),
377
+ stdout: unionOf(prim.str(), bufferBrand),
378
+ stderr: unionOf(prim.str(), bufferBrand),
379
+ error: unionOf(brandOf("Error"), undef())
380
+ })
381
+ ),
382
+ exec: envFn([prim.str(), prim.unknown], prim.unknown),
383
+ spawn: envFn([prim.str(), arrOf(prim.str()), prim.unknown], prim.unknown),
384
+ fork: envFn([prim.str(), arrOf(prim.str()), prim.unknown], prim.unknown)
275
385
  };
276
386
  const utilModule = {
277
- promisify: T.fnSig([T.unknown], T.unknown),
278
- inspect: T.fnSig([T.unknown, T.unknown], T.string),
279
- format: T.fnSig([T.string], T.string),
280
- types: T.object({
281
- isDate: T.fnSig([T.unknown], T.boolean),
282
- isRegExp: T.fnSig([T.unknown], T.boolean),
283
- isPromise: T.fnSig([T.unknown], T.boolean),
284
- isArrayBuffer: T.fnSig([T.unknown], T.boolean),
285
- isTypedArray: T.fnSig([T.unknown], T.boolean)
387
+ promisify: envFn([prim.unknown], prim.unknown),
388
+ inspect: envFn([prim.unknown, prim.unknown], prim.str()),
389
+ format: envFn([prim.str()], prim.str()),
390
+ types: objAbs({
391
+ isDate: envFn([prim.unknown], prim.bool()),
392
+ isRegExp: envFn([prim.unknown], prim.bool()),
393
+ isPromise: envFn([prim.unknown], prim.bool()),
394
+ isArrayBuffer: envFn([prim.unknown], prim.bool()),
395
+ isTypedArray: envFn([prim.unknown], prim.bool())
286
396
  }),
287
- TextEncoder: T.fnSig([], T.object({
288
- encode: T.fnSig([T.string], T.unknown)
289
- })),
290
- TextDecoder: T.fnSig([T.string], T.object({
291
- decode: T.fnSig([T.unknown], T.string)
292
- }))
397
+ TextEncoder: envFn(
398
+ [],
399
+ objAbs({ encode: envFn([prim.str()], prim.unknown) })
400
+ ),
401
+ TextDecoder: envFn(
402
+ [prim.str()],
403
+ objAbs({ decode: envFn([prim.unknown], prim.str()) })
404
+ )
293
405
  };
294
406
  const nodeGlobals = {
295
- process: T.object({
296
- env: T.object({}),
297
- argv: T.array(T.string),
298
- argv0: T.string,
299
- execArgv: T.array(T.string),
300
- execPath: T.string,
301
- cwd: T.fnSig([], T.string),
302
- chdir: T.fnSig([T.string], T.undefined),
303
- exit: T.fnSig([T.number], T.never),
304
- pid: T.number,
305
- ppid: T.number,
306
- platform: T.string,
307
- arch: T.string,
308
- version: T.string,
309
- versions: T.object({}),
310
- stdout: T.object({ write: T.fnSig([T.string], T.boolean) }),
311
- stderr: T.object({ write: T.fnSig([T.string], T.boolean) }),
312
- stdin: T.object({ on: T.fnSig([T.string, T.unknown], T.unknown) }),
313
- hrtime: T.object({
314
- bigint: T.fnSig([], T.bigint)
407
+ process: objAbs({
408
+ env: objAbs({}),
409
+ argv: arrOf(prim.str()),
410
+ argv0: prim.str(),
411
+ execArgv: arrOf(prim.str()),
412
+ execPath: prim.str(),
413
+ cwd: envFn([], prim.str()),
414
+ chdir: envFn([prim.str()], undef()),
415
+ exit: envFn([prim.num()], prim.never),
416
+ pid: prim.num(),
417
+ ppid: prim.num(),
418
+ platform: prim.str(),
419
+ arch: prim.str(),
420
+ version: prim.str(),
421
+ versions: objAbs({}),
422
+ stdout: objAbs({ write: envFn([prim.str()], prim.bool()) }),
423
+ stderr: objAbs({ write: envFn([prim.str()], prim.bool()) }),
424
+ stdin: objAbs({
425
+ on: envFn([prim.str(), prim.unknown], prim.unknown)
315
426
  }),
316
- memoryUsage: T.fnSig([], T.object({
317
- rss: T.number,
318
- heapTotal: T.number,
319
- heapUsed: T.number,
320
- external: T.number,
321
- arrayBuffers: T.number
322
- })),
323
- cpuUsage: T.fnSig([], T.object({ user: T.number, system: T.number })),
324
- uptime: T.fnSig([], T.number),
325
- nextTick: T.fnSig([T.unknown], T.undefined),
326
- on: T.fnSig([T.string, T.unknown], T.unknown),
327
- once: T.fnSig([T.string, T.unknown], T.unknown),
328
- off: T.fnSig([T.string, T.unknown], T.unknown),
329
- emit: T.fnSig([T.string], T.boolean)
427
+ hrtime: objAbs({ bigint: envFn([], brandOf("bigint")) }),
428
+ memoryUsage: envFn(
429
+ [],
430
+ objAbs({
431
+ rss: prim.num(),
432
+ heapTotal: prim.num(),
433
+ heapUsed: prim.num(),
434
+ external: prim.num(),
435
+ arrayBuffers: prim.num()
436
+ })
437
+ ),
438
+ cpuUsage: envFn(
439
+ [],
440
+ objAbs({ user: prim.num(), system: prim.num() })
441
+ ),
442
+ uptime: envFn([], prim.num()),
443
+ nextTick: envFn([prim.unknown], undef()),
444
+ on: envFn([prim.str(), prim.unknown], prim.unknown),
445
+ once: envFn([prim.str(), prim.unknown], prim.unknown),
446
+ off: envFn([prim.str(), prim.unknown], prim.unknown),
447
+ emit: envFn([prim.str()], prim.bool())
330
448
  }),
331
- Buffer: T.object({
332
- from: T.fnSig([T.union(T.string, T.array(T.number))], BufferInstance),
333
- alloc: T.fnSig([T.number], BufferInstance),
334
- allocUnsafe: T.fnSig([T.number], BufferInstance),
335
- isBuffer: T.fnSig([T.unknown], T.boolean),
336
- byteLength: T.fnSig([T.union(T.string, BufferInstance)], T.number),
337
- concat: T.fnSig([T.array(BufferInstance)], BufferInstance),
338
- compare: T.fnSig([BufferInstance, BufferInstance], T.number)
449
+ Buffer: objAbs({
450
+ from: envFn([unionOf(prim.str(), arrOf(prim.num()))], bufferBrand),
451
+ alloc: envFn([prim.num()], bufferBrand),
452
+ allocUnsafe: envFn([prim.num()], bufferBrand),
453
+ isBuffer: envFn([prim.unknown], prim.bool()),
454
+ byteLength: envFn(
455
+ [unionOf(prim.str(), bufferBrand)],
456
+ prim.num()
457
+ ),
458
+ concat: envFn([arrOf(bufferBrand)], bufferBrand),
459
+ compare: envFn([bufferBrand, bufferBrand], prim.num())
339
460
  }),
340
- __dirname: T.string,
341
- __filename: T.string,
342
- setTimeout: T.fnSig([T.unknown, T.number], T.unknown),
343
- setInterval: T.fnSig([T.unknown, T.number], T.unknown),
344
- setImmediate: T.fnSig([T.unknown], T.unknown),
345
- clearTimeout: T.fnSig([T.unknown], T.undefined),
346
- clearInterval: T.fnSig([T.unknown], T.undefined),
347
- clearImmediate: T.fnSig([T.unknown], T.undefined),
348
- queueMicrotask: T.fnSig([T.unknown], T.undefined),
349
- structuredClone: T.fnSig([T.unknown], T.unknown)
461
+ __dirname: prim.str(),
462
+ __filename: prim.str(),
463
+ setTimeout: envFn([prim.unknown, prim.num()], prim.unknown),
464
+ setInterval: envFn([prim.unknown, prim.num()], prim.unknown),
465
+ setImmediate: envFn([prim.unknown], prim.unknown),
466
+ clearTimeout: envFn([prim.unknown], undef()),
467
+ clearInterval: envFn([prim.unknown], undef()),
468
+ clearImmediate: envFn([prim.unknown], undef()),
469
+ queueMicrotask: envFn([prim.unknown], undef()),
470
+ structuredClone: envFn([prim.unknown], prim.unknown)
350
471
  };
351
472
  const modules = {
352
473
  fs: fsModule,