@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
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/* node:assert's Assert class (Node 24.22, lib/assert.js).
|
|
2
|
+
*
|
|
3
|
+
* `new Assert(options?)` merges `{ strict: true, skipPrototype: false }`
|
|
4
|
+
* with the options. A strict instance has own equal, deepEqual, notEqual and
|
|
5
|
+
* notDeepEqual properties that are the strict methods. The prototype methods
|
|
6
|
+
* read the instance options: `diff` reaches every AssertionError the method
|
|
7
|
+
* throws, and `skipPrototype` reaches deepStrictEqual and
|
|
8
|
+
* notDeepStrictEqual.
|
|
9
|
+
*
|
|
10
|
+
* Static instances lower here: a `const` binding initialized by
|
|
11
|
+
* `new Assert()` with literal options or none, whose every reference is a
|
|
12
|
+
* method call on it. The declaration emits nothing, and each method call
|
|
13
|
+
* lowers like the module function, with the options attached at compile
|
|
14
|
+
* time. Other uses of the class are refused with SC2020. */
|
|
15
|
+
import * as ts from "../ts7/adapter.js";
|
|
16
|
+
import { transformExpr } from "../../ir/traverse.js";
|
|
17
|
+
import { stripTypeCasts } from "./builtins/arguments.js";
|
|
18
|
+
/** The methods on an Assert instance: Assert.prototype's, plus a strict
|
|
19
|
+
* instance's own aliases, which share the names. */
|
|
20
|
+
const ASSERT_INSTANCE_METHODS = new Set([
|
|
21
|
+
"deepEqual",
|
|
22
|
+
"deepStrictEqual",
|
|
23
|
+
"doesNotMatch",
|
|
24
|
+
"doesNotReject",
|
|
25
|
+
"doesNotThrow",
|
|
26
|
+
"equal",
|
|
27
|
+
"fail",
|
|
28
|
+
"ifError",
|
|
29
|
+
"match",
|
|
30
|
+
"notDeepEqual",
|
|
31
|
+
"notDeepStrictEqual",
|
|
32
|
+
"notEqual",
|
|
33
|
+
"notStrictEqual",
|
|
34
|
+
"ok",
|
|
35
|
+
"partialDeepStrictEqual",
|
|
36
|
+
"rejects",
|
|
37
|
+
"strictEqual",
|
|
38
|
+
"throws",
|
|
39
|
+
]);
|
|
40
|
+
const STRICT_ALIASES = new Map([
|
|
41
|
+
["equal", "strictEqual"],
|
|
42
|
+
["notEqual", "notStrictEqual"],
|
|
43
|
+
["deepEqual", "deepStrictEqual"],
|
|
44
|
+
["notDeepEqual", "notDeepStrictEqual"],
|
|
45
|
+
]);
|
|
46
|
+
/** Assertion calls whose runtime function can construct an AssertionError.
|
|
47
|
+
* An instance call marks them with its options (`assertOptions`), which the
|
|
48
|
+
* native emitter hands to the runtime right before the call. */
|
|
49
|
+
export const ASSERT_FAILURE_LIB_FNS = new Set([
|
|
50
|
+
"assert.ok",
|
|
51
|
+
"assert.eqF64",
|
|
52
|
+
"assert.eqBigInt",
|
|
53
|
+
"assert.eqStr",
|
|
54
|
+
"assert.eqBool",
|
|
55
|
+
"assert.eqSym",
|
|
56
|
+
"assert.eqDyn",
|
|
57
|
+
"assert.expectsErrDyn",
|
|
58
|
+
"assert.looseDeepDyn",
|
|
59
|
+
"assert.partialDeepDyn",
|
|
60
|
+
"assert.looseResult",
|
|
61
|
+
"assert.deepResult",
|
|
62
|
+
"assert.looseDeepResult",
|
|
63
|
+
"assert.partialDeepResult",
|
|
64
|
+
"assert.match",
|
|
65
|
+
"assert.throwsNone",
|
|
66
|
+
"assert.throwsMismatch",
|
|
67
|
+
"assert.throwsRegex",
|
|
68
|
+
"assert.shapeEnd",
|
|
69
|
+
"assert.unwantedRejection",
|
|
70
|
+
"assert.unwantedError",
|
|
71
|
+
"assert.ifErrorErr",
|
|
72
|
+
"assert.ifErrorF64",
|
|
73
|
+
"assert.ifErrorStr",
|
|
74
|
+
"assert.ifErrorBool",
|
|
75
|
+
"assert.ifErrorDyn",
|
|
76
|
+
"assert.refEqFn",
|
|
77
|
+
"assert.refEqBytes",
|
|
78
|
+
"assert.bytesDeepEq",
|
|
79
|
+
]);
|
|
80
|
+
/** Whether `expr` is `new Assert(...)` for node:assert's Assert class, by
|
|
81
|
+
* import provenance: `import { Assert } from "node:assert"`, or
|
|
82
|
+
* `assert.Assert` through a module binding. */
|
|
83
|
+
export function isAssertClassNew(lowerer, expr) {
|
|
84
|
+
if (!ts.isNewExpression(expr))
|
|
85
|
+
return false;
|
|
86
|
+
const callee = stripTypeCasts(expr.expression);
|
|
87
|
+
const builtin = ts.isIdentifier(callee)
|
|
88
|
+
? lowerer.builtinImportOf(callee)
|
|
89
|
+
: ts.isPropertyAccessExpression(callee)
|
|
90
|
+
? lowerer.builtinMemberOf(callee)
|
|
91
|
+
: null;
|
|
92
|
+
return (builtin !== null &&
|
|
93
|
+
(builtin.module === "assert" || builtin.module === "assert/strict") &&
|
|
94
|
+
builtin.member === "Assert");
|
|
95
|
+
}
|
|
96
|
+
/** The options of `new Assert(<literal options>)`, or null when an option is
|
|
97
|
+
* not a literal or the argument list has another shape. */
|
|
98
|
+
export function literalAssertOptions(expr) {
|
|
99
|
+
const args = expr.arguments ?? [];
|
|
100
|
+
const options = { strict: true, diff: "simple", skipPrototype: false };
|
|
101
|
+
if (args.length === 0)
|
|
102
|
+
return options;
|
|
103
|
+
if (args.length > 1)
|
|
104
|
+
return null;
|
|
105
|
+
const arg = stripTypeCasts(args[0]);
|
|
106
|
+
if (ts.isIdentifier(arg) && arg.text === "undefined")
|
|
107
|
+
return options;
|
|
108
|
+
if (!ts.isObjectLiteralExpression(arg))
|
|
109
|
+
return null;
|
|
110
|
+
for (const prop of arg.properties) {
|
|
111
|
+
if (!ts.isPropertyAssignment(prop))
|
|
112
|
+
return null;
|
|
113
|
+
const name = ts.isIdentifier(prop.name) || ts.isStringLiteral(prop.name) ? prop.name.text : null;
|
|
114
|
+
const value = stripTypeCasts(prop.initializer);
|
|
115
|
+
const flag = value.kind === ts.SyntaxKind.TrueKeyword
|
|
116
|
+
? true
|
|
117
|
+
: value.kind === ts.SyntaxKind.FalseKeyword
|
|
118
|
+
? false
|
|
119
|
+
: null;
|
|
120
|
+
if (name === "strict" && flag !== null)
|
|
121
|
+
options.strict = flag;
|
|
122
|
+
else if (name === "skipPrototype" && flag !== null)
|
|
123
|
+
options.skipPrototype = flag;
|
|
124
|
+
else if (name === "diff" &&
|
|
125
|
+
ts.isStringLiteral(value) &&
|
|
126
|
+
(value.text === "simple" || value.text === "full"))
|
|
127
|
+
options.diff = value.text;
|
|
128
|
+
else
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
return options;
|
|
132
|
+
}
|
|
133
|
+
/** The static instance a `const` declaration binds, or null. Every
|
|
134
|
+
* reference to the binding must be a method call on it, so the instance is
|
|
135
|
+
* never needed as a value. Cached on the lowerer per declaration. */
|
|
136
|
+
export function staticAssertInstanceDecl(lowerer, nameNode, init) {
|
|
137
|
+
if (!ts.isIdentifier(nameNode) || init === undefined)
|
|
138
|
+
return null;
|
|
139
|
+
const decl = nameNode.parent;
|
|
140
|
+
if (!ts.isVariableDeclaration(decl) || decl.name !== nameNode)
|
|
141
|
+
return null;
|
|
142
|
+
const cached = lowerer.assertInstances.get(decl);
|
|
143
|
+
if (cached !== undefined)
|
|
144
|
+
return cached;
|
|
145
|
+
let result = null;
|
|
146
|
+
const value = stripTypeCasts(init);
|
|
147
|
+
if (ts.isNewExpression(value) &&
|
|
148
|
+
isAssertClassNew(lowerer, value) &&
|
|
149
|
+
ts.isVariableDeclarationList(decl.parent) &&
|
|
150
|
+
(decl.parent.flags & ts.NodeFlags.Const) !== 0) {
|
|
151
|
+
const options = literalAssertOptions(value);
|
|
152
|
+
if (options !== null && onlyMethodCallReferences(lowerer, nameNode))
|
|
153
|
+
result = options;
|
|
154
|
+
}
|
|
155
|
+
lowerer.assertInstances.set(decl, result);
|
|
156
|
+
return result;
|
|
157
|
+
}
|
|
158
|
+
/** The static instance an expression names, or null. */
|
|
159
|
+
export function assertInstanceOf(lowerer, expr) {
|
|
160
|
+
if (!ts.isIdentifier(expr))
|
|
161
|
+
return null;
|
|
162
|
+
const symbol = lowerer.checker.getSymbolAtLocation(expr);
|
|
163
|
+
const decl = symbol ? lowerer.checker.declarationsOf(symbol)[0] : undefined;
|
|
164
|
+
if (decl === undefined || !ts.isVariableDeclaration(decl))
|
|
165
|
+
return null;
|
|
166
|
+
return staticAssertInstanceDecl(lowerer, decl.name, decl.initializer);
|
|
167
|
+
}
|
|
168
|
+
function onlyMethodCallReferences(lowerer, name) {
|
|
169
|
+
const symbol = lowerer.checker.getSymbolAtLocation(name);
|
|
170
|
+
if (symbol === undefined)
|
|
171
|
+
return false;
|
|
172
|
+
let ok = true;
|
|
173
|
+
const visit = (node) => {
|
|
174
|
+
if (!ok)
|
|
175
|
+
return;
|
|
176
|
+
if (ts.isIdentifier(node) && node !== name && node.text === name.text) {
|
|
177
|
+
if (lowerer.checker.getSymbolAtLocation(node) === symbol && !isMethodCallReceiver(node))
|
|
178
|
+
ok = false;
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
ts.forEachChild(node, visit);
|
|
182
|
+
};
|
|
183
|
+
visit(name.getSourceFile());
|
|
184
|
+
return ok;
|
|
185
|
+
}
|
|
186
|
+
function isMethodCallReceiver(node) {
|
|
187
|
+
const access = node.parent;
|
|
188
|
+
if (!ts.isPropertyAccessExpression(access) ||
|
|
189
|
+
access.expression !== node ||
|
|
190
|
+
access.questionDotToken !== undefined ||
|
|
191
|
+
!ASSERT_INSTANCE_METHODS.has(access.name.text))
|
|
192
|
+
return false;
|
|
193
|
+
const call = access.parent;
|
|
194
|
+
return ts.isCallExpression(call) && call.expression === access;
|
|
195
|
+
}
|
|
196
|
+
/** The methods whose AssertionError carries the instance's `diff`: Node
|
|
197
|
+
* 24.22 passes `this?.[kOptions]?.diff` from these. ok, match,
|
|
198
|
+
* doesNotMatch and the throws, rejects, doesNotThrow and doesNotReject
|
|
199
|
+
* expectations construct their errors without it (`diff` is "simple"). */
|
|
200
|
+
const DIFF_METHODS = new Set([
|
|
201
|
+
"fail",
|
|
202
|
+
"equal",
|
|
203
|
+
"notEqual",
|
|
204
|
+
"deepEqual",
|
|
205
|
+
"notDeepEqual",
|
|
206
|
+
"strictEqual",
|
|
207
|
+
"notStrictEqual",
|
|
208
|
+
"deepStrictEqual",
|
|
209
|
+
"notDeepStrictEqual",
|
|
210
|
+
"partialDeepStrictEqual",
|
|
211
|
+
"ifError",
|
|
212
|
+
]);
|
|
213
|
+
/** `instance.method(...)` on a static instance: the module function's
|
|
214
|
+
* lowering, with the strict aliases and the instance options that reach
|
|
215
|
+
* the method. Null when the receiver is not a static instance. */
|
|
216
|
+
export function lowerAssertInstanceCall(lowerer, expr, access, loc) {
|
|
217
|
+
const options = assertInstanceOf(lowerer, access.expression);
|
|
218
|
+
if (options === null)
|
|
219
|
+
return null;
|
|
220
|
+
const module = options.strict ? "assert/strict" : "assert";
|
|
221
|
+
const member = access.name.text;
|
|
222
|
+
// A strict instance's own aliases are the strict methods.
|
|
223
|
+
const method = options.strict && STRICT_ALIASES.has(member) ? STRICT_ALIASES.get(member) : member;
|
|
224
|
+
// Node passes skipPrototype to isDeepStrictEqual from deepStrictEqual and
|
|
225
|
+
// notDeepStrictEqual only.
|
|
226
|
+
const applied = {
|
|
227
|
+
strict: options.strict,
|
|
228
|
+
diff: DIFF_METHODS.has(method) ? options.diff : "simple",
|
|
229
|
+
skipPrototype: options.skipPrototype && (method === "deepStrictEqual" || method === "notDeepStrictEqual"),
|
|
230
|
+
};
|
|
231
|
+
const previous = lowerer.assertCallOptions;
|
|
232
|
+
lowerer.assertCallOptions = applied;
|
|
233
|
+
try {
|
|
234
|
+
const lowered = lowerer.lowerAssertModuleCall(expr, { module, member }, loc);
|
|
235
|
+
if (lowered === null)
|
|
236
|
+
return null;
|
|
237
|
+
return markAssertOptionsExpr(lowered, applied);
|
|
238
|
+
}
|
|
239
|
+
finally {
|
|
240
|
+
lowerer.assertCallOptions = previous;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/** The runtime options an instance attaches to its failure calls, or null
|
|
244
|
+
* for the defaults. */
|
|
245
|
+
export function assertOptionsMark(options) {
|
|
246
|
+
if (options === null)
|
|
247
|
+
return null;
|
|
248
|
+
const mark = {};
|
|
249
|
+
if (options.diff === "full")
|
|
250
|
+
mark.diff = "full";
|
|
251
|
+
if (options.skipPrototype)
|
|
252
|
+
mark.skipPrototype = true;
|
|
253
|
+
return mark.diff === undefined && mark.skipPrototype === undefined ? null : mark;
|
|
254
|
+
}
|
|
255
|
+
const markLibCall = (mark) => ({
|
|
256
|
+
expr(node) {
|
|
257
|
+
if (node.kind === "libCall" && ASSERT_FAILURE_LIB_FNS.has(node.fn))
|
|
258
|
+
return { ...node, assertOptions: mark };
|
|
259
|
+
return node;
|
|
260
|
+
},
|
|
261
|
+
stmt: (node) => node,
|
|
262
|
+
});
|
|
263
|
+
/** Attaches the instance options to every assertion failure call in a
|
|
264
|
+
* lowered call site. */
|
|
265
|
+
export function markAssertOptionsExpr(expr, options) {
|
|
266
|
+
const mark = assertOptionsMark(options);
|
|
267
|
+
return mark === null ? expr : transformExpr(expr, markLibCall(mark));
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=assert-instances.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert-instances.js","sourceRoot":"","sources":["../../../src/frontend/lowering/assert-instances.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,24 @@
|
|
|
1
1
|
import * as ts from "../../ts7/adapter.js";
|
|
2
2
|
import { type Lowerer } from "../lowerer.js";
|
|
3
3
|
import { type IrExpr, type SrcLoc } from "../../../ir/ir.js";
|
|
4
|
+
/** `zlib.createGzip(options?)` and `new zlib.Gzip(options?)`: the runtime
|
|
5
|
+
* Transform stream (scr_zlib_stream.c). The options value crosses as a dyn
|
|
6
|
+
* value and is validated at runtime with Node's ladder, so literal and
|
|
7
|
+
* computed options take the same path. */
|
|
8
|
+
export declare function lowerZlibStreamNew(lowerer: Lowerer, args: readonly ts.Expression[], mode: number, what: string, site: ts.Node, loc: SrcLoc): IrExpr;
|
|
9
|
+
/** The node_zlib_mode of a zlib stream CLASS symbol (`new zlib.Gzip()`,
|
|
10
|
+
* `new Gzip()` through any import spelling) declared by the shipped
|
|
11
|
+
* fallback, or null. */
|
|
12
|
+
export declare function zlibStreamModeOf(lowerer: Lowerer, symbol: ts.Symbol | null | undefined): number | null;
|
|
13
|
+
/** True when `access` names a member the zlib stream base class declares
|
|
14
|
+
* (bytesWritten, flush, params, close, reset). */
|
|
15
|
+
export declare function isZlibStreamMember(lowerer: Lowerer, access: ts.PropertyAccessExpression): boolean;
|
|
16
|
+
/** `stream.bytesWritten` on a zlib stream. */
|
|
17
|
+
export declare function lowerZlibStreamBytesWritten(lowerer: Lowerer, access: ts.PropertyAccessExpression): IrExpr;
|
|
18
|
+
/** flush/params/close/reset on a zlib stream. Callbacks are () => void,
|
|
19
|
+
* the write-callback rule; numeric operands cross as dyn values for the
|
|
20
|
+
* runtime's range checks. */
|
|
21
|
+
export declare function lowerZlibStreamMethodCall(lowerer: Lowerer, call: ts.CallExpression, access: ts.PropertyAccessExpression): IrExpr;
|
|
4
22
|
export declare function lowerZlibModuleCall(lowerer: Lowerer, expr: ts.CallExpression, bi: {
|
|
5
23
|
module: string;
|
|
6
24
|
member: string;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { lowerBuiltinByteInput, errorFirstBytesCallback } from "./arguments.js";
|
|
2
|
-
import { numLit } from "../../../ir/build.js";
|
|
2
|
+
import { dynUndefinedExpr, numLit } from "../../../ir/build.js";
|
|
3
3
|
import { InternalCompilerError } from "../../../errors.js";
|
|
4
4
|
import * as ts from "../../ts7/adapter.js";
|
|
5
5
|
import {} from "../lowerer.js";
|
|
6
|
-
import {
|
|
6
|
+
import { locOf } from "../../program.js";
|
|
7
|
+
import { isNodeTypesPath } from "../../dts-paths.js";
|
|
8
|
+
import { BYTES_U8, DYN, F64, funcOf, VOID, ZLIB_STREAM_MODES, } from "../../../ir/ir.js";
|
|
7
9
|
const ZLIB_SYNC_FNS = {
|
|
8
10
|
deflateSync: "zlib.deflateSync",
|
|
9
11
|
inflateSync: "zlib.inflateSync",
|
|
@@ -22,10 +24,181 @@ const ZLIB_CALLBACK_FNS = {
|
|
|
22
24
|
gunzip: "zlib.gunzipCb",
|
|
23
25
|
unzip: "zlib.unzipCb",
|
|
24
26
|
};
|
|
27
|
+
const ZLIB_STREAM_T = { kind: "object", className: "%Transform" };
|
|
28
|
+
/** `zlib.createGzip(options?)` and `new zlib.Gzip(options?)`: the runtime
|
|
29
|
+
* Transform stream (scr_zlib_stream.c). The options value crosses as a dyn
|
|
30
|
+
* value and is validated at runtime with Node's ladder, so literal and
|
|
31
|
+
* computed options take the same path. */
|
|
32
|
+
export function lowerZlibStreamNew(lowerer, args, mode, what, site, loc) {
|
|
33
|
+
if (args.some(ts.isSpreadElement))
|
|
34
|
+
lowerer.noLowering(`${what} with spread arguments`, site);
|
|
35
|
+
if (args.length > 1) {
|
|
36
|
+
lowerer.noLowering(`${what} with ${args.length} arguments`, args[1], "the supported form takes one options object");
|
|
37
|
+
}
|
|
38
|
+
let options = dynUndefinedExpr(loc);
|
|
39
|
+
if (args[0] !== undefined) {
|
|
40
|
+
const raw = lowerer.lowerExpr(args[0]);
|
|
41
|
+
if (raw.type.kind === "dyn")
|
|
42
|
+
options = raw;
|
|
43
|
+
else if (raw.kind === "unitLit" || lowerer.dynConvertible(raw.type)) {
|
|
44
|
+
options = { kind: "dynFrom", value: raw, type: DYN, loc };
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
lowerer.noLowering(`${what} with a '${lowerer.fmt(raw.type)}' options value`, args[0], "zlib stream options are a plain object of numbers, booleans and Buffers");
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
kind: "libCall",
|
|
52
|
+
fn: "zlib.streamNew",
|
|
53
|
+
args: [numLit(mode, loc), options],
|
|
54
|
+
type: ZLIB_STREAM_T,
|
|
55
|
+
loc,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/** The node_zlib_mode of a zlib stream CLASS symbol (`new zlib.Gzip()`,
|
|
59
|
+
* `new Gzip()` through any import spelling) declared by the shipped
|
|
60
|
+
* fallback, or null. */
|
|
61
|
+
export function zlibStreamModeOf(lowerer, symbol) {
|
|
62
|
+
if (!symbol)
|
|
63
|
+
return null;
|
|
64
|
+
const target = symbol.flags & ts.SymbolFlags.Alias ? lowerer.checker.getAliasedSymbol(symbol) : symbol;
|
|
65
|
+
const mode = ZLIB_STREAM_MODES.get(target.name);
|
|
66
|
+
if (mode === undefined)
|
|
67
|
+
return null;
|
|
68
|
+
return lowerer.checker
|
|
69
|
+
.declarationsOf(target)
|
|
70
|
+
.some((d) => ts.isClassDeclaration(d) && isZlibFallbackDecl(lowerer, d))
|
|
71
|
+
? mode
|
|
72
|
+
: null;
|
|
73
|
+
}
|
|
74
|
+
function isZlibFallbackDecl(lowerer, d) {
|
|
75
|
+
const file = d.getSourceFile();
|
|
76
|
+
if (!lowerer.isStdlibFile(file) || isNodeTypesPath(file.fileName))
|
|
77
|
+
return false;
|
|
78
|
+
for (let node = d.parent; node; node = node.parent) {
|
|
79
|
+
if (ts.isModuleDeclaration(node) && ts.isStringLiteral(node.name)) {
|
|
80
|
+
return node.name.text === "zlib" || node.name.text === "node:zlib";
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
/** True when `access` names a member the zlib stream base class declares
|
|
86
|
+
* (bytesWritten, flush, params, close, reset). */
|
|
87
|
+
export function isZlibStreamMember(lowerer, access) {
|
|
88
|
+
const symbol = lowerer.checker.getSymbolAtLocation(access.name);
|
|
89
|
+
if (!symbol)
|
|
90
|
+
return false;
|
|
91
|
+
return lowerer.checker
|
|
92
|
+
.declarationsOf(symbol)
|
|
93
|
+
.some((d) => d.parent !== undefined &&
|
|
94
|
+
ts.isClassDeclaration(d.parent) &&
|
|
95
|
+
d.parent.name?.text === "ZlibBase" &&
|
|
96
|
+
isZlibFallbackDecl(lowerer, d.parent));
|
|
97
|
+
}
|
|
98
|
+
/** `stream.bytesWritten` on a zlib stream. */
|
|
99
|
+
export function lowerZlibStreamBytesWritten(lowerer, access) {
|
|
100
|
+
const loc = locOf(access);
|
|
101
|
+
return {
|
|
102
|
+
kind: "libCall",
|
|
103
|
+
fn: "zlib.streamBytesWritten",
|
|
104
|
+
args: [lowerer.lowerExpr(access.expression)],
|
|
105
|
+
type: F64,
|
|
106
|
+
loc,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/** flush/params/close/reset on a zlib stream. Callbacks are () => void,
|
|
110
|
+
* the write-callback rule; numeric operands cross as dyn values for the
|
|
111
|
+
* runtime's range checks. */
|
|
112
|
+
export function lowerZlibStreamMethodCall(lowerer, call, access) {
|
|
113
|
+
const loc = locOf(call);
|
|
114
|
+
const member = access.name.text;
|
|
115
|
+
const args = call.arguments;
|
|
116
|
+
if (args.some(ts.isSpreadElement))
|
|
117
|
+
lowerer.noLowering(`${member} with spread arguments`, call);
|
|
118
|
+
const isFunc = (node) => lowerer.mapTypeOf(lowerer.typeOf(node))?.kind === "func";
|
|
119
|
+
const callback = (node) => {
|
|
120
|
+
const cb = lowerer.lowerExprExpecting(node, funcOf([], VOID));
|
|
121
|
+
if (cb.type.kind !== "func" || cb.type.params.length > 0) {
|
|
122
|
+
lowerer.noLowering(`zlib ${member} callbacks taking arguments`, node, "() => void callbacks are supported (listen for 'error' to observe failures)");
|
|
123
|
+
}
|
|
124
|
+
return cb;
|
|
125
|
+
};
|
|
126
|
+
const value = (node) => {
|
|
127
|
+
if (node === undefined)
|
|
128
|
+
return dynUndefinedExpr(loc);
|
|
129
|
+
const raw = lowerer.lowerExpr(node);
|
|
130
|
+
if (raw.type.kind === "dyn")
|
|
131
|
+
return raw;
|
|
132
|
+
if (raw.kind === "unitLit" || lowerer.dynConvertible(raw.type)) {
|
|
133
|
+
return { kind: "dynFrom", value: raw, type: DYN, loc };
|
|
134
|
+
}
|
|
135
|
+
lowerer.noLowering(`zlib ${member} with a '${lowerer.fmt(raw.type)}' argument`, node);
|
|
136
|
+
};
|
|
137
|
+
const receiver = () => lowerer.lowerExpr(access.expression);
|
|
138
|
+
const call0 = (fn, operands) => ({
|
|
139
|
+
kind: "libCall",
|
|
140
|
+
fn,
|
|
141
|
+
args: operands,
|
|
142
|
+
type: VOID,
|
|
143
|
+
loc,
|
|
144
|
+
});
|
|
145
|
+
const tooMany = (max) => {
|
|
146
|
+
if (args.length > max)
|
|
147
|
+
lowerer.noLowering(`zlib ${member} with ${args.length} arguments`, call);
|
|
148
|
+
};
|
|
149
|
+
switch (member) {
|
|
150
|
+
case "flush": {
|
|
151
|
+
tooMany(2);
|
|
152
|
+
// flush(cb) moves a function first argument into the callback slot.
|
|
153
|
+
const first = args[0];
|
|
154
|
+
const cbNode = first !== undefined && isFunc(first) ? first : args[1];
|
|
155
|
+
const kindNode = first !== undefined && first !== cbNode ? first : undefined;
|
|
156
|
+
const recv = receiver();
|
|
157
|
+
const kind = value(kindNode);
|
|
158
|
+
return cbNode !== undefined
|
|
159
|
+
? call0("zlib.streamFlushCb", [recv, kind, callback(cbNode)])
|
|
160
|
+
: call0("zlib.streamFlush", [recv, kind]);
|
|
161
|
+
}
|
|
162
|
+
case "params": {
|
|
163
|
+
tooMany(3);
|
|
164
|
+
const recv = receiver();
|
|
165
|
+
const level = value(args[0]);
|
|
166
|
+
const strategy = value(args[1]);
|
|
167
|
+
return args[2] !== undefined
|
|
168
|
+
? call0("zlib.streamParamsCb", [recv, level, strategy, callback(args[2])])
|
|
169
|
+
: call0("zlib.streamParams", [recv, level, strategy]);
|
|
170
|
+
}
|
|
171
|
+
case "close": {
|
|
172
|
+
tooMany(1);
|
|
173
|
+
const recv = receiver();
|
|
174
|
+
return args[0] !== undefined
|
|
175
|
+
? call0("zlib.streamCloseCb", [recv, callback(args[0])])
|
|
176
|
+
: call0("zlib.streamClose", [recv]);
|
|
177
|
+
}
|
|
178
|
+
case "reset":
|
|
179
|
+
tooMany(0);
|
|
180
|
+
return call0("zlib.streamReset", [receiver()]);
|
|
181
|
+
default:
|
|
182
|
+
lowerer.noLowering(`zlib stream member '${member}'`, access);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
const ZLIB_STREAM_FACTORIES = {
|
|
186
|
+
createDeflate: 1,
|
|
187
|
+
createInflate: 2,
|
|
188
|
+
createGzip: 3,
|
|
189
|
+
createGunzip: 4,
|
|
190
|
+
createDeflateRaw: 5,
|
|
191
|
+
createInflateRaw: 6,
|
|
192
|
+
createUnzip: 7,
|
|
193
|
+
};
|
|
25
194
|
export function lowerZlibModuleCall(lowerer, expr, bi, loc) {
|
|
26
195
|
if (expr.arguments.some(ts.isSpreadElement)) {
|
|
27
196
|
lowerer.noLowering(`zlib.${bi.member} with spread arguments`, expr);
|
|
28
197
|
}
|
|
198
|
+
const streamMode = ZLIB_STREAM_FACTORIES[bi.member];
|
|
199
|
+
if (streamMode !== undefined) {
|
|
200
|
+
return lowerZlibStreamNew(lowerer, expr.arguments, streamMode, `zlib.${bi.member}`, expr, loc);
|
|
201
|
+
}
|
|
29
202
|
const syncFn = ZLIB_SYNC_FNS[bi.member];
|
|
30
203
|
if (syncFn !== undefined) {
|
|
31
204
|
if (expr.arguments.length === 2 &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compression.js","sourceRoot":"","sources":["../../../../src/frontend/lowering/builtins/compression.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compression.js","sourceRoot":"","sources":["../../../../src/frontend/lowering/builtins/compression.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,12 +4,13 @@ import { canonicalBuiltinModule, locOf, requireSpecOf } from "../../program.js";
|
|
|
4
4
|
import { builtinConstLit } from "../surfaces.js";
|
|
5
5
|
import { HTTP2_CONSTANTS } from "../http2-constants.js";
|
|
6
6
|
import { CRYPTO_CONSTANTS } from "../crypto-tables.js";
|
|
7
|
+
import { ZLIB_CONSTANTS } from "../zlib-constants.js";
|
|
7
8
|
import { F64 } from "../../../ir/ir.js";
|
|
8
9
|
import { builtinImportOf } from "./module-bindings.js";
|
|
9
10
|
/** The builtin modules whose `constants` object bakes as literals at
|
|
10
11
|
* every access site (the fs.constants precedent, scaled up): http2's
|
|
11
|
-
* full Node v24 table,
|
|
12
|
-
* itself never materializes at runtime. */
|
|
12
|
+
* full Node v24 table, crypto's OpenSSL-constant table, and zlib's
|
|
13
|
+
* table. The object itself never materializes at runtime. */
|
|
13
14
|
const BUILTIN_CONSTANTS_TABLES = {
|
|
14
15
|
http2: {
|
|
15
16
|
table: HTTP2_CONSTANTS,
|
|
@@ -19,6 +20,10 @@ const BUILTIN_CONSTANTS_TABLES = {
|
|
|
19
20
|
table: CRYPTO_CONSTANTS,
|
|
20
21
|
hint: "the table bakes Node v24's crypto.constants members as literals — this name is not one of them",
|
|
21
22
|
},
|
|
23
|
+
zlib: {
|
|
24
|
+
table: ZLIB_CONSTANTS,
|
|
25
|
+
hint: "the table bakes Node v24's zlib.constants members as literals — this name is not one of them",
|
|
26
|
+
},
|
|
22
27
|
};
|
|
23
28
|
/** The module whose baked-constants OBJECT `node` denotes, or null — any
|
|
24
29
|
* of the spellings: `http2.constants`/`crypto.constants` through a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/frontend/lowering/builtins/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAgB,GAAG,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,GAAG,EAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/frontend/lowering/builtins/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,12 @@ export declare function lowerCryptoModuleCall(lowerer: Lowerer, expr: ts.CallExp
|
|
|
12
12
|
module: string;
|
|
13
13
|
member: string;
|
|
14
14
|
}, loc: SrcLoc): IrExpr | null;
|
|
15
|
+
/** Whether a checker type is node:crypto's Cipheriv/Decipheriv family. */
|
|
16
|
+
export declare function isCipherType(lowerer: Lowerer, type: ts.Type): boolean;
|
|
17
|
+
/** Calls on native Cipheriv/Decipheriv handles dispatch through the
|
|
18
|
+
* handle's methods with checked-dynamic arguments. The stream.Transform
|
|
19
|
+
* members the classes inherit are refused. */
|
|
20
|
+
export declare function lowerCipherMethodCall(lowerer: Lowerer, call: ts.CallExpression, access: ts.PropertyAccessExpression): IrExpr | null;
|
|
15
21
|
/** Calls on native crypto.Hash/Hmac handles. The handle survives locals,
|
|
16
22
|
* aliases, loops, and returns; update() retains and returns the receiver,
|
|
17
23
|
* digest() finalizes it, and Hash.copy() snapshots the incremental state. */
|