@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.
Files changed (55) hide show
  1. package/dist/cjs/AnalysisContext.js +2 -11
  2. package/dist/cjs/AnalysisContext.js.map +1 -1
  3. package/dist/cjs/ExecutionContext.js +11 -37
  4. package/dist/cjs/ExecutionContext.js.map +1 -1
  5. package/dist/cjs/context-free.js +30 -71
  6. package/dist/cjs/context-free.js.map +1 -1
  7. package/dist/cjs/cook.js +147 -386
  8. package/dist/cjs/cook.js.map +1 -1
  9. package/dist/cjs/hasOwnProperty.js +0 -1
  10. package/dist/cjs/hasOwnProperty.js.map +1 -1
  11. package/dist/cjs/index.js +0 -14
  12. package/dist/cjs/index.js.map +1 -1
  13. package/dist/cjs/interfaces.js.map +1 -1
  14. package/dist/cjs/lint.js +0 -21
  15. package/dist/cjs/lint.js.map +1 -1
  16. package/dist/cjs/parse.js +0 -8
  17. package/dist/cjs/parse.js.map +1 -1
  18. package/dist/cjs/precook.js +6 -74
  19. package/dist/cjs/precook.js.map +1 -1
  20. package/dist/cjs/precookFunction.js +0 -3
  21. package/dist/cjs/precookFunction.js.map +1 -1
  22. package/dist/cjs/preevaluate.js +2 -6
  23. package/dist/cjs/preevaluate.js.map +1 -1
  24. package/dist/cjs/sanitize.js +9 -13
  25. package/dist/cjs/sanitize.js.map +1 -1
  26. package/dist/cjs/traverse.js +0 -32
  27. package/dist/cjs/traverse.js.map +1 -1
  28. package/dist/esm/AnalysisContext.js +2 -8
  29. package/dist/esm/AnalysisContext.js.map +1 -1
  30. package/dist/esm/ExecutionContext.js +11 -30
  31. package/dist/esm/ExecutionContext.js.map +1 -1
  32. package/dist/esm/context-free.js +32 -53
  33. package/dist/esm/context-free.js.map +1 -1
  34. package/dist/esm/cook.js +145 -411
  35. package/dist/esm/cook.js.map +1 -1
  36. package/dist/esm/hasOwnProperty.js.map +1 -1
  37. package/dist/esm/index.js.map +1 -1
  38. package/dist/esm/interfaces.js.map +1 -1
  39. package/dist/esm/lint.js +0 -19
  40. package/dist/esm/lint.js.map +1 -1
  41. package/dist/esm/parse.js +0 -6
  42. package/dist/esm/parse.js.map +1 -1
  43. package/dist/esm/precook.js +4 -82
  44. package/dist/esm/precook.js.map +1 -1
  45. package/dist/esm/precookFunction.js +4 -5
  46. package/dist/esm/precookFunction.js.map +1 -1
  47. package/dist/esm/preevaluate.js.map +1 -1
  48. package/dist/esm/sanitize.js +9 -9
  49. package/dist/esm/sanitize.js.map +1 -1
  50. package/dist/esm/traverse.js +0 -29
  51. package/dist/esm/traverse.js.map +1 -1
  52. package/dist/types/interfaces.d.ts +2 -0
  53. package/dist/types/lint.d.ts +3 -4
  54. package/dist/types/parse.d.ts +3 -3
  55. package/package.json +6 -6
@@ -1,38 +1,37 @@
1
1
  import { CompletionRecord, Empty, EnvironmentRecord, NormalCompletion, ReferenceRecord } from "./ExecutionContext";
2
- import { collectBoundNames } from "./traverse"; // https://tc39.es/ecma262/#sec-ispropertyreference
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
- } // https://tc39.es/ecma262/#sec-initializereferencedbinding
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
- } // https://tc39.es/ecma262/#sec-copydataproperties
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
- } // https://tc39.es/ecma262/#sec-runtime-semantics-fordeclarationbindinginstantiation
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
- } // https://tc39.es/ecma262/#sec-loopcontinues
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
- } // https://tc39.es/ecma262/#sec-updateempty
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
- } // https://tc39.es/ecma262/#sec-getvalue
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
- } // https://tc39.es/ecma262/#sec-topropertykey
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
- } // https://tc39.es/ecma262/#sec-getv
82
+ }
86
83
 
84
+ // https://tc39.es/ecma262/#sec-getv
87
85
  export function GetV(V, P) {
88
86
  return V[P];
89
- } // https://tc39.es/ecma262/#sec-putvalue
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
- } // https://tc39.es/ecma262/#sec-createlistiteratorRecord
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
- } // https://tc39.es/ecma262/#sec-requireobjectcoercible
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
- } // https://tc39.es/ecma262/#sec-getidentifierreference
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
- } // https://tc39.es/ecma262/#sec-applystringornumericbinaryoperator
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
- } // https://tc39.es/ecma262/#sec-assignment-operators
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
- } // https://tc39.es/ecma262/#sec-unary-operators
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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"}