@next-core/cook 1.6.38 → 1.6.41

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