@next-core/cook 1.6.37 → 1.6.40

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 CHANGED
@@ -3,23 +3,18 @@
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.37](https://github.com/easyops-cn/next-core/compare/@next-core/cook@1.6.36...@next-core/cook@1.6.37) (2022-07-15)
7
-
8
- **Note:** Version bump only for package @next-core/cook
9
-
6
+ ## [1.6.40](https://github.com/easyops-cn/next-core/compare/@next-core/cook@1.6.39...@next-core/cook@1.6.40) (2022-08-08)
10
7
 
11
8
 
9
+ ### Bug Fixes
12
10
 
13
-
14
- ## [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)
15
-
16
- **Note:** Version bump only for package @next-core/cook
11
+ * fix linting with var in muti-line ([28c1f26](https://github.com/easyops-cn/next-core/commit/28c1f2611138f67ee650c942a86b217e77f30ba4))
17
12
 
18
13
 
19
14
 
20
15
 
21
16
 
22
- ## [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)
17
+ ## [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)
23
18
 
24
19
  **Note:** Version bump only for package @next-core/cook
25
20
 
@@ -27,30 +22,34 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
27
22
 
28
23
 
29
24
 
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)
25
+ ## [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)
31
26
 
32
27
  **Note:** Version bump only for package @next-core/cook
33
28
 
29
+ ## [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)
34
30
 
31
+ **Note:** Version bump only for package @next-core/cook
35
32
 
33
+ ## [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)
36
34
 
35
+ **Note:** Version bump only for package @next-core/cook
37
36
 
38
- ## [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)
37
+ ## [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)
39
38
 
40
39
  **Note:** Version bump only for package @next-core/cook
41
40
 
41
+ ## [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)
42
42
 
43
+ **Note:** Version bump only for package @next-core/cook
43
44
 
45
+ ## [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)
44
46
 
47
+ **Note:** Version bump only for package @next-core/cook
45
48
 
46
49
  ## [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)
47
50
 
48
51
  **Note:** Version bump only for package @next-core/cook
49
52
 
50
-
51
-
52
-
53
-
54
53
  ## [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)
55
54
 
56
55
  **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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"}