functionalscript 0.46.1 → 0.47.0
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/fjs/basen/cbase32/module.f.mjs +18 -10
- package/fjs/basen/cbase32/proof.f.d.mts +3 -0
- package/fjs/basen/cbase32/proof.f.mjs +24 -2
- package/fjs/basen/proof.f.mjs +8 -16
- package/fjs/bnf/ll1/proof.f.d.mts +2 -0
- package/fjs/bnf/ll1/proof.f.mjs +33 -18
- package/fjs/bnf/module.f.d.mts +2 -2
- package/fjs/bnf/module.f.mjs +2 -2
- package/fjs/cas/proof.f.mjs +4 -26
- package/fjs/ci/common/module.f.mjs +6 -0
- package/fjs/ci/config/module.f.d.mts +7 -7
- package/fjs/ci/config/module.f.mjs +7 -7
- package/fjs/cli/module.f.mjs +14 -10
- package/fjs/crypto/vdf/module.f.d.mts +0 -1
- package/fjs/crypto/vdf/module.f.mjs +3 -14
- package/fjs/dev/module.f.mjs +10 -20
- package/fjs/djs/parser/module.f.d.mts +101 -53
- package/fjs/djs/parser/module.f.mjs +732 -525
- package/fjs/djs/parser/proof.f.d.mts +6 -0
- package/fjs/djs/parser/proof.f.mjs +315 -11
- package/fjs/djs/parser/types.d.ts +29 -2
- package/fjs/djs/tokenizer/module.f.mjs +122 -105
- package/fjs/djs/tokenizer/proof.f.mjs +17 -0
- package/fjs/djs/transpiler/module.f.mjs +4 -5
- package/fjs/djs/transpiler/proof.f.d.mts +2 -0
- package/fjs/djs/transpiler/proof.f.mjs +25 -0
- package/fjs/edag/amnesia/module.f.d.mts +20 -0
- package/fjs/edag/amnesia/module.f.mjs +303 -0
- package/fjs/edag/amnesia/proof.f.d.mts +79 -0
- package/fjs/edag/amnesia/proof.f.mjs +573 -0
- package/fjs/edag/amnesia/types.d.ts +15 -0
- package/fjs/edag/module.f.d.mts +410 -0
- package/fjs/edag/module.f.mjs +559 -0
- package/fjs/edag/proof.f.d.mts +116 -0
- package/fjs/edag/proof.f.mjs +686 -0
- package/fjs/edag/types.d.ts +55 -0
- package/fjs/effects/node/memory/module.d.mts +37 -3
- package/fjs/effects/node/memory/module.mjs +38 -4
- package/fjs/effects/node/memory/proof.d.mts +5 -2
- package/fjs/effects/node/memory/proof.mjs +36 -6
- package/fjs/effects/node/module.d.mts +9 -1
- package/fjs/effects/node/module.f.d.mts +39 -0
- package/fjs/effects/node/module.f.mjs +46 -0
- package/fjs/effects/node/module.mjs +234 -32
- package/fjs/effects/node/types.d.ts +28 -2
- package/fjs/effects/node/virtual/module.f.d.mts +19 -10
- package/fjs/effects/node/virtual/module.f.mjs +246 -32
- package/fjs/effects/node/virtual/proof.f.d.mts +17 -2
- package/fjs/effects/node/virtual/proof.f.mjs +232 -8
- package/fjs/effects/node/virtual/types.d.ts +57 -1
- package/fjs/emergent_testing/browser/proof.d.mts +55 -0
- package/fjs/emergent_testing/browser/proof.mjs +352 -0
- package/fjs/emergent_testing/browser/species.proof.d.mts +4 -0
- package/fjs/emergent_testing/browser/species.proof.mjs +45 -0
- package/fjs/emergent_testing/browser.d.mts +79 -0
- package/fjs/emergent_testing/browser.mjs +432 -0
- package/fjs/emergent_testing/proof.f.d.mts +1 -1
- package/fjs/emergent_testing/proof.f.mjs +2 -2
- package/fjs/js/string_escape/module.f.d.mts +47 -0
- package/fjs/js/string_escape/module.f.mjs +95 -0
- package/fjs/js/string_escape/proof.f.d.mts +8 -0
- package/fjs/js/string_escape/proof.f.mjs +68 -0
- package/fjs/js/tokenizer/module.f.mjs +14 -12
- package/fjs/mcp/cas/module.f.d.mts +1 -7
- package/fjs/mcp/cas/module.f.mjs +24 -15
- package/fjs/mcp/evo/module.f.mjs +9 -24
- package/fjs/mcp/module.f.d.mts +3 -1
- package/fjs/mcp/module.f.mjs +4 -2
- package/fjs/media/json/rtti/module.f.d.mts +2 -2
- package/fjs/media/json/rtti/module.f.mjs +1 -1
- package/fjs/media/json/schema/module.f.d.mts +15 -5
- package/fjs/media/json/schema/module.f.mjs +42 -15
- package/fjs/media/json/schema/proof.f.d.mts +10 -1
- package/fjs/media/json/schema/proof.f.mjs +88 -16
- package/fjs/media/json/serializer/module.f.mjs +14 -26
- package/fjs/media/json/types.d.ts +1 -1
- package/fjs/media/lock/module.f.d.mts +8 -3
- package/fjs/media/lock/module.f.mjs +9 -3
- package/fjs/media/lock/proof.f.d.mts +1 -1
- package/fjs/media/lock/proof.f.mjs +2 -2
- package/fjs/media/lock/types.d.ts +1 -3
- package/fjs/media/module.f.d.mts +20 -13
- package/fjs/media/module.f.mjs +29 -16
- package/fjs/media/note/module.f.d.mts +14 -7
- package/fjs/media/note/module.f.mjs +14 -7
- package/fjs/media/note/proof.f.mjs +1 -1
- package/fjs/media/proof.f.mjs +5 -5
- package/fjs/media/revision/module.f.d.mts +8 -2
- package/fjs/media/revision/module.f.mjs +9 -3
- package/fjs/media/revision/proof.f.mjs +1 -1
- package/fjs/media/revision/types.d.ts +1 -1
- package/fjs/media/type/module.f.d.mts +20 -0
- package/fjs/media/type/module.f.mjs +74 -0
- package/fjs/media/type/proof.f.d.mts +5 -0
- package/fjs/media/type/proof.f.mjs +24 -1
- package/fjs/module.f.mjs +6 -0
- package/fjs/path/module.f.d.mts +60 -3
- package/fjs/path/module.f.mjs +138 -14
- package/fjs/path/proof.f.d.mts +3 -0
- package/fjs/path/proof.f.mjs +298 -2
- package/fjs/protocol/json_rpc/module.f.d.mts +65 -28
- package/fjs/protocol/json_rpc/module.f.mjs +49 -13
- package/fjs/protocol/json_rpc/proof.f.d.mts +4 -0
- package/fjs/protocol/json_rpc/proof.f.mjs +29 -0
- package/fjs/protocol/json_rpc/types.d.ts +12 -2
- package/fjs/protocol/mcp/module.f.d.mts +89 -54
- package/fjs/protocol/mcp/module.f.mjs +110 -56
- package/fjs/protocol/mcp/proof.f.d.mts +13 -0
- package/fjs/protocol/mcp/proof.f.mjs +107 -7
- package/fjs/protocol/mcp/stdio/module.f.mjs +3 -4
- package/fjs/protocol/mcp/stdio/proof.f.mjs +2 -2
- package/fjs/protocol/mcp/types.d.ts +14 -2
- package/fjs/text/utf8/module.f.mjs +27 -1
- package/fjs/text/utf8/proof.f.mjs +37 -0
- package/fjs/types/array/module.f.mjs +18 -11
- package/fjs/types/array/proof.f.mjs +27 -1
- package/fjs/types/bigfloat/module.f.d.mts +48 -9
- package/fjs/types/bigfloat/module.f.mjs +147 -59
- package/fjs/types/bigfloat/proof.f.d.mts +2 -0
- package/fjs/types/bigfloat/proof.f.mjs +136 -4
- package/fjs/types/bigfloat/types.d.ts +17 -0
- package/fjs/types/function/module.f.d.mts +11 -2
- package/fjs/types/function/module.f.mjs +20 -2
- package/fjs/types/function/proof.f.mjs +5 -1
- package/fjs/types/phantom/types.d.ts +21 -0
- package/fjs/types/result/module.f.d.mts +4 -4
- package/fjs/types/result/module.f.mjs +2 -2
- package/fjs/types/result/proof.f.d.mts +6 -2
- package/fjs/types/result/proof.f.mjs +17 -1
- package/fjs/types/rtti/common/module.f.d.mts +78 -5
- package/fjs/types/rtti/common/module.f.mjs +168 -3
- package/fjs/types/rtti/common/proof.f.d.mts +14 -0
- package/fjs/types/rtti/common/proof.f.mjs +61 -2
- package/fjs/types/rtti/common/types.d.ts +23 -1
- package/fjs/types/rtti/data/module.f.d.mts +57 -1
- package/fjs/types/rtti/data/module.f.mjs +241 -47
- package/fjs/types/rtti/data/proof.f.d.mts +10 -0
- package/fjs/types/rtti/data/proof.f.mjs +272 -39
- package/fjs/types/rtti/data/types.d.ts +14 -7
- package/fjs/types/rtti/host.proof.d.mts +33 -0
- package/fjs/types/rtti/host.proof.mjs +170 -0
- package/fjs/types/rtti/module.f.d.mts +51 -6
- package/fjs/types/rtti/module.f.mjs +50 -3
- package/fjs/types/rtti/parse/module.f.d.mts +31 -24
- package/fjs/types/rtti/parse/module.f.mjs +197 -59
- package/fjs/types/rtti/parse/proof.f.d.mts +37 -2
- package/fjs/types/rtti/parse/proof.f.mjs +171 -47
- package/fjs/types/rtti/proof.f.d.mts +6 -0
- package/fjs/types/rtti/proof.f.mjs +42 -1
- package/fjs/types/rtti/ts/module.f.d.mts +9 -3
- package/fjs/types/rtti/ts/module.f.mjs +68 -15
- package/fjs/types/rtti/ts/proof.f.d.mts +42 -2
- package/fjs/types/rtti/ts/proof.f.mjs +139 -6
- package/fjs/types/rtti/ts/types.d.ts +164 -16
- package/fjs/types/rtti/types.d.ts +31 -3
- package/fjs/types/rtti/validate/module.f.d.mts +42 -25
- package/fjs/types/rtti/validate/module.f.mjs +187 -53
- package/fjs/types/rtti/validate/proof.f.d.mts +28 -2
- package/fjs/types/rtti/validate/proof.f.mjs +430 -75
- package/fjs/types/ts/types.d.ts +4 -0
- package/fjs/web/module.f.d.mts +115 -0
- package/fjs/web/module.f.mjs +581 -0
- package/fjs/web/proof.f.d.mts +39 -0
- package/fjs/web/proof.f.mjs +413 -0
- package/fjs/web/types.d.ts +39 -0
- package/fjs/website/browser-prepare.d.mts +5 -0
- package/fjs/website/browser-prepare.mjs +115 -0
- package/fjs/website/browser-source.d.mts +37 -0
- package/fjs/website/browser-source.mjs +202 -0
- package/fjs/website/browser-source.proof.d.mts +31 -0
- package/fjs/website/browser-source.proof.mjs +162 -0
- package/fjs/website/browser.d.mts +5 -0
- package/fjs/website/browser.mjs +8 -0
- package/fjs/website/module.f.d.mts +3 -3
- package/fjs/website/module.f.mjs +62 -9
- package/fjs/website/proof.f.d.mts +4 -0
- package/fjs/website/proof.f.mjs +18 -3
- package/package.json +2 -3
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module
|
|
3
|
+
*
|
|
4
|
+
* @import { Assert } from '../asserts/types.ts'
|
|
5
|
+
* @import { Check, Check3 } from '../types/rtti/ts/types.ts'
|
|
6
|
+
* @import {
|
|
7
|
+
* Array,
|
|
8
|
+
* Exp,
|
|
9
|
+
* Primitive,
|
|
10
|
+
* Property,
|
|
11
|
+
* NumberCast,
|
|
12
|
+
* Object,
|
|
13
|
+
* PropertyLambda,
|
|
14
|
+
* OptionLambda,
|
|
15
|
+
* OptionPropertyLambda,
|
|
16
|
+
* Call,
|
|
17
|
+
* Dot,
|
|
18
|
+
* OptionDot,
|
|
19
|
+
* OptionCall,
|
|
20
|
+
* Comma,
|
|
21
|
+
* Op2Id,
|
|
22
|
+
* Op2,
|
|
23
|
+
* Op1Id,
|
|
24
|
+
* Op1,
|
|
25
|
+
* Op0Id,
|
|
26
|
+
* Op0,
|
|
27
|
+
* Spread,
|
|
28
|
+
* Items,
|
|
29
|
+
* Properties,
|
|
30
|
+
* Exps,
|
|
31
|
+
* } from './types.ts'
|
|
32
|
+
* @import { Phantom } from '../types/phantom/types.ts'
|
|
33
|
+
*/
|
|
34
|
+
import type { Assert } from '../asserts/types.ts';
|
|
35
|
+
import type { Check, Check3 } from '../types/rtti/ts/types.ts';
|
|
36
|
+
import type { Array, Exp, Primitive, Property, NumberCast, Object, PropertyLambda, OptionLambda, OptionPropertyLambda, Call, Dot, OptionDot, OptionCall, Comma, Op2Id, Op2, Op1Id, Op1, Op0Id, Op0, Spread, Items, Properties, Exps } from './types.ts';
|
|
37
|
+
import type { Phantom } from '../types/phantom/types.ts';
|
|
38
|
+
/**
|
|
39
|
+
* Every tuple here is closed — the members it declares and nothing else, which
|
|
40
|
+
* is what a bare `Tuple` says ("Structs and tuples are closed" in
|
|
41
|
+
* `../types/rtti/README.md`). That is load-bearing rather than incidental: the
|
|
42
|
+
* chain grammar below claims each JS chain has exactly one spelling, and an
|
|
43
|
+
* `open` tuple would let any node carry a trailing element nothing reads,
|
|
44
|
+
* splitting one function into unboundedly many graphs. So do **not** wrap any
|
|
45
|
+
* of these in `open`. No operand of any node is optional either: a chain step
|
|
46
|
+
* that does no further work carries an explicit `null` continuation, never a
|
|
47
|
+
* missing position.
|
|
48
|
+
*
|
|
49
|
+
* Do not call `parse(exp)` or rely on `validate(exp)` rejecting cycles
|
|
50
|
+
* without reading `../types/rtti/todo/identity-aware-parse.md` first —
|
|
51
|
+
* neither is identity-aware, and that TODO covers why and what's missing.
|
|
52
|
+
*/
|
|
53
|
+
/**
|
|
54
|
+
* Written out explicitly, not `@type {const}`: that can't apply to the
|
|
55
|
+
* arrow function itself (TS1355, literals only), and applied to just the
|
|
56
|
+
* returned array it still can't resolve the cycle back through `array`/
|
|
57
|
+
* `object`/`op0`/... to `exp` — declaration emit elides it to `any`.
|
|
58
|
+
*
|
|
59
|
+
* @type {() => readonly['or',
|
|
60
|
+
* typeof primitive,
|
|
61
|
+
* typeof array,
|
|
62
|
+
* typeof object,
|
|
63
|
+
* typeof dot,
|
|
64
|
+
* typeof call,
|
|
65
|
+
* typeof optionDot,
|
|
66
|
+
* typeof optionCall,
|
|
67
|
+
* typeof comma,
|
|
68
|
+
* typeof op2,
|
|
69
|
+
* typeof op1,
|
|
70
|
+
* typeof op0,
|
|
71
|
+
* ]}
|
|
72
|
+
*/
|
|
73
|
+
declare const _exp: () => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0];
|
|
74
|
+
/** @type {Phantom<typeof _exp, Exp>} */
|
|
75
|
+
export declare const exp: Phantom<typeof _exp, Exp>;
|
|
76
|
+
export type _ExpAssert = Assert<Check3<Exp, typeof _exp, typeof exp>>;
|
|
77
|
+
/** @typedef {Assert<Check3<Exp, typeof _exp, typeof exp>>} _ExpAssert */
|
|
78
|
+
/**
|
|
79
|
+
* Bare constant values — no tag, no operands, not an operation node at all.
|
|
80
|
+
* `undefined` is deliberately not among them: its EDAG representation,
|
|
81
|
+
* `['undefined']`, *is* a tagged operation node (so a bare `undefined` stays
|
|
82
|
+
* distinguishable from a missing tuple position), which puts it in the
|
|
83
|
+
* `op0`/`op1`/`op2` grouping below by the same arity rule as every other
|
|
84
|
+
* operation, not here.
|
|
85
|
+
*/
|
|
86
|
+
export declare const primitive: import("../types/rtti/types.ts").Or<readonly [null, import("../types/rtti/types.ts")._Type0<"boolean">, import("../types/rtti/types.ts")._Type0<"number">, import("../types/rtti/types.ts")._Type0<"string">, import("../types/rtti/types.ts").Bigint]>;
|
|
87
|
+
export type _Primitive = Assert<Check<Primitive, typeof primitive>>;
|
|
88
|
+
/** @typedef {Assert<Check<Primitive, typeof primitive>>} _Primitive */
|
|
89
|
+
export declare const exps: import("../types/rtti/types.ts").Type1<"array", Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>>;
|
|
90
|
+
export type _Exps = Assert<Check<Exps, typeof exps>>;
|
|
91
|
+
/** @typedef {Assert<Check<Exps, typeof exps>>} _Exps */
|
|
92
|
+
/**
|
|
93
|
+
* ```js
|
|
94
|
+
* [...exp] // as an array item, through `items` — see `array`
|
|
95
|
+
* {...exp} // as an object property, through `properties` — see `object`
|
|
96
|
+
* ```
|
|
97
|
+
*
|
|
98
|
+
* Not a top-level `Exp`: `spread` only appears as an `items`/`properties`
|
|
99
|
+
* alternative, never as an operand an operation node can hold directly.
|
|
100
|
+
*/
|
|
101
|
+
export declare const spread: readonly ['...', Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>];
|
|
102
|
+
export type _Spread = Assert<Check<Spread, typeof spread>>;
|
|
103
|
+
/** @typedef {Assert<Check<Spread, typeof spread>>} _Spread */
|
|
104
|
+
/** An array element: a plain `exp`, or a `spread` splicing another array in. */
|
|
105
|
+
export declare const items: import("../types/rtti/types.ts").Or<readonly [Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>, readonly ["...", Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>]]>;
|
|
106
|
+
export type _Items = Assert<Check<Items, typeof items>>;
|
|
107
|
+
/** @typedef {Assert<Check<Items, typeof items>>} _Items */
|
|
108
|
+
/**
|
|
109
|
+
* ```js
|
|
110
|
+
* [exp0, exp1]
|
|
111
|
+
* [exp0, ...exp1]
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
export declare const array: readonly ['[]', import("../types/rtti/types.ts").Type1<"array", import("../types/rtti/types.ts").Or<readonly [Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>, readonly ["...", Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>]]>>];
|
|
115
|
+
export type _Array = Assert<Check<Array, typeof array>>;
|
|
116
|
+
/** @typedef {Assert<Check<Array, typeof array>>} _Array */
|
|
117
|
+
/**
|
|
118
|
+
* A structural operand of `object`, not an independently evaluated EDAG
|
|
119
|
+
* node: nothing ever evaluates a descriptor as a value, so whether one is
|
|
120
|
+
* shared by reference or written twice with equal content is unobservable,
|
|
121
|
+
* and conforming VMs may legally differ on it. Only the `key` and `value`
|
|
122
|
+
* operands are real nodes, their identities shared normally.
|
|
123
|
+
*
|
|
124
|
+
* The key stays `exp`, not narrowed to a string constant, and its evaluated
|
|
125
|
+
* value is coerced via JS `ToPropertyKey` when the property is defined —
|
|
126
|
+
* see `../../todo/edag-stage1-discussion.md` subject 4.
|
|
127
|
+
*/
|
|
128
|
+
export declare const property: readonly [':', Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>, Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>];
|
|
129
|
+
export type _Property = Assert<Check<Property, typeof property>>;
|
|
130
|
+
/** @typedef {Assert<Check<Property, typeof property>>} _Property */
|
|
131
|
+
/** An object entry: a plain `property`, or a `spread` splicing another object in. */
|
|
132
|
+
export declare const properties: import("../types/rtti/types.ts").Or<readonly [readonly [":", Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>, Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>], readonly ["...", Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>]]>;
|
|
133
|
+
export type _Properties = Assert<Check<Properties, typeof properties>>;
|
|
134
|
+
/** @typedef {Assert<Check<Properties, typeof properties>>} _Properties */
|
|
135
|
+
/**
|
|
136
|
+
* ```js
|
|
137
|
+
* {
|
|
138
|
+
* a: exp0,
|
|
139
|
+
* "a": exp1,
|
|
140
|
+
* [exp2]: exp3,
|
|
141
|
+
* ...exp4,
|
|
142
|
+
* }
|
|
143
|
+
* ```
|
|
144
|
+
*
|
|
145
|
+
* The entries are an ordered sequence, applied as if in written order —
|
|
146
|
+
* never sorted or deduplicated: order is observable (enumeration,
|
|
147
|
+
* overwrites), and duplicate keys are allowed with the later entry winning,
|
|
148
|
+
* which is also required once computed keys are admitted, since key
|
|
149
|
+
* equality may not be decidable at validation time.
|
|
150
|
+
*
|
|
151
|
+
* `__proto__` is a data key, never a prototype assignment: an entry whose
|
|
152
|
+
* key evaluates to `__proto__` defines an ordinary own property, and a
|
|
153
|
+
* printer must spell it computed — `{ ["__proto__"]: value }`, the only
|
|
154
|
+
* object-literal form that reproduces it; the identifier and string
|
|
155
|
+
* spellings assign a prototype instead and lose the property. See "the
|
|
156
|
+
* `__proto__` key" in `../../spec/README.md`.
|
|
157
|
+
*/
|
|
158
|
+
export declare const object: readonly ['{}', import("../types/rtti/types.ts").Type1<"array", import("../types/rtti/types.ts").Or<readonly [readonly [":", Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>, Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>], readonly ["...", Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>]]>>];
|
|
159
|
+
export type _Object = Assert<Check<Object, typeof object>>;
|
|
160
|
+
/** @typedef {Assert<Check<Object, typeof object>>} _Object */
|
|
161
|
+
/**
|
|
162
|
+
* ```js
|
|
163
|
+
* Number(exp)
|
|
164
|
+
* ```
|
|
165
|
+
*/
|
|
166
|
+
export declare const numberCast: readonly ['Number', Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>];
|
|
167
|
+
export type _NumberCast = Assert<Check<NumberCast, typeof numberCast>>;
|
|
168
|
+
/**
|
|
169
|
+
* @typedef {Assert<Check<NumberCast, typeof numberCast>>} _NumberCast
|
|
170
|
+
*/
|
|
171
|
+
/**
|
|
172
|
+
* A property/index operand: a plain `string` or `number` key, or a `Number`
|
|
173
|
+
* cast around a computed `exp` (`arr[i]`, where `i` is itself an expression).
|
|
174
|
+
*
|
|
175
|
+
* Every naming position in the chain nodes below uses this rather than a bare
|
|
176
|
+
* `exp` — `.`, `?.`, and the `|.` step. Widening them to `exp` was weighed and
|
|
177
|
+
* rejected: `exp` and `index` overlap (`['Number', e]` is both a `numberCast`
|
|
178
|
+
* and an `op1`), so the wider spelling would buy a second reading of every
|
|
179
|
+
* computed key without buying any expression a `Number` cast cannot already
|
|
180
|
+
* name.
|
|
181
|
+
*
|
|
182
|
+
* Does not exclude `'constructor'`/`'__proto__'` — TODO, see
|
|
183
|
+
* `../types/rtti/todo/excluded-string-values.md`.
|
|
184
|
+
*/
|
|
185
|
+
export declare const index: import("../types/rtti/types.ts").Or<readonly [readonly ["Number", Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>], import("../types/rtti/types.ts")._Type0<"string">, import("../types/rtti/types.ts")._Type0<"number">]>;
|
|
186
|
+
/**
|
|
187
|
+
* The continuation of a step that produced a plain value **inside** an open
|
|
188
|
+
* region — what `?.()` owns, and what a call step hands on.
|
|
189
|
+
*
|
|
190
|
+
* `|()` stays in the region because the region has to cover the call:
|
|
191
|
+
* `a?.(...b)(...c)` skips the second call too. `|.` stays for the same
|
|
192
|
+
* reason, and hands on a receiver. Neither `|?.()` nor `|!()` is here: with P
|
|
193
|
+
* dead there is nothing for a guard or a close to protect that a nested node
|
|
194
|
+
* would not protect equally, so admitting them would only add a second
|
|
195
|
+
* spelling.
|
|
196
|
+
*
|
|
197
|
+
* @type {() => readonly['or',
|
|
198
|
+
* null,
|
|
199
|
+
* readonly['|()', typeof exp, typeof optionLambda],
|
|
200
|
+
* readonly['|.', typeof index, typeof optionPropertyLambda],
|
|
201
|
+
* ]}
|
|
202
|
+
*/
|
|
203
|
+
declare const _optionLambda: () => readonly ['or', null, readonly ['|()', typeof exp, typeof optionLambda], readonly ['|.', typeof index, typeof optionPropertyLambda]];
|
|
204
|
+
/** @type {Phantom<typeof _optionLambda, OptionLambda>} */
|
|
205
|
+
export declare const optionLambda: Phantom<typeof _optionLambda, OptionLambda>;
|
|
206
|
+
export type _OptionLambda = Assert<Check3<OptionLambda, typeof _optionLambda, typeof optionLambda>>;
|
|
207
|
+
/**
|
|
208
|
+
* @typedef {Assert<Check3<OptionLambda, typeof _optionLambda, typeof optionLambda>>} _OptionLambda
|
|
209
|
+
*/
|
|
210
|
+
/**
|
|
211
|
+
* The continuation of a property step **inside** an open region — both bits
|
|
212
|
+
* live, so this is the state with every production.
|
|
213
|
+
*
|
|
214
|
+
* Its three call forms are a complete taxonomy of how a call can relate to
|
|
215
|
+
* the region around it, and there is no fourth:
|
|
216
|
+
*
|
|
217
|
+
* ```js
|
|
218
|
+
* a?.b(...c) // ['?.', a, 'b', ['|()', c, null]] inherits the guard
|
|
219
|
+
* a?.b?.(...c) // ['?.', a, 'b', ['|?.()', c, null]] adds its own
|
|
220
|
+
* (a?.b)(...c) // ['?.', a, 'b', ['|!()', c, null]] escapes it
|
|
221
|
+
* ```
|
|
222
|
+
*
|
|
223
|
+
* `|!()` is the one step a short-circuit does not skip: the parentheses ended
|
|
224
|
+
* the region, so the `undefined` it produced is what gets called. `|!` pairs
|
|
225
|
+
* only with `()` because only a call consumes a receiver — a close-then-access
|
|
226
|
+
* `|!.` would just be a `dot` over the whole node, which nesting already
|
|
227
|
+
* spells.
|
|
228
|
+
*
|
|
229
|
+
* @type {() => readonly['or',
|
|
230
|
+
* null,
|
|
231
|
+
* readonly['|()', typeof exp, typeof optionLambda],
|
|
232
|
+
* readonly['|.', typeof index, typeof optionPropertyLambda],
|
|
233
|
+
* readonly['|?.()', typeof exp, typeof optionLambda],
|
|
234
|
+
* readonly['|!()', typeof exp, null],
|
|
235
|
+
* ]}
|
|
236
|
+
*/
|
|
237
|
+
declare const _optionPropertyLambda: () => readonly ['or', null, readonly ['|()', typeof exp, typeof optionLambda], readonly ['|.', typeof index, typeof optionPropertyLambda], readonly ['|?.()', typeof exp, typeof optionLambda], readonly ['|!()', typeof exp, null]];
|
|
238
|
+
/** @type {Phantom<typeof _optionPropertyLambda, OptionPropertyLambda>} */
|
|
239
|
+
export declare const optionPropertyLambda: Phantom<typeof _optionPropertyLambda, OptionPropertyLambda>;
|
|
240
|
+
export type _OptionPropertyLambda = Assert<Check3<OptionPropertyLambda, typeof _optionPropertyLambda, typeof optionPropertyLambda>>;
|
|
241
|
+
/**
|
|
242
|
+
* @typedef {Assert<Check3<OptionPropertyLambda, typeof _optionPropertyLambda, typeof optionPropertyLambda>>} _OptionPropertyLambda
|
|
243
|
+
*/
|
|
244
|
+
/**
|
|
245
|
+
* The continuation of a `dot` — a receiver is live and no region is open.
|
|
246
|
+
*
|
|
247
|
+
* Only the two call steps are here, because only a call can use a receiver.
|
|
248
|
+
* `|()` is terminal: with the receiver spent and no region to be inside, what
|
|
249
|
+
* follows an `a.b(...c)` is an ordinary expression over an ordinary value, so
|
|
250
|
+
* it nests. `|?.()` continues, since it opens a region that then owns the
|
|
251
|
+
* rest of the chain. There is no `|.` production, which is what gives a plain
|
|
252
|
+
* property path exactly one spelling: `a.b.c` is nested `dot`s and nothing
|
|
253
|
+
* else.
|
|
254
|
+
*
|
|
255
|
+
* The terminal's third operand is a literal `null`, not the absence of one.
|
|
256
|
+
* Uniform arity is what keeps closedness able to tell it from `['|()', c, k]`:
|
|
257
|
+
* were the terminal two elements long, a continuation handed to a
|
|
258
|
+
* `propertyLambda` slot would be read as the terminal with the rest silently
|
|
259
|
+
* dropped.
|
|
260
|
+
*/
|
|
261
|
+
export declare const propertyLambda: import("../types/rtti/types.ts").Or<readonly [null, readonly ["|()", Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>, null], readonly ["|?.()", Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>, Phantom<() => readonly ['or', null, readonly ['|()', typeof exp, typeof optionLambda], readonly ['|.', typeof index, typeof optionPropertyLambda]], OptionLambda>]]>;
|
|
262
|
+
export type _PropertyLambda = Assert<Check<PropertyLambda, typeof propertyLambda>>;
|
|
263
|
+
/**
|
|
264
|
+
* @typedef {Assert<Check<PropertyLambda, typeof propertyLambda>>} _PropertyLambda
|
|
265
|
+
*/
|
|
266
|
+
/**
|
|
267
|
+
* ```js
|
|
268
|
+
* exp0(...exp1)
|
|
269
|
+
* ```
|
|
270
|
+
*
|
|
271
|
+
* A call with **no** receiver and no region: the callee is an ordinary
|
|
272
|
+
* expression, so a chain never reaches this node — `a.b(...c)` is a `dot`
|
|
273
|
+
* whose continuation is the call, and `(0, a.b)(...c)` is this node over a
|
|
274
|
+
* complete `dot`. The two differ, which is why the distinction is structural.
|
|
275
|
+
*
|
|
276
|
+
* The last operand is one node evaluating to the complete argument array,
|
|
277
|
+
* not a literal operand list: `f(a, b)` is `['()', f, ['[]', [a, b]]]`,
|
|
278
|
+
* while spread `f(...xs)` is `['()', f, xs]`.
|
|
279
|
+
*/
|
|
280
|
+
export declare const call: readonly ['()', Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>, Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>];
|
|
281
|
+
export type _Call = Assert<Check<Call, typeof call>>;
|
|
282
|
+
/** @typedef {Assert<Check<Call, typeof call>>} _Call */
|
|
283
|
+
/**
|
|
284
|
+
* ```js
|
|
285
|
+
* exp0.k // ['.', exp0, 'k', null]
|
|
286
|
+
* exp0[exp1] // ['.', exp0, ['Number', exp1], null]
|
|
287
|
+
* exp0.k(...exp2) // ['.', exp0, 'k', ['|()', exp2, null]]
|
|
288
|
+
* exp0.k?.(...exp2) // ['.', exp0, 'k', ['|?.()', exp2, null]]
|
|
289
|
+
* ```
|
|
290
|
+
*
|
|
291
|
+
* The naming operand is an `index`, not an `exp`, so a computed key is spelled
|
|
292
|
+
* `['Number', exp]`: `['.', a, ['args'], null]` does not validate.
|
|
293
|
+
*
|
|
294
|
+
* Property access, owning whatever the receiver it produces is used for. The
|
|
295
|
+
* `null` continuation is the plain read — the receiver is dropped, as JS
|
|
296
|
+
* drops it — and the two call continuations are the only things that can use
|
|
297
|
+
* it.
|
|
298
|
+
*/
|
|
299
|
+
export declare const dot: readonly ['.', Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>, import("../types/rtti/types.ts").Or<readonly [readonly ["Number", Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>], import("../types/rtti/types.ts")._Type0<"string">, import("../types/rtti/types.ts")._Type0<"number">]>, import("../types/rtti/types.ts").Or<readonly [null, readonly ["|()", Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>, null], readonly ["|?.()", Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>, Phantom<() => readonly ['or', null, readonly ['|()', typeof exp, typeof optionLambda], readonly ['|.', typeof index, typeof optionPropertyLambda]], OptionLambda>]]>];
|
|
300
|
+
export type _Dot = Assert<Check<Dot, typeof dot>>;
|
|
301
|
+
/** @typedef {Assert<Check<Dot, typeof dot>>} _Dot */
|
|
302
|
+
/**
|
|
303
|
+
* ```js
|
|
304
|
+
* exp0?.k // ['?.', exp0, 'k', null]
|
|
305
|
+
* exp0?.[exp1] // ['?.', exp0, ['Number', exp1], null]
|
|
306
|
+
* exp0?.k.m // ['?.', exp0, 'k', ['|.', 'm', null]]
|
|
307
|
+
* (exp0?.k)(...exp2) // ['?.', exp0, 'k', ['|!()', exp2, null]]
|
|
308
|
+
* ```
|
|
309
|
+
*
|
|
310
|
+
* Optional property access, owning the rest of its optional region. If `exp0`
|
|
311
|
+
* is nullish the region short-circuits: neither the `index` nor any step of
|
|
312
|
+
* the continuation is evaluated — in particular `a?.[k]` does not evaluate
|
|
313
|
+
* `k` — and the node's value is `undefined`, unless the continuation reaches
|
|
314
|
+
* a `|!()`, which the parentheses put *outside* the region and which
|
|
315
|
+
* therefore calls that `undefined`.
|
|
316
|
+
*
|
|
317
|
+
* Where the region ends is the grouping: `a?.b.c` is one node,
|
|
318
|
+
* `['?.', a, 'b', ['|.', 'c', null]]`, while `(a?.b).c` is a `dot` over a
|
|
319
|
+
* complete `['?.', a, 'b', null]` — and throws when `a` is nullish, as JS
|
|
320
|
+
* does.
|
|
321
|
+
*/
|
|
322
|
+
export declare const optionDot: readonly ['?.', Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>, import("../types/rtti/types.ts").Or<readonly [readonly ["Number", Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>], import("../types/rtti/types.ts")._Type0<"string">, import("../types/rtti/types.ts")._Type0<"number">]>, Phantom<() => readonly ['or', null, readonly ['|()', typeof exp, typeof optionLambda], readonly ['|.', typeof index, typeof optionPropertyLambda], readonly ['|?.()', typeof exp, typeof optionLambda], readonly ['|!()', typeof exp, null]], OptionPropertyLambda>];
|
|
323
|
+
export type _OptionDot = Assert<Check<OptionDot, typeof optionDot>>;
|
|
324
|
+
/** @typedef {Assert<Check<OptionDot, typeof optionDot>>} _OptionDot */
|
|
325
|
+
/**
|
|
326
|
+
* ```js
|
|
327
|
+
* exp0?.(...exp1) // ['?.()', exp0, exp1, null]
|
|
328
|
+
* exp0?.(...exp1).k // ['?.()', exp0, exp1, ['|.', 'k', null]]
|
|
329
|
+
* ```
|
|
330
|
+
*
|
|
331
|
+
* Optional call, owning the rest of its optional region the way `?.` does.
|
|
332
|
+
* The callee is an ordinary expression, so this node never carries a receiver
|
|
333
|
+
* — `a.b?.(...c)` is a `dot` with a `|?.()` continuation, not this. If `exp0`
|
|
334
|
+
* is nullish the arguments are not evaluated and the region short-circuits.
|
|
335
|
+
*/
|
|
336
|
+
export declare const optionCall: readonly ['?.()', Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>, Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>, Phantom<() => readonly ['or', null, readonly ['|()', typeof exp, typeof optionLambda], readonly ['|.', typeof index, typeof optionPropertyLambda]], OptionLambda>];
|
|
337
|
+
export type _OptionCall = Assert<Check<OptionCall, typeof optionCall>>;
|
|
338
|
+
/** @typedef {Assert<Check<OptionCall, typeof optionCall>>} _OptionCall */
|
|
339
|
+
/**
|
|
340
|
+
* ```js
|
|
341
|
+
* (exp0, exp1, exp2)
|
|
342
|
+
* ```
|
|
343
|
+
*
|
|
344
|
+
* Establishes all of its operands and takes the value of the last one; the
|
|
345
|
+
* earlier operands exist for their throw-potential only. The shape is a
|
|
346
|
+
* known-incomplete placeholder — it cannot yet say "at least two operands,
|
|
347
|
+
* last is the result, each pre-result operand a true root (not reachable
|
|
348
|
+
* from another operand of the same `,`)". A single-operand `,` is the
|
|
349
|
+
* identity and a reachable operand a redundant anchor — both non-canonical,
|
|
350
|
+
* each splitting one function into two hashes. See the header of
|
|
351
|
+
* `./proof.f.mjs`.
|
|
352
|
+
*/
|
|
353
|
+
export declare const comma: readonly [',', import("../types/rtti/types.ts").Type1<"array", Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>>];
|
|
354
|
+
export type _Comma = Assert<Check<Comma, typeof comma>>;
|
|
355
|
+
/**
|
|
356
|
+
* @typedef {Assert<Check<Comma, typeof comma>>} _Comma
|
|
357
|
+
*/
|
|
358
|
+
/**
|
|
359
|
+
* `op0`/`op1`/`op2` group operation nodes by their `exp`-operand count —
|
|
360
|
+
* zero, one, or two — not by any semantic category. `undefined`/`args`/
|
|
361
|
+
* `frame` all take zero `exp` operands after the tag, so all three are
|
|
362
|
+
* `op0`, regardless of what each individually means: the `undefined` value,
|
|
363
|
+
* the arguments array, and the captured-consts frame — the way `args` is
|
|
364
|
+
* for the arguments.
|
|
365
|
+
*/
|
|
366
|
+
export declare const op0Id: import("../types/rtti/types.ts").Or<readonly ["undefined", "args", "frame"]>;
|
|
367
|
+
export type _Op0Id = Assert<Check<Op0Id, typeof op0Id>>;
|
|
368
|
+
/** @typedef {Assert<Check<Op0Id, typeof op0Id>>} _Op0Id */
|
|
369
|
+
export declare const op0: readonly [import("../types/rtti/types.ts").Or<readonly ["undefined", "args", "frame"]>];
|
|
370
|
+
export type _Op0 = Assert<Check<Op0, typeof op0>>;
|
|
371
|
+
/** @typedef {Assert<Check<Op0, typeof op0>>} _Op0 */
|
|
372
|
+
/**
|
|
373
|
+
* `String`/`Number` are casts, `neg` is arithmetic negation (a word tag —
|
|
374
|
+
* `-` is binary subtraction), `!` is logical and `~` bitwise not.
|
|
375
|
+
*/
|
|
376
|
+
export declare const op1Id: import("../types/rtti/types.ts").Or<readonly ["String", "Number", "neg", "!", "~"]>;
|
|
377
|
+
export type _Op1Id = Assert<Check<Op1Id, typeof op1Id>>;
|
|
378
|
+
/** @typedef {Assert<Check<Op1Id, typeof op1Id>>} _Op1Id */
|
|
379
|
+
export declare const op1: readonly [import("../types/rtti/types.ts").Or<readonly ["String", "Number", "neg", "!", "~"]>, Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>];
|
|
380
|
+
export type _Op1 = Assert<Check<Op1, typeof op1>>;
|
|
381
|
+
/** @typedef {Assert<Check<Op1, typeof op1>>} _Op1 */
|
|
382
|
+
/**
|
|
383
|
+
* `=>` builds a function from a frame and a body: the frame operand is one
|
|
384
|
+
* node evaluated in the enclosing scope, while the body is the inner
|
|
385
|
+
* function's graph — deferred, never established when the closure is built,
|
|
386
|
+
* only on each call, against that function's own `args`/`frame`. Calling one
|
|
387
|
+
* is not here: `()` is `['()', exp, exp]` and so *is* binary in operand
|
|
388
|
+
* count, but it is a chain node rather than an operation — the whole point of
|
|
389
|
+
* the chain vocabulary is that a call's receiver comes from the node holding
|
|
390
|
+
* it, which no `op2` id has anywhere to put. `own` is exactly
|
|
391
|
+
* `Object.getOwnPropertyDescriptor(object, key)?.value` — no
|
|
392
|
+
* getter invocation, no prototype chain — where the key operand must
|
|
393
|
+
* evaluate to a string: a runtime-value constraint the shape-only schema
|
|
394
|
+
* cannot express — a computed key's value is only known at execution, so
|
|
395
|
+
* upholding it falls to the executor (`ownJs` in `./proof.f.mjs`; the
|
|
396
|
+
* Operations table in `../../todo/edag-stage1-discussion.md`). The rest
|
|
397
|
+
* are the JS comparison,
|
|
398
|
+
* arithmetic, bitwise, and logical operators they name — with `&&`/`||`/`??`
|
|
399
|
+
* short-circuiting exactly as in JS: their right operand is conditional,
|
|
400
|
+
* never established eagerly. All this laziness is positional, not nodal —
|
|
401
|
+
* the same node referenced from an eager position elsewhere is still
|
|
402
|
+
* evaluated there.
|
|
403
|
+
*/
|
|
404
|
+
export declare const op2Id: import("../types/rtti/types.ts").Or<readonly ["=>", "own", "===", "!==", ">", ">=", "<", "<=", "+", "-", "*", "/", "%", "**", "&", "|", "^", "<<", ">>", ">>>", "&&", "||", "??"]>;
|
|
405
|
+
export type _Op2Id = Assert<Check<Op2Id, typeof op2Id>>;
|
|
406
|
+
/** @typedef {Assert<Check<Op2Id, typeof op2Id>>} _Op2Id */
|
|
407
|
+
export declare const op2: readonly [import("../types/rtti/types.ts").Or<readonly ["=>", "own", "===", "!==", ">", ">=", "<", "<=", "+", "-", "*", "/", "%", "**", "&", "|", "^", "<<", ">>", ">>>", "&&", "||", "??"]>, Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>, Phantom<() => readonly ['or', typeof primitive, typeof array, typeof object, typeof dot, typeof call, typeof optionDot, typeof optionCall, typeof comma, typeof op2, typeof op1, typeof op0], Exp>];
|
|
408
|
+
export type _Op2 = Assert<Check<Op2, typeof op2>>;
|
|
409
|
+
export {};
|
|
410
|
+
/** @typedef {Assert<Check<Op2, typeof op2>>} _Op2 */
|