@next-core/cook 1.6.38 → 1.6.39
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/CHANGELOG.md +4 -24
- package/dist/cjs/context-free.js.map +1 -1
- package/dist/cjs/cook.js.map +1 -1
- package/dist/cjs/lint.js.map +1 -1
- package/dist/cjs/parse.js.map +1 -1
- package/dist/cjs/precook.js.map +1 -1
- package/dist/cjs/precookFunction.js.map +1 -1
- package/dist/cjs/preevaluate.js.map +1 -1
- package/dist/esm/cook.js.map +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
## [1.6.
|
|
6
|
+
## [1.6.39](https://github.com/easyops-cn/next-core/compare/@next-core/cook@1.6.38...@next-core/cook@1.6.39) (2022-07-20)
|
|
7
7
|
|
|
8
8
|
**Note:** Version bump only for package @next-core/cook
|
|
9
9
|
|
|
@@ -11,54 +11,34 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
## [1.6.
|
|
14
|
+
## [1.6.38](https://github.com/easyops-cn/next-core/compare/@next-core/cook@1.6.37...@next-core/cook@1.6.38) (2022-07-18)
|
|
15
15
|
|
|
16
16
|
**Note:** Version bump only for package @next-core/cook
|
|
17
17
|
|
|
18
|
+
## [1.6.37](https://github.com/easyops-cn/next-core/compare/@next-core/cook@1.6.36...@next-core/cook@1.6.37) (2022-07-15)
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
**Note:** Version bump only for package @next-core/cook
|
|
21
21
|
|
|
22
22
|
## [1.6.36](https://github.com/easyops-cn/next-core/compare/@next-core/cook@1.6.35...@next-core/cook@1.6.36) (2022-07-15)
|
|
23
23
|
|
|
24
24
|
**Note:** Version bump only for package @next-core/cook
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
26
|
## [1.6.35](https://github.com/easyops-cn/next-core/compare/@next-core/cook@1.6.34...@next-core/cook@1.6.35) (2022-07-12)
|
|
31
27
|
|
|
32
28
|
**Note:** Version bump only for package @next-core/cook
|
|
33
29
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
30
|
## [1.6.34](https://github.com/easyops-cn/next-core/compare/@next-core/cook@1.6.33...@next-core/cook@1.6.34) (2022-07-07)
|
|
39
31
|
|
|
40
32
|
**Note:** Version bump only for package @next-core/cook
|
|
41
33
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
34
|
## [1.6.33](https://github.com/easyops-cn/next-core/compare/@next-core/cook@1.6.32...@next-core/cook@1.6.33) (2022-07-05)
|
|
47
35
|
|
|
48
36
|
**Note:** Version bump only for package @next-core/cook
|
|
49
37
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
38
|
## [1.6.32](https://github.com/easyops-cn/next-core/compare/@next-core/cook@1.6.31...@next-core/cook@1.6.32) (2022-06-24)
|
|
55
39
|
|
|
56
40
|
**Note:** Version bump only for package @next-core/cook
|
|
57
41
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
42
|
## [1.6.31](https://github.com/easyops-cn/next-core/compare/@next-core/cook@1.6.30...@next-core/cook@1.6.31) (2022-06-24)
|
|
63
43
|
|
|
64
44
|
**Note:** Version bump only for package @next-core/cook
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-free.js","names":["IsPropertyReference","V","Base","EnvironmentRecord","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","Empty","CompletionRecord","GetValue","ReferenceRecord","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":["IsPropertyReference","V","Base","EnvironmentRecord","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","collectBoundNames","CreateImmutableBinding","CreateMutableBinding","LoopContinues","completion","Type","UpdateEmpty","value","Value","Empty","CompletionRecord","GetValue","ReferenceRecord","ReferenceError","GetBindingValue","Strict","ToPropertyKey","arg","String","GetV","P","PutValue","SetMutableBinding","NormalCompletion","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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"}
|