@scriptc/compiler 0.3.3 → 0.3.4
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/ambient/scriptc-node-fallback.d.ts +713 -26
- package/dist/backend/cycle-mutability.d.ts +5 -0
- package/dist/backend/cycle-mutability.js +62 -3
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +1 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/library-pack.js +1 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.d.ts +5 -1
- package/dist/backend/llvm/call-lifetimes.js +11 -3
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +31 -1
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +5 -0
- package/dist/backend/llvm/common.js +7 -0
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.js +2 -2
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +40 -1
- package/dist/backend/llvm/dyn.js +178 -27
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +12 -0
- package/dist/backend/llvm/emitter.js +164 -27
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +9 -0
- package/dist/backend/llvm/expr-bytes.js +158 -63
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +3 -1
- package/dist/backend/llvm/expr-calls.js +49 -1
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +16 -5
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/intern-tables.test.d.ts +1 -0
- package/dist/backend/llvm/intern-tables.test.js +77 -0
- package/dist/backend/llvm/intern-tables.test.js.map +1 -0
- package/dist/backend/llvm/lib-datagram.js +10 -0
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +92 -1
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +51 -0
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +16 -0
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-shared.d.ts +5 -0
- package/dist/backend/llvm/lib-shared.js +80 -1
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +87 -0
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +9 -0
- package/dist/backend/llvm/lib-test.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +4 -0
- package/dist/backend/llvm/map-number-lookup.js +22 -0
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +56 -0
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.d.ts +9 -0
- package/dist/backend/llvm/map-read-lifetimes.js +89 -1
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +129 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +5 -0
- package/dist/backend/llvm/publish.js +22 -3
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +5 -2
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +4 -1
- package/dist/backend/llvm/regions.js +12 -3
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/string-reads.js +2 -2
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/string-slices.js +2 -2
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/may-throw.js +4 -0
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +3 -0
- package/dist/backend/native/executable.js +13 -5
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +1 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-codegen-core.d.ts +4 -4
- package/dist/backend/native-codegen-core.js +4 -6
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.test.js +7 -8
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +3 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/publication.js +3 -1
- package/dist/backend/publication.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +1 -0
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +1 -0
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-diagnostics.js +7 -0
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/warm-cache.js +1 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +1 -0
- package/dist/executable/executable-cache.js +1 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +1 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/frontend/experimental-import.d.ts +5 -1
- package/dist/frontend/experimental-import.js +28 -3
- package/dist/frontend/experimental-import.js.map +1 -1
- package/dist/frontend/lowering/assert-instances.d.ts +38 -0
- package/dist/frontend/lowering/assert-instances.js +269 -0
- package/dist/frontend/lowering/assert-instances.js.map +1 -0
- package/dist/frontend/lowering/builtins/compression.d.ts +18 -0
- package/dist/frontend/lowering/builtins/compression.js +175 -2
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.js +7 -2
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +6 -0
- package/dist/frontend/lowering/builtins/crypto.js +111 -1
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.js +23 -0
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.d.ts +3 -0
- package/dist/frontend/lowering/builtins/timers.js +109 -23
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +6 -0
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.js +66 -12
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/intern-tables.d.ts +13 -0
- package/dist/frontend/lowering/intern-tables.js +536 -0
- package/dist/frontend/lowering/intern-tables.js.map +1 -0
- package/dist/frontend/lowering/lower-assert.js +700 -61
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js +11 -2
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +17 -3
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +3 -0
- package/dist/frontend/lowering/lower-classes.js +36 -0
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +77 -52
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.js +12 -0
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +6 -0
- package/dist/frontend/lowering/lower-inspect.js +112 -39
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.d.ts +11 -0
- package/dist/frontend/lowering/lower-mock.js +504 -0
- package/dist/frontend/lowering/lower-mock.js.map +1 -0
- package/dist/frontend/lowering/lower-modules.js +7 -0
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +3 -0
- package/dist/frontend/lowering/lower-server.js +380 -30
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +23 -2
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +10 -6
- package/dist/frontend/lowering/lower-stream.js +786 -27
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.js +86 -8
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +22 -0
- package/dist/frontend/lowering/lowerer.js +72 -7
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.d.ts +6 -0
- package/dist/frontend/lowering/pairs-snapshot.js +49 -0
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +4 -0
- package/dist/frontend/lowering/surfaces.js +61 -15
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/zlib-constants.d.ts +1 -0
- package/dist/frontend/lowering/zlib-constants.js +181 -0
- package/dist/frontend/lowering/zlib-constants.js.map +1 -0
- package/dist/frontend/mock-shapes.d.ts +10 -0
- package/dist/frontend/mock-shapes.js +76 -0
- package/dist/frontend/mock-shapes.js.map +1 -0
- package/dist/frontend/pipeline.js +5 -3
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program.js +6 -1
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.d.ts +4 -0
- package/dist/frontend/resolve.js +14 -0
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/tsc-codes.js +1 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +5 -0
- package/dist/frontend/type-mapper.js +102 -9
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/ir/builtin-effects.js +36 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +147 -8
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/ir.d.ts +20 -1
- package/dist/ir/ir.js +17 -0
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +1 -0
- package/dist/ir/runtime-features.js +29 -2
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/validate.js +195 -5
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/ir-policy.js +1 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/native/cli.js +1 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +1 -3
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/prepare.js +1 -0
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +1 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +869 -48
|
@@ -10,4 +10,10 @@ export declare function pairsSnapshotHelper(lowerer: Lowerer, shapeId: string, l
|
|
|
10
10
|
callArgs?: IrExpr[];
|
|
11
11
|
indexValueOk?: (indexValue: IrType) => boolean;
|
|
12
12
|
lookupValue?: "http.reqHeaderValues" | "http.reqTrailerValues";
|
|
13
|
+
/** A key whose value is the string[] arm, read through `libCall`
|
|
14
|
+
* (set-cookie in `{ ...req.headers }`), when the slot union has one. */
|
|
15
|
+
listKey?: {
|
|
16
|
+
name: string;
|
|
17
|
+
libCall: IrLibFn;
|
|
18
|
+
};
|
|
13
19
|
}): string | null;
|
|
@@ -21,6 +21,9 @@ export function pairsSnapshotHelper(lowerer, shapeId, loc, options) {
|
|
|
21
21
|
}
|
|
22
22
|
else if (stringTag < 0)
|
|
23
23
|
return null;
|
|
24
|
+
const listTag = options.listKey && !options.lookupValue
|
|
25
|
+
? lowerer.armTag(indexValue.unionId, arrayOf(STRING))
|
|
26
|
+
: -1;
|
|
24
27
|
const key = `${options.keyPrefix}.snapshot:${shapeId}`;
|
|
25
28
|
const existing = lowerer.valueHelpers.get(key);
|
|
26
29
|
if (existing)
|
|
@@ -111,6 +114,52 @@ export function pairsSnapshotHelper(lowerer, shapeId, loc, options) {
|
|
|
111
114
|
loc,
|
|
112
115
|
},
|
|
113
116
|
body: [
|
|
117
|
+
...(listTag >= 0
|
|
118
|
+
? [
|
|
119
|
+
{
|
|
120
|
+
kind: "if",
|
|
121
|
+
cond: {
|
|
122
|
+
kind: "strEq",
|
|
123
|
+
negated: false,
|
|
124
|
+
left: pairAt(0),
|
|
125
|
+
right: {
|
|
126
|
+
kind: "strLit",
|
|
127
|
+
value: options.listKey.name,
|
|
128
|
+
type: STRING,
|
|
129
|
+
loc,
|
|
130
|
+
},
|
|
131
|
+
type: BOOL,
|
|
132
|
+
loc,
|
|
133
|
+
},
|
|
134
|
+
then: [
|
|
135
|
+
{
|
|
136
|
+
kind: "recordKeySet",
|
|
137
|
+
obj: varRef("out.0", recordType, loc),
|
|
138
|
+
shapeId,
|
|
139
|
+
key: pairAt(0),
|
|
140
|
+
value: {
|
|
141
|
+
kind: "unionWrap",
|
|
142
|
+
unionId: indexValue.unionId,
|
|
143
|
+
tag: listTag,
|
|
144
|
+
value: {
|
|
145
|
+
kind: "libCall",
|
|
146
|
+
fn: options.listKey.libCall,
|
|
147
|
+
args: [...(options.callArgs ?? []), pairAt(0)],
|
|
148
|
+
type: arrayOf(STRING),
|
|
149
|
+
loc,
|
|
150
|
+
},
|
|
151
|
+
type: indexValue,
|
|
152
|
+
loc,
|
|
153
|
+
},
|
|
154
|
+
loc,
|
|
155
|
+
},
|
|
156
|
+
{ kind: "continue", loc },
|
|
157
|
+
],
|
|
158
|
+
else_: null,
|
|
159
|
+
loc,
|
|
160
|
+
},
|
|
161
|
+
]
|
|
162
|
+
: []),
|
|
114
163
|
{
|
|
115
164
|
kind: "recordKeySet",
|
|
116
165
|
obj: varRef("out.0", recordType, loc),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pairs-snapshot.js","sourceRoot":"","sources":["../../../src/frontend/lowering/pairs-snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,IAAI,EACJ,GAAG,EAKH,MAAM,GAEP,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGnD;;6CAE6C;AAC7C,MAAM,UAAU,mBAAmB,CACjC,OAAgB,EAChB,OAAe,EACf,GAAW,EACX,
|
|
1
|
+
{"version":3,"file":"pairs-snapshot.js","sourceRoot":"","sources":["../../../src/frontend/lowering/pairs-snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,6 +44,10 @@ export declare const HTTP_SERVER_DOCUMENTED_OPTIONS: ReadonlySet<string>;
|
|
|
44
44
|
* maxFreeSockets/timeout/port (+ scheduling, dropped: no free pool
|
|
45
45
|
* exists); the rest fence by name and unknown keys drop like Node. */
|
|
46
46
|
export declare const AGENT_DOCUMENTED_OPTIONS: ReadonlySet<string>;
|
|
47
|
+
/** new https.Agent(options) also takes tls.connect's client-side options,
|
|
48
|
+
* which Node merges into every request made through the agent. None lower
|
|
49
|
+
* yet, so each fences by name. */
|
|
50
|
+
export declare const HTTPS_AGENT_DOCUMENTED_OPTIONS: ReadonlySet<string>;
|
|
47
51
|
/** https.request adds tls.connect's client-side TLS knobs. */
|
|
48
52
|
export declare const HTTPS_CLIENT_DOCUMENTED_OPTIONS: ReadonlySet<string>;
|
|
49
53
|
/** tls.createServer / tls.createSecureContext / https.createServer /
|
|
@@ -2,6 +2,9 @@ import * as ts from "../ts7/adapter.js";
|
|
|
2
2
|
import { UNSUPPORTED } from "../../diagnostics/diagnostic.js";
|
|
3
3
|
import { BOOL, BYTES_U8, CHILD_T, CRYPTOHASH_T, CRYPTOHMAC_T, DIR_T, DYN, F64, FILEHANDLE_T, SPAWNRES_T, STATS_T, STRING, URL_T, VOID, arrayOf, } from "../../ir/ir.js";
|
|
4
4
|
import { isNodeTypesPath, requireSpecOf } from "../program.js";
|
|
5
|
+
import { ZLIB_CONSTANTS } from "./zlib-constants.js";
|
|
6
|
+
/** zlib stream instances: runtime Transform streams (scr_zlib_stream.c). */
|
|
7
|
+
const ZLIB_STREAM = { kind: "object", className: "%Transform" };
|
|
5
8
|
/** Statement-level constructs rejected wholesale, keyed by syntax kind. */
|
|
6
9
|
export const UNSUPPORTED_STMT = {
|
|
7
10
|
// DoStatement / SwitchStatement are supported; handled in lowerStmt.
|
|
@@ -226,6 +229,28 @@ export const AGENT_DOCUMENTED_OPTIONS = new Set([
|
|
|
226
229
|
"noDelay",
|
|
227
230
|
"path",
|
|
228
231
|
]);
|
|
232
|
+
/** new https.Agent(options) also takes tls.connect's client-side options,
|
|
233
|
+
* which Node merges into every request made through the agent. None lower
|
|
234
|
+
* yet, so each fences by name. */
|
|
235
|
+
export const HTTPS_AGENT_DOCUMENTED_OPTIONS = new Set([
|
|
236
|
+
...AGENT_DOCUMENTED_OPTIONS,
|
|
237
|
+
"ca",
|
|
238
|
+
"cert",
|
|
239
|
+
"ciphers",
|
|
240
|
+
"crl",
|
|
241
|
+
"ecdhCurve",
|
|
242
|
+
"key",
|
|
243
|
+
"maxCachedSessions",
|
|
244
|
+
"maxVersion",
|
|
245
|
+
"minVersion",
|
|
246
|
+
"passphrase",
|
|
247
|
+
"pfx",
|
|
248
|
+
"rejectUnauthorized",
|
|
249
|
+
"secureOptions",
|
|
250
|
+
"secureProtocol",
|
|
251
|
+
"servername",
|
|
252
|
+
"sessionIdContext",
|
|
253
|
+
]);
|
|
229
254
|
/** https.request adds tls.connect's client-side TLS knobs. */
|
|
230
255
|
export const HTTPS_CLIENT_DOCUMENTED_OPTIONS = new Set([
|
|
231
256
|
...HTTP_CLIENT_DOCUMENTED_OPTIONS,
|
|
@@ -1340,6 +1365,10 @@ export const BUILTIN_MODULE_FNS = {
|
|
|
1340
1365
|
hkdf: { fn: "crypto.hkdfCb", params: [], result: VOID },
|
|
1341
1366
|
scryptSync: { fn: "crypto.scrypt", params: [BYTES_U8, BYTES_U8, F64, DYN], result: BYTES_U8 },
|
|
1342
1367
|
scrypt: { fn: "crypto.scryptCb", params: [], result: VOID },
|
|
1368
|
+
// Checked-dynamic arguments; the result is a native Cipheriv or
|
|
1369
|
+
// Decipheriv handle (lowerCryptoModuleCall).
|
|
1370
|
+
createCipheriv: { fn: "crypto.cipherNew", params: [BOOL, DYN, DYN, DYN, DYN], result: DYN },
|
|
1371
|
+
createDecipheriv: { fn: "crypto.cipherNew", params: [BOOL, DYN, DYN, DYN, DYN], result: DYN },
|
|
1343
1372
|
},
|
|
1344
1373
|
zlib: {
|
|
1345
1374
|
// The default-options convenience family is special-cased in
|
|
@@ -1361,6 +1390,15 @@ export const BUILTIN_MODULE_FNS = {
|
|
|
1361
1390
|
unzip: { fn: "zlib.unzipCb", params: [], result: VOID },
|
|
1362
1391
|
unzipSync: { fn: "zlib.unzipSync", params: [BYTES_U8], result: BYTES_U8 },
|
|
1363
1392
|
crc32: { fn: "zlib.crc32", params: [], result: F64 },
|
|
1393
|
+
// The stream factories (special-cased in lowerZlibModuleCall): each
|
|
1394
|
+
// answers a runtime Transform stream over the zlib engine.
|
|
1395
|
+
createDeflate: { fn: "zlib.streamNew", params: [], result: ZLIB_STREAM },
|
|
1396
|
+
createInflate: { fn: "zlib.streamNew", params: [], result: ZLIB_STREAM },
|
|
1397
|
+
createGzip: { fn: "zlib.streamNew", params: [], result: ZLIB_STREAM },
|
|
1398
|
+
createGunzip: { fn: "zlib.streamNew", params: [], result: ZLIB_STREAM },
|
|
1399
|
+
createDeflateRaw: { fn: "zlib.streamNew", params: [], result: ZLIB_STREAM },
|
|
1400
|
+
createInflateRaw: { fn: "zlib.streamNew", params: [], result: ZLIB_STREAM },
|
|
1401
|
+
createUnzip: { fn: "zlib.streamNew", params: [], result: ZLIB_STREAM },
|
|
1364
1402
|
},
|
|
1365
1403
|
url: {
|
|
1366
1404
|
fileURLToPath: {
|
|
@@ -1625,6 +1663,10 @@ export const BUILTIN_MODULE_FNS = {
|
|
|
1625
1663
|
params: [F64],
|
|
1626
1664
|
result: VOID,
|
|
1627
1665
|
},
|
|
1666
|
+
// Node's IPv4Reg / IPv6Reg tests over String(input).
|
|
1667
|
+
isIP: { fn: "net.isIP", params: [DYN], result: F64 },
|
|
1668
|
+
isIPv4: { fn: "net.isIPv4", params: [DYN], result: BOOL },
|
|
1669
|
+
isIPv6: { fn: "net.isIPv6", params: [DYN], result: BOOL },
|
|
1628
1670
|
},
|
|
1629
1671
|
http: {},
|
|
1630
1672
|
// node:tls and node:https ride the same spoke (tls.createServer's
|
|
@@ -1698,6 +1740,9 @@ export const BUILTIN_MODULE_CONSTS = {
|
|
|
1698
1740
|
os: { EOL: "\n", devNull: "/dev/null" },
|
|
1699
1741
|
worker_threads: { isMainThread: true, threadId: 0 },
|
|
1700
1742
|
cluster: { isPrimary: true, isMaster: true, isWorker: false },
|
|
1743
|
+
// zlib's module-level copies of its constants (every member outside
|
|
1744
|
+
// BROTLI_*, Node's own loop over zlib.constants).
|
|
1745
|
+
zlib: Object.fromEntries(Object.entries(ZLIB_CONSTANTS).filter(([name]) => !name.startsWith("BROTLI"))),
|
|
1701
1746
|
};
|
|
1702
1747
|
/** ALTERNATE libCall spellings of tabled builtin members: lowerings the
|
|
1703
1748
|
* dispatch special-cases around the table row (Buffer/fd/options forms,
|
|
@@ -2502,21 +2547,17 @@ export function builtinModulesArrayLit(loc) {
|
|
|
2502
2547
|
/** Member-specific hints for RECOGNIZED builtin modules whose member has
|
|
2503
2548
|
* no lowering. The default-options one-shot zlib/deflate-raw/gzip codecs
|
|
2504
2549
|
* lower for strings and Buffers; the remaining surface points at them. */
|
|
2505
|
-
const ZLIB_HINT = "the default-options deflate/inflate, raw, gzip/gunzip, and unzip sync/callback forms
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
|
|
2550
|
+
const ZLIB_HINT = "the default-options deflate/inflate, raw, gzip/gunzip, and unzip sync/callback forms, crc32, " +
|
|
2551
|
+
"and the Deflate/Inflate/Gzip/Gunzip/DeflateRaw/InflateRaw/Unzip streams are the lowered zlib surface";
|
|
2552
|
+
/** Brotli has no codec in the static runtime (zlib is the only vendored
|
|
2553
|
+
* compression library). */
|
|
2554
|
+
const BROTLI_HINT = "Brotli needs a Brotli codec, which the static runtime does not vendor — " + ZLIB_HINT;
|
|
2510
2555
|
const ASSERT_MODULE_HINTS = {
|
|
2511
|
-
deepEqual: ASSERT_LOOSE_DEEP_HINT,
|
|
2512
|
-
notDeepEqual: ASSERT_LOOSE_DEEP_HINT,
|
|
2513
2556
|
ifError: "test explicitly instead: assert.strictEqual(err, null) / " +
|
|
2514
2557
|
"assert.strictEqual(err, undefined)",
|
|
2515
2558
|
rejects: "await the promise inside assert.throws's callback story instead: " +
|
|
2516
2559
|
'try { await p; assert.fail("expected rejection") } catch { ... }',
|
|
2517
2560
|
doesNotReject: "await the promise directly — an unexpected rejection already fails the test",
|
|
2518
|
-
AssertionError: "the class itself has no lowering — catch and test err.name === " +
|
|
2519
|
-
'"AssertionError" or err.code === "ERR_ASSERTION"',
|
|
2520
2561
|
};
|
|
2521
2562
|
export const BUILTIN_MODULE_FENCE_HINTS = {
|
|
2522
2563
|
assert: ASSERT_MODULE_HINTS,
|
|
@@ -2527,7 +2568,6 @@ export const BUILTIN_MODULE_FENCE_HINTS = {
|
|
|
2527
2568
|
ifError: ASSERT_MODULE_HINTS["ifError"],
|
|
2528
2569
|
rejects: ASSERT_MODULE_HINTS["rejects"],
|
|
2529
2570
|
doesNotReject: ASSERT_MODULE_HINTS["doesNotReject"],
|
|
2530
|
-
AssertionError: ASSERT_MODULE_HINTS["AssertionError"],
|
|
2531
2571
|
},
|
|
2532
2572
|
util: {
|
|
2533
2573
|
promisify: "the lowered shapes are const bindings over child_process.execFile and fs.readFile; call the bound function directly",
|
|
@@ -2573,10 +2613,10 @@ export const BUILTIN_MODULE_FENCE_HINTS = {
|
|
|
2573
2613
|
"public and private KeyObjects — neither exists in the static runtime, so no faithful lowering " +
|
|
2574
2614
|
"can be small; the lowered crypto surface is hashing, randomness, secret KeyObjects, and the introspection statics",
|
|
2575
2615
|
])),
|
|
2576
|
-
...Object.fromEntries(["
|
|
2616
|
+
...Object.fromEntries(["getCipherInfo"].map((m) => [
|
|
2577
2617
|
m,
|
|
2578
|
-
"
|
|
2579
|
-
"
|
|
2618
|
+
"cipher metadata has no lowering — createCipheriv and createDecipheriv support " +
|
|
2619
|
+
"aes-128/192/256 in cbc, ctr, and gcm modes and chacha20-poly1305",
|
|
2580
2620
|
])),
|
|
2581
2621
|
setFips: "a compiled binary has no FIPS provider to enable, and Node itself throws on setFips(true) " +
|
|
2582
2622
|
"in a non-FIPS build — getFips() answers 0 here",
|
|
@@ -2584,8 +2624,14 @@ export const BUILTIN_MODULE_FENCE_HINTS = {
|
|
|
2584
2624
|
"randomBytes, and the createHash chain",
|
|
2585
2625
|
},
|
|
2586
2626
|
zlib: {
|
|
2587
|
-
brotliCompressSync:
|
|
2588
|
-
brotliDecompressSync:
|
|
2627
|
+
brotliCompressSync: BROTLI_HINT,
|
|
2628
|
+
brotliDecompressSync: BROTLI_HINT,
|
|
2629
|
+
brotliCompress: BROTLI_HINT,
|
|
2630
|
+
brotliDecompress: BROTLI_HINT,
|
|
2631
|
+
createBrotliCompress: BROTLI_HINT,
|
|
2632
|
+
createBrotliDecompress: BROTLI_HINT,
|
|
2633
|
+
BrotliCompress: BROTLI_HINT,
|
|
2634
|
+
BrotliDecompress: BROTLI_HINT,
|
|
2589
2635
|
},
|
|
2590
2636
|
http2: {
|
|
2591
2637
|
connect: "HTTP/2 client sessions have no lowering — the lowered http2 surface is the SERVER side: " +
|