@scriptc/compiler 0.4.3 → 0.4.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 +73 -29
- package/dist/backend/llvm/bytes-loop-versions.js +6 -0
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +7 -2
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/debug-info.js +2 -5
- package/dist/backend/llvm/debug-info.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +4 -0
- package/dist/backend/llvm/dyn.js +21 -9
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +2 -8
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-module.js +16 -6
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +10 -0
- package/dist/backend/llvm/emitter.js +9 -5
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +11 -2
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +11 -13
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.js +14 -8
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +14 -0
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +20 -11
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +16 -4
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/integer-values.d.ts +5 -0
- package/dist/backend/llvm/integer-values.js +27 -3
- package/dist/backend/llvm/integer-values.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +133 -3
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +37 -1
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +21 -0
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/publish.js +3 -3
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +3 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/shapes.js +2 -7
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/stack-captures.js +1 -5
- package/dist/backend/llvm/stack-captures.js.map +1 -1
- package/dist/backend/llvm/union-repr.d.ts +4 -3
- package/dist/backend/llvm/union-repr.js +6 -5
- package/dist/backend/llvm/union-repr.js.map +1 -1
- package/dist/backend/llvm/walkers.js +13 -0
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/native-codegen-core.d.ts +5 -3
- package/dist/backend/native-codegen-core.js +13 -6
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.test.js +6 -4
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/target-cpu.d.ts +26 -0
- package/dist/backend/target-cpu.js +98 -0
- package/dist/backend/target-cpu.js.map +1 -0
- package/dist/backend/target-cpu.test.d.ts +1 -0
- package/dist/backend/target-cpu.test.js +38 -0
- package/dist/backend/target-cpu.test.js.map +1 -0
- package/dist/cli/command.js +20 -1
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +4 -1
- package/dist/cli/usage.js +7 -0
- package/dist/cli/usage.js.map +1 -1
- package/dist/compile-types.d.ts +7 -0
- package/dist/diagnostics/diagnostic.js +1 -1
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +3 -0
- package/dist/executable/executable-cache.js +4 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +2 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/frontend/decl-projection.js +105 -10
- package/dist/frontend/decl-projection.js.map +1 -1
- package/dist/frontend/lowering/builtins/async-context.d.ts +8 -2
- package/dist/frontend/lowering/builtins/async-context.js +62 -3
- package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.js +3 -1
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.js +4 -1
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +3 -3
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.js +6 -3
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-paths.d.ts +43 -5
- package/dist/frontend/lowering/builtins/fs-paths.js +245 -93
- package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +6 -3
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +1 -1
- package/dist/frontend/lowering/builtins/promises.js +149 -138
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +0 -1
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
- package/dist/frontend/lowering/cjs-inline-require.d.ts +32 -0
- package/dist/frontend/lowering/cjs-inline-require.js +307 -4
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +10 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +114 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.js +54 -18
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +25 -0
- package/dist/frontend/lowering/class-protocols.js +183 -1
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/completion-callbacks.d.ts +4 -0
- package/dist/frontend/lowering/completion-callbacks.js +146 -0
- package/dist/frontend/lowering/completion-callbacks.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +5 -4
- package/dist/frontend/lowering/containers/array-callbacks.js +7 -6
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +5 -0
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +11 -3
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +25 -17
- package/dist/frontend/lowering/containers/bytes.js +453 -45
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/date-values.d.ts +11 -0
- package/dist/frontend/lowering/date-values.js +207 -0
- package/dist/frontend/lowering/date-values.js.map +1 -0
- package/dist/frontend/lowering/expressions/array-literals.js +6 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +64 -26
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +79 -0
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +31 -1
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.js +56 -0
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +6 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +17 -0
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/function-returns.js +15 -0
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/indexed-unions.d.ts +54 -0
- package/dist/frontend/lowering/indexed-unions.js +401 -0
- package/dist/frontend/lowering/indexed-unions.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.js +210 -32
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +104 -4
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +15 -3
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +19 -3
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.js +22 -47
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.js +205 -1
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +1 -1
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +1 -1
- package/dist/frontend/lowering/lower-inspect.js +35 -11
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +21 -5
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +100 -34
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +30 -2
- package/dist/frontend/lowering/lowerer.js +68 -7
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/object-factory-new.d.ts +5 -0
- package/dist/frontend/lowering/object-factory-new.js +20 -6
- package/dist/frontend/lowering/object-factory-new.js.map +1 -1
- package/dist/frontend/lowering/overload-choice.d.ts +33 -0
- package/dist/frontend/lowering/overload-choice.js +190 -0
- package/dist/frontend/lowering/overload-choice.js.map +1 -0
- package/dist/frontend/lowering/surfaces.js +55 -2
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/pipeline.js +1 -1
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +5 -1
- package/dist/frontend/program-analysis.js +5 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +13 -5
- package/dist/frontend/program.js +197 -14
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +3 -0
- package/dist/frontend/ts7/semantic-model.js +5 -0
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +6 -1
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-types.d.ts +1 -1
- package/dist/frontend/ts7/semantic-types.js +1 -1
- package/dist/frontend/ts7/semantic-types.js.map +1 -1
- package/dist/frontend/type-mapper.js +45 -16
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/ir/builtin-effects.js +8 -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 +56 -0
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/int32-slots.js +7 -0
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +33 -0
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loops.js +14 -4
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/ir.d.ts +13 -3
- package/dist/ir/ir.js +19 -5
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +2 -1
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/js-ic.d.ts +2 -15
- package/dist/ir/js-ic.js +11 -79
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +0 -142
- package/dist/ir/js-ic.test.js.map +1 -1
- package/dist/ir/runtime-features.js +25 -1
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/validate.js +46 -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/prepare.d.ts +1 -1
- package/dist/native/prepare.js +11 -1
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +18 -2
- package/dist/native/prepare.test.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +2 -4
|
@@ -1,15 +1,53 @@
|
|
|
1
1
|
import * as ts from "../../ts7/adapter.js";
|
|
2
2
|
import { type Lowerer } from "../lowerer.js";
|
|
3
3
|
import { type IrExpr } from "../../../ir/ir.js";
|
|
4
|
-
/**
|
|
5
|
-
|
|
4
|
+
/** What a path argument of an fs call lowers to (Lowerer.fsPathPlans). */
|
|
5
|
+
export type FsPathPlan =
|
|
6
|
+
/** The first URL path: the later arguments with effects, the earlier
|
|
7
|
+
* string paths to check, and a runtime encoding to check, all before the
|
|
8
|
+
* conversion. */
|
|
9
|
+
{
|
|
10
|
+
kind: "convert";
|
|
11
|
+
staged: ts.Expression[];
|
|
12
|
+
checks: {
|
|
13
|
+
path: ts.Expression;
|
|
14
|
+
name: string;
|
|
15
|
+
}[];
|
|
16
|
+
encoding: ts.Expression | null;
|
|
17
|
+
}
|
|
18
|
+
/** A string path that a later URL path checks: the local that holds it,
|
|
19
|
+
* once lowered. */
|
|
20
|
+
| {
|
|
21
|
+
kind: "save";
|
|
22
|
+
local: string | null;
|
|
23
|
+
}
|
|
24
|
+
/** A URL path whose conversion error becomes false or a rejection: the
|
|
25
|
+
* local that holds the conversion's value. */
|
|
26
|
+
| {
|
|
27
|
+
kind: "value";
|
|
28
|
+
local: string;
|
|
29
|
+
};
|
|
30
|
+
/** Plans the URL paths of a synchronous fs call (see the file comment):
|
|
31
|
+
* the check every fs call runs before lowering its arguments. */
|
|
6
32
|
export declare function checkFsUrlPaths(lowerer: Lowerer, call: ts.CallExpression, bi: {
|
|
7
33
|
module: string;
|
|
8
34
|
member: string;
|
|
9
35
|
}): void;
|
|
36
|
+
/** existsSync and the fs.promises functions with URL paths: each URL
|
|
37
|
+
* converts to a value (url.fileURLToPathValue) after the arguments are
|
|
38
|
+
* evaluated, and the call runs on the converted paths only when every
|
|
39
|
+
* conversion produced a string; otherwise existsSync answers false and an
|
|
40
|
+
* fs.promises function a promise rejected with the first conversion's
|
|
41
|
+
* error. `lowerCall` lowers the call itself, whose URL paths then read the
|
|
42
|
+
* converted values. Null for every other call. */
|
|
43
|
+
export declare function lowerFallibleFsUrlCall(lowerer: Lowerer, call: ts.CallExpression, bi: {
|
|
44
|
+
module: string;
|
|
45
|
+
member: string;
|
|
46
|
+
}, lowerCall: () => IrExpr): IrExpr | null;
|
|
10
47
|
/** An fs path argument as a string: a URL converts with fileURLToPath's
|
|
11
48
|
* conversion (url.fileURLToPathUrl), which throws Node's errors for other
|
|
12
|
-
* schemes, hosts and encoded separators. */
|
|
49
|
+
* schemes, hosts and encoded separators, after the checks its plan names. */
|
|
13
50
|
export declare function lowerFsPath(lowerer: Lowerer, node: ts.Expression): IrExpr;
|
|
14
|
-
/** Whether `index` is a path parameter of the fs
|
|
15
|
-
|
|
51
|
+
/** Whether `index` is a path parameter of the fs or fs.promises function
|
|
52
|
+
* `member`. */
|
|
53
|
+
export declare function isFsPathParam(module: string, member: string, index: number): boolean;
|
|
@@ -5,27 +5,29 @@
|
|
|
5
5
|
* conversion (url.fileURLToPathUrl). The later arguments through the last
|
|
6
6
|
* one with side effects are evaluated into hidden locals before the
|
|
7
7
|
* conversion, in source order, so they run even when it throws and each
|
|
8
|
-
* reads what it reads in Node.
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
8
|
+
* reads what it reads in Node. Before the conversion, an earlier string
|
|
9
|
+
* path gets its null-byte check (copyFileSync, renameSync) and a runtime
|
|
10
|
+
* readFileSync encoding its name check, which Node runs first. existsSync
|
|
11
|
+
* and the fs.promises functions convert to a value instead
|
|
12
|
+
* (url.fileURLToPathValue) and answer false or a rejected promise for a
|
|
13
|
+
* conversion error. An argument Node validates before the path must
|
|
14
|
+
* otherwise be absent or a literal that passes that validation; other
|
|
15
|
+
* forms fence with SC2020. */
|
|
14
16
|
import * as ts from "../../ts7/adapter.js";
|
|
15
17
|
import {} from "../lowerer.js";
|
|
16
18
|
import { locOf } from "../../program.js";
|
|
17
19
|
import { sideEffectFreeOptionValue } from "../surfaces.js";
|
|
18
20
|
import { stripTypeWrappers } from "../typed-arguments.js";
|
|
19
|
-
import {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
import { boolLit, varRef } from "../../../ir/build.js";
|
|
22
|
+
import { BOOL, DYN, STRING, URL_T, VOID } from "../../../ir/ir.js";
|
|
23
|
+
import { InternalCompilerError } from "../../../errors.js";
|
|
24
|
+
/** The fs functions whose path parameters accept a URL. */
|
|
23
25
|
const FS_URL_PATHS = {
|
|
24
26
|
accessSync: { paths: [0], pathsFirst: true },
|
|
25
27
|
appendFileSync: { paths: [0], pathsFirst: false },
|
|
26
28
|
chmodSync: { paths: [0], pathsFirst: true },
|
|
27
29
|
chownSync: { paths: [0], pathsFirst: true },
|
|
28
|
-
copyFileSync: { paths: [0, 1], pathsFirst: true },
|
|
30
|
+
copyFileSync: { paths: [0, 1], pathsFirst: true, names: ["src", "dest"] },
|
|
29
31
|
lchownSync: { paths: [0], pathsFirst: true },
|
|
30
32
|
lstatSync: { paths: [0], pathsFirst: true },
|
|
31
33
|
mkdirSync: { paths: [0], pathsFirst: false },
|
|
@@ -36,7 +38,7 @@ const FS_URL_PATHS = {
|
|
|
36
38
|
readdirSync: { paths: [0], pathsFirst: false },
|
|
37
39
|
realpathSync: { paths: [0], pathsFirst: false },
|
|
38
40
|
"realpathSync.native": { paths: [0], pathsFirst: false },
|
|
39
|
-
renameSync: { paths: [0, 1], pathsFirst: true },
|
|
41
|
+
renameSync: { paths: [0, 1], pathsFirst: true, names: ["oldPath", "newPath"] },
|
|
40
42
|
rmSync: { paths: [0], pathsFirst: false },
|
|
41
43
|
rmdirSync: { paths: [0], pathsFirst: true },
|
|
42
44
|
statSync: { paths: [0], pathsFirst: true },
|
|
@@ -44,42 +46,46 @@ const FS_URL_PATHS = {
|
|
|
44
46
|
unlinkSync: { paths: [0], pathsFirst: true },
|
|
45
47
|
writeFileSync: { paths: [0], pathsFirst: false },
|
|
46
48
|
};
|
|
47
|
-
/** The fs.promises functions with path parameters
|
|
49
|
+
/** The fs.promises functions with path parameters. */
|
|
48
50
|
const FSP_PATHS = {
|
|
49
|
-
access: [0],
|
|
50
|
-
appendFile: [0],
|
|
51
|
-
chmod: [0],
|
|
52
|
-
chown: [0],
|
|
53
|
-
copyFile: [0, 1],
|
|
54
|
-
lchown: [0],
|
|
55
|
-
lstat: [0],
|
|
56
|
-
mkdir: [0],
|
|
57
|
-
mkdtemp: [0],
|
|
58
|
-
open: [0],
|
|
59
|
-
opendir: [0],
|
|
60
|
-
readFile: [0],
|
|
61
|
-
readdir: [0],
|
|
62
|
-
realpath: [0],
|
|
63
|
-
rename: [0, 1],
|
|
64
|
-
rm: [0],
|
|
65
|
-
rmdir: [0],
|
|
66
|
-
stat: [0],
|
|
67
|
-
truncate: [0],
|
|
68
|
-
unlink: [0],
|
|
69
|
-
writeFile: [0],
|
|
51
|
+
access: { paths: [0], pathsFirst: true },
|
|
52
|
+
appendFile: { paths: [0], pathsFirst: false },
|
|
53
|
+
chmod: { paths: [0], pathsFirst: true },
|
|
54
|
+
chown: { paths: [0], pathsFirst: true },
|
|
55
|
+
copyFile: { paths: [0, 1], pathsFirst: true },
|
|
56
|
+
lchown: { paths: [0], pathsFirst: true },
|
|
57
|
+
lstat: { paths: [0], pathsFirst: true },
|
|
58
|
+
mkdir: { paths: [0], pathsFirst: false },
|
|
59
|
+
mkdtemp: { paths: [0], pathsFirst: false },
|
|
60
|
+
open: { paths: [0], pathsFirst: true },
|
|
61
|
+
opendir: { paths: [0], pathsFirst: true },
|
|
62
|
+
readFile: { paths: [0], pathsFirst: false },
|
|
63
|
+
readdir: { paths: [0], pathsFirst: false },
|
|
64
|
+
realpath: { paths: [0], pathsFirst: false },
|
|
65
|
+
rename: { paths: [0, 1], pathsFirst: true },
|
|
66
|
+
rm: { paths: [0], pathsFirst: true },
|
|
67
|
+
rmdir: { paths: [0], pathsFirst: true },
|
|
68
|
+
stat: { paths: [0], pathsFirst: true },
|
|
69
|
+
truncate: { paths: [0], pathsFirst: true },
|
|
70
|
+
unlink: { paths: [0], pathsFirst: true },
|
|
71
|
+
writeFile: { paths: [0], pathsFirst: false },
|
|
70
72
|
};
|
|
71
73
|
function isUrlArgument(lowerer, node) {
|
|
72
74
|
return node !== undefined && lowerer.mapTypeOf(lowerer.typeOf(node))?.kind === "url";
|
|
73
75
|
}
|
|
76
|
+
function stripParens(node) {
|
|
77
|
+
let e = node;
|
|
78
|
+
while (ts.isParenthesizedExpression(e))
|
|
79
|
+
e = e.expression;
|
|
80
|
+
return e;
|
|
81
|
+
}
|
|
74
82
|
/** A literal that Node's option validation accepts before it reads the
|
|
75
83
|
* path: a string (the checker admits only the declared encodings, flags
|
|
76
84
|
* and type names), a boolean, an integer in [0, 2^31 - 1] (every numeric
|
|
77
85
|
* option of these functions accepts that range), undefined or null, or an
|
|
78
86
|
* object literal of those. */
|
|
79
87
|
function preValidatedLiteral(node) {
|
|
80
|
-
|
|
81
|
-
while (ts.isParenthesizedExpression(e))
|
|
82
|
-
e = e.expression;
|
|
88
|
+
const e = stripParens(node);
|
|
83
89
|
if (ts.isStringLiteralLike(e))
|
|
84
90
|
return true;
|
|
85
91
|
if (e.kind === ts.SyntaxKind.TrueKeyword ||
|
|
@@ -99,38 +105,46 @@ function preValidatedLiteral(node) {
|
|
|
99
105
|
}
|
|
100
106
|
return false;
|
|
101
107
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
if (
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
108
|
+
const HINT = "convert the URL first: fileURLToPath(url) from node:url";
|
|
109
|
+
/** SC2020 for an argument Node validates before the paths that is neither
|
|
110
|
+
* absent nor a literal passing that validation, other than a string
|
|
111
|
+
* readFileSync encoding (returned: it is checked before the conversion).
|
|
112
|
+
* writeFileSync/appendFileSync's data is checked after the path. */
|
|
113
|
+
function optionsBeforePaths(lowerer, args, member, row, name) {
|
|
114
|
+
if (row.pathsFirst)
|
|
115
|
+
return null;
|
|
116
|
+
const data = /^(writeFile|appendFile)(Sync)?$/.test(member) ? 1 : -1;
|
|
117
|
+
let encoding = null;
|
|
118
|
+
for (let i = 0; i < args.length; i++) {
|
|
119
|
+
const arg = args[i];
|
|
120
|
+
if (row.paths.includes(i) || i === data || preValidatedLiteral(arg))
|
|
121
|
+
continue;
|
|
122
|
+
if (member === "readFileSync" &&
|
|
123
|
+
i === 1 &&
|
|
124
|
+
lowerer.mapTypeOf(lowerer.typeOf(arg))?.kind === "string") {
|
|
125
|
+
encoding = stripTypeWrappers(arg);
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
lowerer.noLowering(`${name} with a URL path and options that are not literals`, arg, HINT);
|
|
112
129
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
//
|
|
124
|
-
//
|
|
125
|
-
if (row.paths.some((i) => i < first && args[i] !== undefined))
|
|
126
|
-
lowerer.noLowering(`${name} with a string path before a URL path`, call, hint);
|
|
127
|
-
// Every argument from the URL through the last one with effects is
|
|
128
|
-
// evaluated ahead of the conversion, in source order: a later argument's
|
|
129
|
-
// effect (an assignment, say) must not change what an earlier one read.
|
|
130
|
+
return encoding;
|
|
131
|
+
}
|
|
132
|
+
/** The arguments after the URL path that are evaluated ahead of the
|
|
133
|
+
* conversion: every one through the last with effects or that `force`
|
|
134
|
+
* names, in source order. An object or array literal among them is
|
|
135
|
+
* SC2020: its members are lowered one by one, so it cannot be evaluated
|
|
136
|
+
* ahead of the conversion as one value. */
|
|
137
|
+
function stagedAfter(lowerer, args, first, name, force) {
|
|
138
|
+
// Every argument from the URL through the last one with effects (or that
|
|
139
|
+
// the caller forces) is evaluated ahead of the conversion, in source
|
|
140
|
+
// order: a later argument's effect (an assignment, say) must not change
|
|
141
|
+
// what an earlier one read.
|
|
130
142
|
let last = first;
|
|
131
|
-
for (let i = first + 1; i < args.length; i++)
|
|
132
|
-
|
|
143
|
+
for (let i = first + 1; i < args.length; i++) {
|
|
144
|
+
const e = stripTypeWrappers(args[i]);
|
|
145
|
+
if (!sideEffectFreeOptionValue(e) || force(e, i))
|
|
133
146
|
last = i;
|
|
147
|
+
}
|
|
134
148
|
const staged = [];
|
|
135
149
|
for (let i = first + 1; i <= last; i++) {
|
|
136
150
|
// Keyed without type-only wrappers (`satisfies`, `as`, `!`), so a
|
|
@@ -141,53 +155,186 @@ function checkUrlPaths(lowerer, call, module, member) {
|
|
|
141
155
|
if (ts.isObjectLiteralExpression(e) || ts.isArrayLiteralExpression(e)) {
|
|
142
156
|
lowerer.noLowering(sideEffectFreeOptionValue(e)
|
|
143
157
|
? `${name} with a URL path and a literal before a later argument that has effects`
|
|
144
|
-
: `${name} with a URL path and a later literal that has effects`, e,
|
|
158
|
+
: `${name} with a URL path and a later literal that has effects`, e, HINT);
|
|
145
159
|
}
|
|
146
160
|
staged.push(e);
|
|
147
161
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
if (
|
|
162
|
+
return staged;
|
|
163
|
+
}
|
|
164
|
+
/** Plans the URL paths of a synchronous fs call (see the file comment):
|
|
165
|
+
* the check every fs call runs before lowering its arguments. */
|
|
166
|
+
export function checkFsUrlPaths(lowerer, call, bi) {
|
|
167
|
+
if (bi.module !== "fs")
|
|
154
168
|
return;
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
169
|
+
const row = FS_URL_PATHS[bi.member];
|
|
170
|
+
if (!row)
|
|
171
|
+
return;
|
|
172
|
+
const args = call.arguments.nodes;
|
|
173
|
+
const first = row.paths.find((i) => isUrlArgument(lowerer, args[i]));
|
|
174
|
+
if (first === undefined || lowerer.fsPathPlans.has(stripParens(args[first])))
|
|
175
|
+
return;
|
|
176
|
+
const name = bi.member;
|
|
177
|
+
if (args.some(ts.isSpreadElement))
|
|
178
|
+
lowerer.noLowering(`${name} with spread arguments and a URL path`, call);
|
|
179
|
+
const checks = [];
|
|
180
|
+
for (const i of row.paths) {
|
|
181
|
+
if (i >= first || args[i] === undefined)
|
|
159
182
|
continue;
|
|
160
|
-
|
|
183
|
+
const path = stripParens(args[i]);
|
|
184
|
+
checks.push({ path, name: row.names?.[i] ?? "path" });
|
|
185
|
+
lowerer.fsPathPlans.set(path, { kind: "save", local: null });
|
|
161
186
|
}
|
|
187
|
+
const encoding = optionsBeforePaths(lowerer, args, bi.member, row, name);
|
|
188
|
+
const staged = stagedAfter(lowerer, args, first, name, (e) => e === encoding);
|
|
189
|
+
for (const e of staged)
|
|
190
|
+
lowerer.stagedArguments.set(e, null);
|
|
191
|
+
lowerer.fsPathPlans.set(stripParens(args[first]), { kind: "convert", staged, checks, encoding });
|
|
162
192
|
}
|
|
163
|
-
/**
|
|
164
|
-
*
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
193
|
+
/** existsSync and the fs.promises functions with URL paths: each URL
|
|
194
|
+
* converts to a value (url.fileURLToPathValue) after the arguments are
|
|
195
|
+
* evaluated, and the call runs on the converted paths only when every
|
|
196
|
+
* conversion produced a string; otherwise existsSync answers false and an
|
|
197
|
+
* fs.promises function a promise rejected with the first conversion's
|
|
198
|
+
* error. `lowerCall` lowers the call itself, whose URL paths then read the
|
|
199
|
+
* converted values. Null for every other call. */
|
|
200
|
+
export function lowerFallibleFsUrlCall(lowerer, call, bi, lowerCall) {
|
|
201
|
+
const row = bi.module === "fs/promises"
|
|
202
|
+
? FSP_PATHS[bi.member]
|
|
203
|
+
: bi.module === "fs" && bi.member === "existsSync"
|
|
204
|
+
? { paths: [0], pathsFirst: true }
|
|
205
|
+
: undefined;
|
|
206
|
+
if (!row)
|
|
207
|
+
return null;
|
|
208
|
+
const args = call.arguments.nodes;
|
|
209
|
+
const urls = row.paths.filter((i) => isUrlArgument(lowerer, args[i]));
|
|
210
|
+
if (urls.length === 0 || lowerer.fallibleFsCalls.has(call))
|
|
211
|
+
return null;
|
|
212
|
+
const name = bi.module === "fs/promises" ? `fs.promises.${bi.member}` : bi.member;
|
|
213
|
+
if (args.some(ts.isSpreadElement))
|
|
214
|
+
lowerer.noLowering(`${name} with spread arguments and a URL path`, call);
|
|
215
|
+
const first = urls[0];
|
|
216
|
+
// A string path before the URL would be checked in the call itself,
|
|
217
|
+
// after the conversion.
|
|
218
|
+
if (row.paths.some((i) => i < first && args[i] !== undefined))
|
|
219
|
+
lowerer.noLowering(`${name} with a string path before a URL path`, call, HINT);
|
|
220
|
+
if (optionsBeforePaths(lowerer, args, bi.member, row, name) !== null)
|
|
221
|
+
lowerer.noLowering(`${name} with a URL path and options that are not literals`, args[1], HINT);
|
|
222
|
+
const loc = locOf(call);
|
|
223
|
+
const stmts = [];
|
|
224
|
+
const values = new Map();
|
|
225
|
+
const save = (value, label, at) => {
|
|
226
|
+
const slot = lowerer.declareHiddenLocal(label, value.type);
|
|
227
|
+
stmts.push({ kind: "varDecl", localId: slot.id, init: value, loc: locOf(at) });
|
|
228
|
+
return slot.id;
|
|
229
|
+
};
|
|
230
|
+
values.set(first, save(lowerer.lowerExprExpecting(args[first], URL_T), "%fsUrl", args[first]));
|
|
231
|
+
const staged = stagedAfter(lowerer, args, first, name, (_e, i) => urls.includes(i));
|
|
232
|
+
for (const e of staged) {
|
|
233
|
+
// A call lowered again (an array-literal element) evaluates the
|
|
234
|
+
// argument anew; the slot an earlier lowering saved it in is gone.
|
|
235
|
+
lowerer.stagedArguments.delete(e);
|
|
236
|
+
const value = lowerer.lowerExpr(e);
|
|
237
|
+
const slot = save(value, "%fsArg", e);
|
|
238
|
+
lowerer.stagedArguments.set(e, { localId: slot, type: value.type });
|
|
239
|
+
const index = args.findIndex((arg) => stripTypeWrappers(arg) === e);
|
|
240
|
+
if (urls.includes(index))
|
|
241
|
+
values.set(index, slot);
|
|
242
|
+
}
|
|
243
|
+
const results = [];
|
|
244
|
+
for (const i of urls) {
|
|
245
|
+
const url = varRef(values.get(i), URL_T, loc);
|
|
246
|
+
const converted = {
|
|
247
|
+
kind: "libCall",
|
|
248
|
+
fn: "url.fileURLToPathValue",
|
|
249
|
+
args: [url],
|
|
250
|
+
type: DYN,
|
|
251
|
+
loc,
|
|
252
|
+
};
|
|
253
|
+
const local = save(converted, "%fsPathValue", args[i]);
|
|
254
|
+
lowerer.fsPathPlans.set(stripParens(args[i]), { kind: "value", local });
|
|
255
|
+
results.push(local);
|
|
256
|
+
}
|
|
257
|
+
lowerer.fallibleFsCalls.add(call);
|
|
258
|
+
let inner;
|
|
259
|
+
try {
|
|
260
|
+
inner = lowerCall();
|
|
261
|
+
}
|
|
262
|
+
finally {
|
|
263
|
+
lowerer.fallibleFsCalls.delete(call);
|
|
264
|
+
}
|
|
265
|
+
let result = inner;
|
|
266
|
+
for (let k = results.length - 1; k >= 0; k--) {
|
|
267
|
+
const value = varRef(results[k], DYN, loc);
|
|
268
|
+
const failed = bi.module === "fs/promises"
|
|
269
|
+
? { kind: "intrinsic", name: "promise.reject", args: [value], type: inner.type, loc }
|
|
270
|
+
: boolLit(false, loc);
|
|
271
|
+
result = {
|
|
272
|
+
kind: "ternary",
|
|
273
|
+
cond: { kind: "dynTest", test: "string", value, type: BOOL, loc },
|
|
274
|
+
then: result,
|
|
275
|
+
else_: failed,
|
|
276
|
+
type: inner.type,
|
|
277
|
+
loc,
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
return { kind: "seqExpr", stmts, result, type: inner.type, loc };
|
|
168
281
|
}
|
|
169
282
|
/** An fs path argument as a string: a URL converts with fileURLToPath's
|
|
170
283
|
* conversion (url.fileURLToPathUrl), which throws Node's errors for other
|
|
171
|
-
* schemes, hosts and encoded separators. */
|
|
284
|
+
* schemes, hosts and encoded separators, after the checks its plan names. */
|
|
172
285
|
export function lowerFsPath(lowerer, node) {
|
|
173
|
-
if (!isUrlArgument(lowerer, node))
|
|
174
|
-
return lowerer.lowerExprExpecting(node, STRING);
|
|
175
286
|
const loc = locOf(node);
|
|
287
|
+
const plan = lowerer.fsPathPlans.get(stripParens(node));
|
|
288
|
+
if (plan?.kind === "value")
|
|
289
|
+
return { kind: "dynCheck", value: varRef(plan.local, DYN, loc), type: STRING, loc };
|
|
290
|
+
if (!isUrlArgument(lowerer, node)) {
|
|
291
|
+
const value = lowerer.lowerExprExpecting(node, STRING);
|
|
292
|
+
if (plan?.kind !== "save")
|
|
293
|
+
return value;
|
|
294
|
+
const slot = lowerer.declareHiddenLocal("%fsPath", STRING);
|
|
295
|
+
plan.local = slot.id;
|
|
296
|
+
return {
|
|
297
|
+
kind: "seqExpr",
|
|
298
|
+
stmts: [{ kind: "varDecl", localId: slot.id, init: value, loc }],
|
|
299
|
+
result: varRef(slot.id, STRING, loc),
|
|
300
|
+
type: STRING,
|
|
301
|
+
loc,
|
|
302
|
+
};
|
|
303
|
+
}
|
|
176
304
|
const url = lowerer.lowerExprExpecting(node, URL_T);
|
|
177
|
-
|
|
178
|
-
if (staged === undefined)
|
|
305
|
+
if (plan?.kind !== "convert")
|
|
179
306
|
return { kind: "libCall", fn: "url.fileURLToPathUrl", args: [url], type: STRING, loc };
|
|
180
307
|
// The URL and the later arguments with effects, in source order, then
|
|
181
|
-
// the conversion.
|
|
308
|
+
// the checks Node runs first, then the conversion.
|
|
182
309
|
const saved = lowerer.declareHiddenLocal("%fsUrl", URL_T);
|
|
183
310
|
const stmts = [{ kind: "varDecl", localId: saved.id, init: url, loc }];
|
|
184
|
-
for (const arg of staged) {
|
|
311
|
+
for (const arg of plan.staged) {
|
|
185
312
|
lowerer.stagedArguments.delete(arg);
|
|
186
313
|
const value = lowerer.lowerExpr(arg);
|
|
187
314
|
const slot = lowerer.declareHiddenLocal("%fsArg", value.type);
|
|
188
315
|
stmts.push({ kind: "varDecl", localId: slot.id, init: value, loc: locOf(arg) });
|
|
189
316
|
lowerer.stagedArguments.set(arg, { localId: slot.id, type: value.type });
|
|
190
317
|
}
|
|
318
|
+
const check = (fn, args) => {
|
|
319
|
+
stmts.push({ kind: "exprStmt", expr: { kind: "libCall", fn, args, type: VOID, loc }, loc });
|
|
320
|
+
};
|
|
321
|
+
for (const { path, name } of plan.checks) {
|
|
322
|
+
const saved = lowerer.fsPathPlans.get(path);
|
|
323
|
+
if (saved?.kind !== "save" || saved.local === null)
|
|
324
|
+
throw new InternalCompilerError("an fs path checked before it was lowered");
|
|
325
|
+
check("fs.checkPath", [
|
|
326
|
+
varRef(saved.local, STRING, loc),
|
|
327
|
+
{ kind: "strLit", value: name, type: STRING, loc },
|
|
328
|
+
]);
|
|
329
|
+
}
|
|
330
|
+
if (plan.encoding !== null) {
|
|
331
|
+
const slot = lowerer.stagedArguments.get(plan.encoding);
|
|
332
|
+
if (!slot)
|
|
333
|
+
throw new InternalCompilerError("an fs encoding checked before it was saved");
|
|
334
|
+
check("fs.checkReadEncoding", [
|
|
335
|
+
lowerer.coerceToExpected(varRef(slot.localId, slot.type, loc), STRING),
|
|
336
|
+
]);
|
|
337
|
+
}
|
|
191
338
|
return {
|
|
192
339
|
kind: "seqExpr",
|
|
193
340
|
stmts,
|
|
@@ -202,8 +349,13 @@ export function lowerFsPath(lowerer, node) {
|
|
|
202
349
|
loc,
|
|
203
350
|
};
|
|
204
351
|
}
|
|
205
|
-
/** Whether `index` is a path parameter of the fs
|
|
206
|
-
|
|
207
|
-
|
|
352
|
+
/** Whether `index` is a path parameter of the fs or fs.promises function
|
|
353
|
+
* `member`. */
|
|
354
|
+
export function isFsPathParam(module, member, index) {
|
|
355
|
+
if (module === "fs/promises")
|
|
356
|
+
return FSP_PATHS[member]?.paths.includes(index) === true;
|
|
357
|
+
if (module !== "fs")
|
|
358
|
+
return false;
|
|
359
|
+
return ((member === "existsSync" && index === 0) || FS_URL_PATHS[member]?.paths.includes(index) === true);
|
|
208
360
|
}
|
|
209
361
|
//# sourceMappingURL=fs-paths.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs-paths.js","sourceRoot":"","sources":["../../../../src/frontend/lowering/builtins/fs-paths.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fs-paths.js","sourceRoot":"","sources":["../../../../src/frontend/lowering/builtins/fs-paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { lowerReadlineCreateCall } from "./readline.js";
|
|
|
3
3
|
import { lowerDiagnosticsChannelCall } from "./async-context.js";
|
|
4
4
|
import { lowerTimersPromisesCall } from "./timers.js";
|
|
5
5
|
import { lowerFsCallbackCall, lowerFsCpCall, lowerFsLinkOrStatfsCall, lowerFsTimestampCall, lowerFsVectorOrTruncateCall, lowerFsNumericOpenCall, lowerFsPromisesOpenCall, lowerFsRenameCallbackCall, lowerFsReadSyncCall, lowerFsWriteSyncCall, lowerFsReadDescriptorCall, lowerFsEncodedRead, lowerFsPromisesEncodedRead, lowerFsMkdirSyncCall, lowerFsOpendirCall, lowerFsStreamCreate, lowerFsPromisesMkdirCall, lowerFsRemoveCall, lowerFsWriteBytesCall, lowerFsWriteOptionsCall, lowerFsReadPathCall, } from "./filesystem-calls.js";
|
|
6
|
-
import { checkFsUrlPaths, isFsPathParam, lowerFsPath } from "./fs-paths.js";
|
|
6
|
+
import { checkFsUrlPaths, isFsPathParam, lowerFallibleFsUrlCall, lowerFsPath } from "./fs-paths.js";
|
|
7
7
|
import { lowerBufferEncodingCall } from "./text-codecs.js";
|
|
8
8
|
import { lowerUtilTypeCall } from "./util-types.js";
|
|
9
9
|
import { InternalCompilerError } from "../../../errors.js";
|
|
@@ -22,6 +22,9 @@ import { lowerFsGlobCallbackCall, lowerFsGlobSyncCall, lowerFspGlobCall } from "
|
|
|
22
22
|
import { lowerV8HeapStatisticsCall } from "./v8.js";
|
|
23
23
|
export function lowerBuiltinModuleCall(lowerer, expr, bi, fn, loc) {
|
|
24
24
|
const name = ts.getTextOfNode(expr.expression);
|
|
25
|
+
const fallible = lowerFallibleFsUrlCall(lowerer, expr, bi, () => lowerBuiltinModuleCall(lowerer, expr, bi, fn, loc));
|
|
26
|
+
if (fallible)
|
|
27
|
+
return fallible;
|
|
25
28
|
checkFsUrlPaths(lowerer, expr, bi);
|
|
26
29
|
if (bi.module === "util/types") {
|
|
27
30
|
return lowerUtilTypeCall(lowerer, expr, bi, loc, name);
|
|
@@ -196,7 +199,7 @@ export function lowerBuiltinModuleCall(lowerer, expr, bi, fn, loc) {
|
|
|
196
199
|
if (bi.module === "fs/promises" &&
|
|
197
200
|
bi.member === "readFile" &&
|
|
198
201
|
expr.arguments.nodes.length === 1) {
|
|
199
|
-
const path = lowerer
|
|
202
|
+
const path = lowerFsPath(lowerer, expr.arguments.nodes[0]);
|
|
200
203
|
return {
|
|
201
204
|
kind: "libCall",
|
|
202
205
|
fn: "fsp.readFileBytes",
|
|
@@ -375,7 +378,7 @@ export function lowerBuiltinModuleCall(lowerer, expr, bi, fn, loc) {
|
|
|
375
378
|
args = lowerer.completeArgs(expr.arguments.nodes, shapes, loc, expr);
|
|
376
379
|
}
|
|
377
380
|
else {
|
|
378
|
-
args = expr.arguments.nodes.map((a, i) => bi.module
|
|
381
|
+
args = expr.arguments.nodes.map((a, i) => isFsPathParam(bi.module, bi.member, i)
|
|
379
382
|
? lowerFsPath(lowerer, a)
|
|
380
383
|
: lowerer.lowerExprExpecting(a, fn.params[i]));
|
|
381
384
|
for (let i = args.length; i < fn.params.length; i++) {
|