@next-core/cook 1.6.77 → 1.6.79
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/AnalysisContext.js +2 -11
- package/dist/cjs/AnalysisContext.js.map +1 -1
- package/dist/cjs/ExecutionContext.js +11 -37
- package/dist/cjs/ExecutionContext.js.map +1 -1
- package/dist/cjs/context-free.js +30 -71
- package/dist/cjs/context-free.js.map +1 -1
- package/dist/cjs/cook.js +147 -386
- package/dist/cjs/cook.js.map +1 -1
- package/dist/cjs/hasOwnProperty.js +0 -1
- package/dist/cjs/hasOwnProperty.js.map +1 -1
- package/dist/cjs/index.js +0 -14
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interfaces.js.map +1 -1
- package/dist/cjs/lint.js +0 -21
- package/dist/cjs/lint.js.map +1 -1
- package/dist/cjs/parse.js +0 -8
- package/dist/cjs/parse.js.map +1 -1
- package/dist/cjs/precook.js +6 -74
- package/dist/cjs/precook.js.map +1 -1
- package/dist/cjs/precookFunction.js +0 -3
- package/dist/cjs/precookFunction.js.map +1 -1
- package/dist/cjs/preevaluate.js +2 -6
- package/dist/cjs/preevaluate.js.map +1 -1
- package/dist/cjs/sanitize.js +9 -13
- package/dist/cjs/sanitize.js.map +1 -1
- package/dist/cjs/traverse.js +0 -32
- package/dist/cjs/traverse.js.map +1 -1
- package/dist/esm/AnalysisContext.js +2 -8
- package/dist/esm/AnalysisContext.js.map +1 -1
- package/dist/esm/ExecutionContext.js +11 -30
- package/dist/esm/ExecutionContext.js.map +1 -1
- package/dist/esm/context-free.js +32 -53
- package/dist/esm/context-free.js.map +1 -1
- package/dist/esm/cook.js +145 -411
- package/dist/esm/cook.js.map +1 -1
- package/dist/esm/hasOwnProperty.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces.js.map +1 -1
- package/dist/esm/lint.js +0 -19
- package/dist/esm/lint.js.map +1 -1
- package/dist/esm/parse.js +0 -6
- package/dist/esm/parse.js.map +1 -1
- package/dist/esm/precook.js +4 -82
- package/dist/esm/precook.js.map +1 -1
- package/dist/esm/precookFunction.js +4 -5
- package/dist/esm/precookFunction.js.map +1 -1
- package/dist/esm/preevaluate.js.map +1 -1
- package/dist/esm/sanitize.js +9 -9
- package/dist/esm/sanitize.js.map +1 -1
- package/dist/esm/traverse.js +0 -29
- package/dist/esm/traverse.js.map +1 -1
- package/dist/types/interfaces.d.ts +2 -0
- package/dist/types/lint.d.ts +3 -4
- package/dist/types/parse.d.ts +3 -3
- package/package.json +6 -6
package/dist/esm/context-free.js
CHANGED
|
@@ -1,38 +1,37 @@
|
|
|
1
1
|
import { CompletionRecord, Empty, EnvironmentRecord, NormalCompletion, ReferenceRecord } from "./ExecutionContext";
|
|
2
|
-
import { collectBoundNames } from "./traverse";
|
|
2
|
+
import { collectBoundNames } from "./traverse";
|
|
3
3
|
|
|
4
|
+
// https://tc39.es/ecma262/#sec-ispropertyreference
|
|
4
5
|
export function IsPropertyReference(V) {
|
|
5
6
|
return V.Base !== "unresolvable" && !(V.Base instanceof EnvironmentRecord);
|
|
6
|
-
}
|
|
7
|
+
}
|
|
7
8
|
|
|
9
|
+
// https://tc39.es/ecma262/#sec-initializereferencedbinding
|
|
8
10
|
export function InitializeReferencedBinding(V, W) {
|
|
9
11
|
var base = V.Base;
|
|
10
12
|
return base.InitializeBinding(V.ReferenceName, W);
|
|
11
|
-
}
|
|
13
|
+
}
|
|
12
14
|
|
|
15
|
+
// https://tc39.es/ecma262/#sec-copydataproperties
|
|
13
16
|
export function CopyDataProperties(target, source, excludedItems) {
|
|
14
17
|
if (source === undefined || source === null) {
|
|
15
18
|
return target;
|
|
16
19
|
}
|
|
17
|
-
|
|
18
20
|
var keys = Object.getOwnPropertyNames(source).concat(Object.getOwnPropertySymbols(source));
|
|
19
|
-
|
|
20
21
|
for (var nextKey of keys) {
|
|
21
22
|
if (!excludedItems.has(nextKey)) {
|
|
22
23
|
var desc = Object.getOwnPropertyDescriptor(source, nextKey);
|
|
23
|
-
|
|
24
24
|
if (desc !== null && desc !== void 0 && desc.enumerable) {
|
|
25
25
|
target[nextKey] = source[nextKey];
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
|
|
30
29
|
return target;
|
|
31
|
-
}
|
|
30
|
+
}
|
|
32
31
|
|
|
32
|
+
// https://tc39.es/ecma262/#sec-runtime-semantics-fordeclarationbindinginstantiation
|
|
33
33
|
export function ForDeclarationBindingInstantiation(forDeclaration, env) {
|
|
34
34
|
var isConst = forDeclaration.kind === "const";
|
|
35
|
-
|
|
36
35
|
for (var name of collectBoundNames(forDeclaration)) {
|
|
37
36
|
if (isConst) {
|
|
38
37
|
env.CreateImmutableBinding(name, true);
|
|
@@ -40,142 +39,128 @@ export function ForDeclarationBindingInstantiation(forDeclaration, env) {
|
|
|
40
39
|
env.CreateMutableBinding(name, false);
|
|
41
40
|
}
|
|
42
41
|
}
|
|
43
|
-
}
|
|
42
|
+
}
|
|
44
43
|
|
|
44
|
+
// https://tc39.es/ecma262/#sec-loopcontinues
|
|
45
45
|
export function LoopContinues(completion) {
|
|
46
46
|
return completion.Type === "normal" || completion.Type == "continue";
|
|
47
|
-
}
|
|
47
|
+
}
|
|
48
48
|
|
|
49
|
+
// https://tc39.es/ecma262/#sec-updateempty
|
|
49
50
|
export function UpdateEmpty(completion, value) {
|
|
50
51
|
if (completion.Value !== Empty) {
|
|
51
52
|
return completion;
|
|
52
53
|
}
|
|
53
|
-
|
|
54
54
|
return new CompletionRecord(completion.Type, value);
|
|
55
|
-
}
|
|
55
|
+
}
|
|
56
56
|
|
|
57
|
+
// https://tc39.es/ecma262/#sec-getvalue
|
|
57
58
|
export function GetValue(V) {
|
|
58
59
|
if (V instanceof CompletionRecord) {
|
|
59
60
|
// Assert: V.Type is normal.
|
|
60
61
|
V = V.Value;
|
|
61
62
|
}
|
|
62
|
-
|
|
63
63
|
if (!(V instanceof ReferenceRecord)) {
|
|
64
64
|
return V;
|
|
65
65
|
}
|
|
66
|
-
|
|
67
66
|
if (V.Base === "unresolvable") {
|
|
68
67
|
throw new ReferenceError("".concat(V.ReferenceName, " is not defined"));
|
|
69
68
|
}
|
|
70
|
-
|
|
71
69
|
if (V.Base instanceof EnvironmentRecord) {
|
|
72
70
|
var base = V.Base;
|
|
73
71
|
return base.GetBindingValue(V.ReferenceName, V.Strict);
|
|
74
72
|
}
|
|
75
|
-
|
|
76
73
|
return V.Base[V.ReferenceName];
|
|
77
|
-
}
|
|
74
|
+
}
|
|
78
75
|
|
|
76
|
+
// https://tc39.es/ecma262/#sec-topropertykey
|
|
79
77
|
export function ToPropertyKey(arg) {
|
|
80
78
|
if (typeof arg === "symbol") {
|
|
81
79
|
return arg;
|
|
82
80
|
}
|
|
83
|
-
|
|
84
81
|
return String(arg);
|
|
85
|
-
}
|
|
82
|
+
}
|
|
86
83
|
|
|
84
|
+
// https://tc39.es/ecma262/#sec-getv
|
|
87
85
|
export function GetV(V, P) {
|
|
88
86
|
return V[P];
|
|
89
|
-
}
|
|
87
|
+
}
|
|
90
88
|
|
|
89
|
+
// https://tc39.es/ecma262/#sec-putvalue
|
|
91
90
|
export function PutValue(V, W) {
|
|
92
91
|
// Assert: V is a ReferenceRecord.
|
|
93
92
|
if (V.Base === "unresolvable") {
|
|
94
93
|
throw new ReferenceError("".concat(V.ReferenceName, " is not defined"));
|
|
95
94
|
}
|
|
96
|
-
|
|
97
95
|
if (V.Base instanceof EnvironmentRecord) {
|
|
98
96
|
return V.Base.SetMutableBinding(V.ReferenceName, W, V.Strict);
|
|
99
97
|
}
|
|
100
|
-
|
|
101
98
|
V.Base[V.ReferenceName] = W;
|
|
102
99
|
return NormalCompletion(undefined);
|
|
103
|
-
}
|
|
100
|
+
}
|
|
104
101
|
|
|
102
|
+
// https://tc39.es/ecma262/#sec-createlistiteratorRecord
|
|
105
103
|
export function CreateListIteratorRecord(args) {
|
|
106
104
|
if (!isIterable(args)) {
|
|
107
105
|
throw new TypeError("".concat(typeof args, " is not iterable"));
|
|
108
106
|
}
|
|
109
|
-
|
|
110
107
|
return args[Symbol.iterator]();
|
|
111
|
-
}
|
|
108
|
+
}
|
|
112
109
|
|
|
110
|
+
// https://tc39.es/ecma262/#sec-requireobjectcoercible
|
|
113
111
|
export function RequireObjectCoercible(arg) {
|
|
114
112
|
if (arg === null || arg === undefined) {
|
|
115
113
|
throw new TypeError("Cannot destructure properties of undefined or null");
|
|
116
114
|
}
|
|
117
|
-
}
|
|
115
|
+
}
|
|
118
116
|
|
|
117
|
+
// https://tc39.es/ecma262/#sec-getidentifierreference
|
|
119
118
|
export function GetIdentifierReference(env, name, strict) {
|
|
120
119
|
if (!env) {
|
|
121
120
|
return new ReferenceRecord("unresolvable", name, strict);
|
|
122
121
|
}
|
|
123
|
-
|
|
124
122
|
if (env.HasBinding(name)) {
|
|
125
123
|
return new ReferenceRecord(env, name, strict);
|
|
126
124
|
}
|
|
127
|
-
|
|
128
125
|
return GetIdentifierReference(env.OuterEnv, name, strict);
|
|
129
|
-
}
|
|
126
|
+
}
|
|
130
127
|
|
|
128
|
+
// https://tc39.es/ecma262/#sec-applystringornumericbinaryoperator
|
|
131
129
|
export function ApplyStringOrNumericBinaryOperator(leftValue, operator, rightValue) {
|
|
132
130
|
switch (operator) {
|
|
133
131
|
case "+":
|
|
134
132
|
return leftValue + rightValue;
|
|
135
|
-
|
|
136
133
|
case "-":
|
|
137
134
|
return leftValue - rightValue;
|
|
138
|
-
|
|
139
135
|
case "/":
|
|
140
136
|
return leftValue / rightValue;
|
|
141
|
-
|
|
142
137
|
case "%":
|
|
143
138
|
return leftValue % rightValue;
|
|
144
|
-
|
|
145
139
|
case "*":
|
|
146
140
|
return leftValue * rightValue;
|
|
147
|
-
|
|
148
141
|
case "**":
|
|
149
142
|
return leftValue ** rightValue;
|
|
150
|
-
|
|
151
143
|
case "==":
|
|
152
144
|
return leftValue == rightValue;
|
|
153
|
-
|
|
154
145
|
case "===":
|
|
155
146
|
return leftValue === rightValue;
|
|
156
|
-
|
|
157
147
|
case "!=":
|
|
158
148
|
return leftValue != rightValue;
|
|
159
|
-
|
|
160
149
|
case "!==":
|
|
161
150
|
return leftValue !== rightValue;
|
|
162
|
-
|
|
163
151
|
case ">":
|
|
164
152
|
return leftValue > rightValue;
|
|
165
|
-
|
|
166
153
|
case "<":
|
|
167
154
|
return leftValue < rightValue;
|
|
168
|
-
|
|
169
155
|
case ">=":
|
|
170
156
|
return leftValue >= rightValue;
|
|
171
|
-
|
|
172
157
|
case "<=":
|
|
173
158
|
return leftValue <= rightValue;
|
|
174
159
|
}
|
|
175
|
-
|
|
176
160
|
throw new SyntaxError("Unsupported binary operator `".concat(operator, "`"));
|
|
177
|
-
}
|
|
161
|
+
}
|
|
178
162
|
|
|
163
|
+
// https://tc39.es/ecma262/#sec-assignment-operators
|
|
179
164
|
export function ApplyStringOrNumericAssignment(leftValue, operator, rightValue) {
|
|
180
165
|
switch (operator) {
|
|
181
166
|
case "+=":
|
|
@@ -186,36 +171,30 @@ export function ApplyStringOrNumericAssignment(leftValue, operator, rightValue)
|
|
|
186
171
|
case "**=":
|
|
187
172
|
return ApplyStringOrNumericBinaryOperator(leftValue, operator.substr(0, operator.length - 1), rightValue);
|
|
188
173
|
}
|
|
189
|
-
|
|
190
174
|
throw new SyntaxError("Unsupported assignment operator `".concat(operator, "`"));
|
|
191
|
-
}
|
|
175
|
+
}
|
|
192
176
|
|
|
177
|
+
// https://tc39.es/ecma262/#sec-unary-operators
|
|
193
178
|
export function ApplyUnaryOperator(target, operator) {
|
|
194
179
|
switch (operator) {
|
|
195
180
|
case "!":
|
|
196
181
|
return !target;
|
|
197
|
-
|
|
198
182
|
case "+":
|
|
199
183
|
return +target;
|
|
200
|
-
|
|
201
184
|
case "-":
|
|
202
185
|
return -target;
|
|
203
|
-
|
|
204
186
|
case "void":
|
|
205
187
|
return undefined;
|
|
206
188
|
}
|
|
207
|
-
|
|
208
189
|
throw new SyntaxError("Unsupported unary operator `".concat(operator, "`"));
|
|
209
190
|
}
|
|
210
191
|
export function isIterable(cooked) {
|
|
211
192
|
if (Array.isArray(cooked)) {
|
|
212
193
|
return true;
|
|
213
194
|
}
|
|
214
|
-
|
|
215
195
|
if (cooked === null || cooked === undefined) {
|
|
216
196
|
return false;
|
|
217
197
|
}
|
|
218
|
-
|
|
219
198
|
return typeof cooked[Symbol.iterator] === "function";
|
|
220
199
|
}
|
|
221
200
|
//# sourceMappingURL=context-free.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-free.js","names":["CompletionRecord","Empty","EnvironmentRecord","NormalCompletion","ReferenceRecord","collectBoundNames","IsPropertyReference","V","Base","InitializeReferencedBinding","W","base","InitializeBinding","ReferenceName","CopyDataProperties","target","source","excludedItems","undefined","keys","Object","getOwnPropertyNames","concat","getOwnPropertySymbols","nextKey","has","desc","getOwnPropertyDescriptor","enumerable","ForDeclarationBindingInstantiation","forDeclaration","env","isConst","kind","name","CreateImmutableBinding","CreateMutableBinding","LoopContinues","completion","Type","UpdateEmpty","value","Value","GetValue","ReferenceError","GetBindingValue","Strict","ToPropertyKey","arg","String","GetV","P","PutValue","SetMutableBinding","CreateListIteratorRecord","args","isIterable","TypeError","Symbol","iterator","RequireObjectCoercible","GetIdentifierReference","strict","HasBinding","OuterEnv","ApplyStringOrNumericBinaryOperator","leftValue","operator","rightValue","SyntaxError","ApplyStringOrNumericAssignment","substr","length","ApplyUnaryOperator","cooked","Array","isArray"],"sources":["../../src/context-free.ts"],"sourcesContent":["import {\n BinaryExpression,\n UnaryExpression,\n VariableDeclaration,\n} from \"@babel/types\";\nimport {\n CompletionRecord,\n Empty,\n EnvironmentRecord,\n NormalCompletion,\n ReferenceRecord,\n} from \"./ExecutionContext\";\nimport { collectBoundNames } from \"./traverse\";\n\n// https://tc39.es/ecma262/#sec-ispropertyreference\nexport function IsPropertyReference(V: ReferenceRecord): boolean {\n return V.Base !== \"unresolvable\" && !(V.Base instanceof EnvironmentRecord);\n}\n\n// https://tc39.es/ecma262/#sec-initializereferencedbinding\nexport function InitializeReferencedBinding(\n V: ReferenceRecord,\n W: unknown\n): CompletionRecord {\n const base = V.Base as EnvironmentRecord;\n return base.InitializeBinding(V.ReferenceName as string, W);\n}\n\n// https://tc39.es/ecma262/#sec-copydataproperties\nexport function CopyDataProperties(\n target: Record<PropertyKey, unknown>,\n source: unknown,\n excludedItems: Set<PropertyKey>\n): Record<PropertyKey, unknown> {\n if (source === undefined || source === null) {\n return target;\n }\n const keys = (Object.getOwnPropertyNames(source) as PropertyKey[]).concat(\n Object.getOwnPropertySymbols(source)\n );\n for (const nextKey of keys) {\n if (!excludedItems.has(nextKey)) {\n const desc = Object.getOwnPropertyDescriptor(source, nextKey);\n if (desc?.enumerable) {\n target[nextKey] = (source as Record<PropertyKey, unknown>)[nextKey];\n }\n }\n }\n return target;\n}\n\n// https://tc39.es/ecma262/#sec-runtime-semantics-fordeclarationbindinginstantiation\nexport function ForDeclarationBindingInstantiation(\n forDeclaration: VariableDeclaration,\n env: EnvironmentRecord\n): void {\n const isConst = forDeclaration.kind === \"const\";\n for (const name of collectBoundNames(forDeclaration)) {\n if (isConst) {\n env.CreateImmutableBinding(name, true);\n } else {\n env.CreateMutableBinding(name, false);\n }\n }\n}\n\n// https://tc39.es/ecma262/#sec-loopcontinues\nexport function LoopContinues(completion: CompletionRecord): boolean {\n return completion.Type === \"normal\" || completion.Type == \"continue\";\n}\n\n// https://tc39.es/ecma262/#sec-updateempty\nexport function UpdateEmpty(\n completion: CompletionRecord,\n value: unknown\n): CompletionRecord {\n if (completion.Value !== Empty) {\n return completion;\n }\n return new CompletionRecord(completion.Type, value);\n}\n\n// https://tc39.es/ecma262/#sec-getvalue\nexport function GetValue(V: unknown): unknown {\n if (V instanceof CompletionRecord) {\n // Assert: V.Type is normal.\n V = V.Value;\n }\n if (!(V instanceof ReferenceRecord)) {\n return V;\n }\n if (V.Base === \"unresolvable\") {\n throw new ReferenceError(`${V.ReferenceName as string} is not defined`);\n }\n if (V.Base instanceof EnvironmentRecord) {\n const base = V.Base as EnvironmentRecord;\n return base.GetBindingValue(V.ReferenceName as string, V.Strict);\n }\n return V.Base[V.ReferenceName];\n}\n\n// https://tc39.es/ecma262/#sec-topropertykey\nexport function ToPropertyKey(arg: unknown): string | symbol {\n if (typeof arg === \"symbol\") {\n return arg;\n }\n return String(arg);\n}\n\n// https://tc39.es/ecma262/#sec-getv\nexport function GetV(V: unknown, P: PropertyKey): unknown {\n return (V as Record<PropertyKey, unknown>)[P];\n}\n\n// https://tc39.es/ecma262/#sec-putvalue\nexport function PutValue(V: ReferenceRecord, W: unknown): CompletionRecord {\n // Assert: V is a ReferenceRecord.\n if (V.Base === \"unresolvable\") {\n throw new ReferenceError(`${V.ReferenceName as string} is not defined`);\n }\n if (V.Base instanceof EnvironmentRecord) {\n return V.Base.SetMutableBinding(V.ReferenceName as string, W, V.Strict);\n }\n V.Base[V.ReferenceName] = W;\n return NormalCompletion(undefined);\n}\n\n// https://tc39.es/ecma262/#sec-createlistiteratorRecord\nexport function CreateListIteratorRecord(\n args: Iterable<unknown>\n): Iterator<unknown> {\n if (!isIterable(args)) {\n throw new TypeError(`${typeof args} is not iterable`);\n }\n return args[Symbol.iterator]();\n}\n\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nexport function RequireObjectCoercible(arg: unknown): void {\n if (arg === null || arg === undefined) {\n throw new TypeError(\"Cannot destructure properties of undefined or null\");\n }\n}\n\n// https://tc39.es/ecma262/#sec-getidentifierreference\nexport function GetIdentifierReference(\n env: EnvironmentRecord,\n name: string,\n strict: boolean\n): ReferenceRecord {\n if (!env) {\n return new ReferenceRecord(\"unresolvable\", name, strict);\n }\n if (env.HasBinding(name)) {\n return new ReferenceRecord(env, name, strict);\n }\n return GetIdentifierReference(env.OuterEnv, name, strict);\n}\n\n// https://tc39.es/ecma262/#sec-applystringornumericbinaryoperator\nexport function ApplyStringOrNumericBinaryOperator(\n leftValue: number,\n operator: BinaryExpression[\"operator\"] | \"|>\",\n rightValue: number\n): unknown {\n switch (operator) {\n case \"+\":\n return leftValue + rightValue;\n case \"-\":\n return leftValue - rightValue;\n case \"/\":\n return leftValue / rightValue;\n case \"%\":\n return leftValue % rightValue;\n case \"*\":\n return leftValue * rightValue;\n case \"**\":\n return leftValue ** rightValue;\n case \"==\":\n return leftValue == rightValue;\n case \"===\":\n return leftValue === rightValue;\n case \"!=\":\n return leftValue != rightValue;\n case \"!==\":\n return leftValue !== rightValue;\n case \">\":\n return leftValue > rightValue;\n case \"<\":\n return leftValue < rightValue;\n case \">=\":\n return leftValue >= rightValue;\n case \"<=\":\n return leftValue <= rightValue;\n }\n throw new SyntaxError(`Unsupported binary operator \\`${operator}\\``);\n}\n\n// https://tc39.es/ecma262/#sec-assignment-operators\nexport function ApplyStringOrNumericAssignment(\n leftValue: string | number,\n operator: string,\n rightValue: string | number\n): unknown {\n switch (operator) {\n case \"+=\":\n case \"-=\":\n case \"*=\":\n case \"/=\":\n case \"%=\":\n case \"**=\":\n return ApplyStringOrNumericBinaryOperator(\n leftValue as number,\n operator.substr(0, operator.length - 1) as BinaryExpression[\"operator\"],\n rightValue as number\n );\n }\n\n throw new SyntaxError(`Unsupported assignment operator \\`${operator}\\``);\n}\n\n// https://tc39.es/ecma262/#sec-unary-operators\nexport function ApplyUnaryOperator(\n target: unknown,\n operator: UnaryExpression[\"operator\"]\n): unknown {\n switch (operator) {\n case \"!\":\n return !target;\n case \"+\":\n return +target;\n case \"-\":\n return -target;\n case \"void\":\n return undefined;\n }\n throw new SyntaxError(`Unsupported unary operator \\`${operator}\\``);\n}\n\nexport function isIterable(cooked: unknown): boolean {\n if (Array.isArray(cooked)) {\n return true;\n }\n if (cooked === null || cooked === undefined) {\n return false;\n }\n return typeof (cooked as Iterable<unknown>)[Symbol.iterator] === \"function\";\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context-free.js","names":["CompletionRecord","Empty","EnvironmentRecord","NormalCompletion","ReferenceRecord","collectBoundNames","IsPropertyReference","V","Base","InitializeReferencedBinding","W","base","InitializeBinding","ReferenceName","CopyDataProperties","target","source","excludedItems","undefined","keys","Object","getOwnPropertyNames","concat","getOwnPropertySymbols","nextKey","has","desc","getOwnPropertyDescriptor","enumerable","ForDeclarationBindingInstantiation","forDeclaration","env","isConst","kind","name","CreateImmutableBinding","CreateMutableBinding","LoopContinues","completion","Type","UpdateEmpty","value","Value","GetValue","ReferenceError","GetBindingValue","Strict","ToPropertyKey","arg","String","GetV","P","PutValue","SetMutableBinding","CreateListIteratorRecord","args","isIterable","TypeError","Symbol","iterator","RequireObjectCoercible","GetIdentifierReference","strict","HasBinding","OuterEnv","ApplyStringOrNumericBinaryOperator","leftValue","operator","rightValue","SyntaxError","ApplyStringOrNumericAssignment","substr","length","ApplyUnaryOperator","cooked","Array","isArray"],"sources":["../../src/context-free.ts"],"sourcesContent":["import {\n BinaryExpression,\n UnaryExpression,\n VariableDeclaration,\n} from \"@babel/types\";\nimport {\n CompletionRecord,\n Empty,\n EnvironmentRecord,\n NormalCompletion,\n ReferenceRecord,\n} from \"./ExecutionContext\";\nimport { collectBoundNames } from \"./traverse\";\n\n// https://tc39.es/ecma262/#sec-ispropertyreference\nexport function IsPropertyReference(V: ReferenceRecord): boolean {\n return V.Base !== \"unresolvable\" && !(V.Base instanceof EnvironmentRecord);\n}\n\n// https://tc39.es/ecma262/#sec-initializereferencedbinding\nexport function InitializeReferencedBinding(\n V: ReferenceRecord,\n W: unknown\n): CompletionRecord {\n const base = V.Base as EnvironmentRecord;\n return base.InitializeBinding(V.ReferenceName as string, W);\n}\n\n// https://tc39.es/ecma262/#sec-copydataproperties\nexport function CopyDataProperties(\n target: Record<PropertyKey, unknown>,\n source: unknown,\n excludedItems: Set<PropertyKey>\n): Record<PropertyKey, unknown> {\n if (source === undefined || source === null) {\n return target;\n }\n const keys = (Object.getOwnPropertyNames(source) as PropertyKey[]).concat(\n Object.getOwnPropertySymbols(source)\n );\n for (const nextKey of keys) {\n if (!excludedItems.has(nextKey)) {\n const desc = Object.getOwnPropertyDescriptor(source, nextKey);\n if (desc?.enumerable) {\n target[nextKey] = (source as Record<PropertyKey, unknown>)[nextKey];\n }\n }\n }\n return target;\n}\n\n// https://tc39.es/ecma262/#sec-runtime-semantics-fordeclarationbindinginstantiation\nexport function ForDeclarationBindingInstantiation(\n forDeclaration: VariableDeclaration,\n env: EnvironmentRecord\n): void {\n const isConst = forDeclaration.kind === \"const\";\n for (const name of collectBoundNames(forDeclaration)) {\n if (isConst) {\n env.CreateImmutableBinding(name, true);\n } else {\n env.CreateMutableBinding(name, false);\n }\n }\n}\n\n// https://tc39.es/ecma262/#sec-loopcontinues\nexport function LoopContinues(completion: CompletionRecord): boolean {\n return completion.Type === \"normal\" || completion.Type == \"continue\";\n}\n\n// https://tc39.es/ecma262/#sec-updateempty\nexport function UpdateEmpty(\n completion: CompletionRecord,\n value: unknown\n): CompletionRecord {\n if (completion.Value !== Empty) {\n return completion;\n }\n return new CompletionRecord(completion.Type, value);\n}\n\n// https://tc39.es/ecma262/#sec-getvalue\nexport function GetValue(V: unknown): unknown {\n if (V instanceof CompletionRecord) {\n // Assert: V.Type is normal.\n V = V.Value;\n }\n if (!(V instanceof ReferenceRecord)) {\n return V;\n }\n if (V.Base === \"unresolvable\") {\n throw new ReferenceError(`${V.ReferenceName as string} is not defined`);\n }\n if (V.Base instanceof EnvironmentRecord) {\n const base = V.Base as EnvironmentRecord;\n return base.GetBindingValue(V.ReferenceName as string, V.Strict);\n }\n return V.Base[V.ReferenceName];\n}\n\n// https://tc39.es/ecma262/#sec-topropertykey\nexport function ToPropertyKey(arg: unknown): string | symbol {\n if (typeof arg === \"symbol\") {\n return arg;\n }\n return String(arg);\n}\n\n// https://tc39.es/ecma262/#sec-getv\nexport function GetV(V: unknown, P: PropertyKey): unknown {\n return (V as Record<PropertyKey, unknown>)[P];\n}\n\n// https://tc39.es/ecma262/#sec-putvalue\nexport function PutValue(V: ReferenceRecord, W: unknown): CompletionRecord {\n // Assert: V is a ReferenceRecord.\n if (V.Base === \"unresolvable\") {\n throw new ReferenceError(`${V.ReferenceName as string} is not defined`);\n }\n if (V.Base instanceof EnvironmentRecord) {\n return V.Base.SetMutableBinding(V.ReferenceName as string, W, V.Strict);\n }\n V.Base[V.ReferenceName] = W;\n return NormalCompletion(undefined);\n}\n\n// https://tc39.es/ecma262/#sec-createlistiteratorRecord\nexport function CreateListIteratorRecord(\n args: Iterable<unknown>\n): Iterator<unknown> {\n if (!isIterable(args)) {\n throw new TypeError(`${typeof args} is not iterable`);\n }\n return args[Symbol.iterator]();\n}\n\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nexport function RequireObjectCoercible(arg: unknown): void {\n if (arg === null || arg === undefined) {\n throw new TypeError(\"Cannot destructure properties of undefined or null\");\n }\n}\n\n// https://tc39.es/ecma262/#sec-getidentifierreference\nexport function GetIdentifierReference(\n env: EnvironmentRecord,\n name: string,\n strict: boolean\n): ReferenceRecord {\n if (!env) {\n return new ReferenceRecord(\"unresolvable\", name, strict);\n }\n if (env.HasBinding(name)) {\n return new ReferenceRecord(env, name, strict);\n }\n return GetIdentifierReference(env.OuterEnv, name, strict);\n}\n\n// https://tc39.es/ecma262/#sec-applystringornumericbinaryoperator\nexport function ApplyStringOrNumericBinaryOperator(\n leftValue: number,\n operator: BinaryExpression[\"operator\"] | \"|>\",\n rightValue: number\n): unknown {\n switch (operator) {\n case \"+\":\n return leftValue + rightValue;\n case \"-\":\n return leftValue - rightValue;\n case \"/\":\n return leftValue / rightValue;\n case \"%\":\n return leftValue % rightValue;\n case \"*\":\n return leftValue * rightValue;\n case \"**\":\n return leftValue ** rightValue;\n case \"==\":\n return leftValue == rightValue;\n case \"===\":\n return leftValue === rightValue;\n case \"!=\":\n return leftValue != rightValue;\n case \"!==\":\n return leftValue !== rightValue;\n case \">\":\n return leftValue > rightValue;\n case \"<\":\n return leftValue < rightValue;\n case \">=\":\n return leftValue >= rightValue;\n case \"<=\":\n return leftValue <= rightValue;\n }\n throw new SyntaxError(`Unsupported binary operator \\`${operator}\\``);\n}\n\n// https://tc39.es/ecma262/#sec-assignment-operators\nexport function ApplyStringOrNumericAssignment(\n leftValue: string | number,\n operator: string,\n rightValue: string | number\n): unknown {\n switch (operator) {\n case \"+=\":\n case \"-=\":\n case \"*=\":\n case \"/=\":\n case \"%=\":\n case \"**=\":\n return ApplyStringOrNumericBinaryOperator(\n leftValue as number,\n operator.substr(0, operator.length - 1) as BinaryExpression[\"operator\"],\n rightValue as number\n );\n }\n\n throw new SyntaxError(`Unsupported assignment operator \\`${operator}\\``);\n}\n\n// https://tc39.es/ecma262/#sec-unary-operators\nexport function ApplyUnaryOperator(\n target: unknown,\n operator: UnaryExpression[\"operator\"]\n): unknown {\n switch (operator) {\n case \"!\":\n return !target;\n case \"+\":\n return +target;\n case \"-\":\n return -target;\n case \"void\":\n return undefined;\n }\n throw new SyntaxError(`Unsupported unary operator \\`${operator}\\``);\n}\n\nexport function isIterable(cooked: unknown): boolean {\n if (Array.isArray(cooked)) {\n return true;\n }\n if (cooked === null || cooked === undefined) {\n return false;\n }\n return typeof (cooked as Iterable<unknown>)[Symbol.iterator] === \"function\";\n}\n"],"mappings":"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"}
|