@ibyar/expressions 0.3.8 → 0.5.0
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/README.md +22 -12
- package/api/abstract.d.ts +20 -4
- package/api/abstract.js +54 -3
- package/api/abstract.js.map +1 -1
- package/api/app/class.d.ts +21 -11
- package/api/app/class.js +28 -10
- package/api/app/class.js.map +1 -1
- package/api/app/program.d.ts +6 -3
- package/api/app/program.js +7 -3
- package/api/app/program.js.map +1 -1
- package/api/computing/call.d.ts +5 -2
- package/api/computing/call.js +8 -2
- package/api/computing/call.js.map +1 -1
- package/api/computing/new.d.ts +5 -2
- package/api/computing/new.js +10 -2
- package/api/computing/new.js.map +1 -1
- package/api/computing/rest.d.ts +5 -2
- package/api/computing/rest.js +8 -2
- package/api/computing/rest.js.map +1 -1
- package/api/computing/return.d.ts +5 -2
- package/api/computing/return.js +8 -2
- package/api/computing/return.js.map +1 -1
- package/api/computing/spread.d.ts +5 -2
- package/api/computing/spread.js +8 -2
- package/api/computing/spread.js.map +1 -1
- package/api/computing/throw.d.ts +11 -4
- package/api/computing/throw.js +23 -6
- package/api/computing/throw.js.map +1 -1
- package/api/computing/yield.d.ts +18 -0
- package/api/computing/yield.js +51 -0
- package/api/computing/yield.js.map +1 -0
- package/api/definition/array.d.ts +10 -3
- package/api/definition/array.js +20 -4
- package/api/definition/array.js.map +1 -1
- package/api/definition/bind.d.ts +5 -2
- package/api/definition/bind.js +10 -9
- package/api/definition/bind.js.map +1 -1
- package/api/definition/comment.d.ts +5 -1
- package/api/definition/comment.js +6 -4
- package/api/definition/comment.js.map +1 -1
- package/api/definition/function.d.ts +26 -10
- package/api/definition/function.js +123 -54
- package/api/definition/function.js.map +1 -1
- package/api/definition/member.d.ts +5 -2
- package/api/definition/member.js +19 -7
- package/api/definition/member.js.map +1 -1
- package/api/definition/object.d.ts +14 -5
- package/api/definition/object.js +32 -6
- package/api/definition/object.js.map +1 -1
- package/api/definition/statement.d.ts +6 -2
- package/api/definition/statement.js +11 -2
- package/api/definition/statement.js.map +1 -1
- package/api/definition/values.d.ts +20 -7
- package/api/definition/values.js +37 -9
- package/api/definition/values.js.map +1 -1
- package/api/deserialize/deserialize.js +3 -3
- package/api/deserialize/deserialize.js.map +1 -1
- package/api/deserialize/type-store.d.ts +2 -0
- package/api/deserialize/type-store.js +2 -0
- package/api/deserialize/type-store.js.map +1 -0
- package/api/expression.d.ts +27 -5
- package/api/expression.js.map +1 -1
- package/api/index.d.ts +1 -0
- package/api/index.js +1 -0
- package/api/index.js.map +1 -1
- package/api/module/export.d.ts +7 -2
- package/api/module/export.js +15 -1
- package/api/module/export.js.map +1 -1
- package/api/module/import.d.ts +7 -2
- package/api/module/import.js +15 -1
- package/api/module/import.js.map +1 -1
- package/api/module/module.d.ts +6 -2
- package/api/module/module.js +11 -2
- package/api/module/module.js.map +1 -1
- package/api/operators/assignment.d.ts +2 -1
- package/api/operators/assignment.js +4 -0
- package/api/operators/assignment.js.map +1 -1
- package/api/operators/await.d.ts +6 -2
- package/api/operators/await.js +12 -3
- package/api/operators/await.js.map +1 -1
- package/api/operators/binary.d.ts +2 -1
- package/api/operators/binary.js +4 -0
- package/api/operators/binary.js.map +1 -1
- package/api/operators/chaining.d.ts +5 -2
- package/api/operators/chaining.js +9 -2
- package/api/operators/chaining.js.map +1 -1
- package/api/operators/comma.d.ts +6 -2
- package/api/operators/comma.js +11 -2
- package/api/operators/comma.js.map +1 -1
- package/api/operators/grouping.d.ts +6 -2
- package/api/operators/grouping.js +11 -2
- package/api/operators/grouping.js.map +1 -1
- package/api/operators/logical.d.ts +2 -1
- package/api/operators/logical.js +4 -0
- package/api/operators/logical.js.map +1 -1
- package/api/operators/pipeline.d.ts +6 -2
- package/api/operators/pipeline.js +21 -6
- package/api/operators/pipeline.js.map +1 -1
- package/api/operators/ternary.d.ts +6 -2
- package/api/operators/ternary.js +17 -2
- package/api/operators/ternary.js.map +1 -1
- package/api/operators/unary.d.ts +6 -2
- package/api/operators/unary.js +20 -5
- package/api/operators/unary.js.map +1 -1
- package/api/operators/update.d.ts +6 -2
- package/api/operators/update.js +11 -2
- package/api/operators/update.js.map +1 -1
- package/api/statement/control/block.d.ts +6 -2
- package/api/statement/control/block.js +11 -2
- package/api/statement/control/block.js.map +1 -1
- package/api/statement/control/empty.d.ts +5 -1
- package/api/statement/control/empty.js +5 -1
- package/api/statement/control/empty.js.map +1 -1
- package/api/statement/control/if.d.ts +6 -2
- package/api/statement/control/if.js +16 -2
- package/api/statement/control/if.js.map +1 -1
- package/api/statement/control/switch.d.ts +13 -3
- package/api/statement/control/switch.js +35 -9
- package/api/statement/control/switch.js.map +1 -1
- package/api/statement/control/terminate.d.ts +9 -4
- package/api/statement/control/terminate.js +11 -1
- package/api/statement/control/terminate.js.map +1 -1
- package/api/statement/declarations/declares.d.ts +10 -3
- package/api/statement/declarations/declares.js +25 -6
- package/api/statement/declarations/declares.js.map +1 -1
- package/api/statement/iterations/for.d.ts +18 -5
- package/api/statement/iterations/for.js +67 -8
- package/api/statement/iterations/for.js.map +1 -1
- package/api/statement/iterations/while.d.ts +10 -3
- package/api/statement/iterations/while.js +26 -4
- package/api/statement/iterations/while.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/package.json +12 -4
- package/scope/event.d.ts +5 -0
- package/scope/event.js +41 -0
- package/scope/event.js.map +1 -0
- package/scope/index.d.ts +1 -0
- package/scope/index.js +1 -0
- package/scope/index.js.map +1 -1
- package/scope/proxy.d.ts +18 -6
- package/scope/proxy.js +57 -9
- package/scope/proxy.js.map +1 -1
- package/scope/scope.d.ts +71 -61
- package/scope/scope.js +104 -52
- package/scope/scope.js.map +1 -1
- package/scope/stack.d.ts +28 -28
- package/scope/stack.js.map +1 -1
- package/v8/nodes.d.ts +1 -1
- package/v8/parser.d.ts +2 -1
- package/v8/parser.js +16 -10
- package/v8/parser.js.map +1 -1
- package/v8/stream.d.ts +4 -2
- package/v8/stream.js +39 -17
- package/v8/stream.js.map +1 -1
- package/v8/token.d.ts +1 -1
- package/v8/token.js.map +1 -1
- package/visit/index.d.ts +1 -0
- package/visit/index.js +2 -0
- package/visit/index.js.map +1 -0
- package/visit/visitor.d.ts +11 -0
- package/visit/visitor.js +42 -0
- package/visit/visitor.js.map +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserialize.js","sourceRoot":"","sources":["../../../../src/expressions/api/deserialize/deserialize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deserialize.js","sourceRoot":"","sources":["../../../../src/expressions/api/deserialize/deserialize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIlD,MAAM,UAAU,YAAY,CAAC,IAAY;IACxC,OAAO,CAAC,MAA8C,EAAE,EAAE;QACzD,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;QACjC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC;IACf,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAoB;IACjD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAQD,MAAM,UAAU,WAAW,CAAC,IAAoB;IAC/C,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAO,IAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IACjE,IAAI,QAAQ,EAAE;QACb,OAAO,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;KACnC;SAAM;QACN,MAAM,IAAI,KAAK,CAAC,4CAA4C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACrF;AACF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC","sourcesContent":["import type { ExpressionNode, NodeExpressionWithType } from '../expression.js';\nimport { expressionTypes } from './type-store.js';\n\n\n\nexport function Deserializer(type: string): Function {\n\treturn (target: NodeExpressionWithType<ExpressionNode>) => {\n\t\tReflect.set(target, 'type', type)\n\t\texpressionTypes.set(type, target);\n\t\treturn target;\n\t};\n}\n\nexport function serializeNode(node: ExpressionNode) {\n\treturn JSON.stringify(node);\n}\n\n\n/**\n * convert from json expression `JSON.stringify(node)` or `serializeNode` to `ExpressionNode`\n * @param node as type `NodeJsonType`\n * @returns ExpressionNode\n */\nexport function deserialize(node: ExpressionNode) {\n\tconst fromJSON = expressionTypes.get((<any>node).type)?.fromJSON;\n\tif (fromJSON) {\n\t\treturn fromJSON(node, deserialize);\n\t} else {\n\t\tthrow new Error(`Couldn't find Expression class for name: ${JSON.stringify(node)}.`);\n\t}\n}\n\nexport function deserializeNode(node: string) {\n\tconst exp = JSON.parse(node);\n\treturn deserialize(exp);\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-store.js","sourceRoot":"","sources":["../../../../src/expressions/api/deserialize/type-store.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,eAAe,GAAwD,IAAI,GAAG,EAAE,CAAC","sourcesContent":["import type { ExpressionNode, NodeExpressionWithType } from '../expression.js';\n\n\nexport const expressionTypes: Map<string, NodeExpressionWithType<ExpressionNode>> = new Map();\n"]}
|
package/api/expression.d.ts
CHANGED
|
@@ -6,20 +6,42 @@ export declare type NodeType = {
|
|
|
6
6
|
export declare type NodeJsonType = {
|
|
7
7
|
[key: string]: any;
|
|
8
8
|
} & NodeType;
|
|
9
|
+
export declare type ExpressionEventPathDotNotation = {
|
|
10
|
+
computed: false;
|
|
11
|
+
path: string;
|
|
12
|
+
};
|
|
13
|
+
export declare type ExpressionEventPathBracketNotation = {
|
|
14
|
+
computed: true;
|
|
15
|
+
path: string;
|
|
16
|
+
computedPath: ExpressionEventPath[][];
|
|
17
|
+
};
|
|
18
|
+
export declare type ExpressionEventPath = ExpressionEventPathDotNotation | ExpressionEventPathBracketNotation;
|
|
19
|
+
export declare type ExpressionEventMap = {
|
|
20
|
+
[key: string]: ExpressionEventMap;
|
|
21
|
+
};
|
|
9
22
|
export interface ExpressionNode {
|
|
23
|
+
shareVariables(scopeList: Scope<any>[]): void;
|
|
10
24
|
set(stack: Stack, value: any): any;
|
|
11
25
|
get(stack: Stack, thisContext?: any): any;
|
|
12
|
-
|
|
26
|
+
dependency(computed?: true): ExpressionNode[];
|
|
27
|
+
dependencyPath(computed?: true): ExpressionEventPath[];
|
|
28
|
+
events(): ExpressionEventMap;
|
|
13
29
|
toString(): string;
|
|
14
|
-
toJSON(
|
|
30
|
+
toJSON(): NodeJsonType;
|
|
15
31
|
getClass(): NodeExpressionClass<ExpressionNode>;
|
|
16
32
|
}
|
|
17
33
|
interface TypeOf<T> {
|
|
18
34
|
new (...params: any[]): T;
|
|
19
35
|
}
|
|
20
|
-
export declare type NodeDeserializer<
|
|
21
|
-
export
|
|
22
|
-
|
|
36
|
+
export declare type NodeDeserializer<N = ExpressionNode> = (node: N) => N;
|
|
37
|
+
export declare type VisitNodeType = (expression: ExpressionNode) => void;
|
|
38
|
+
export declare type VisitNodeListType = (expressions: ExpressionNode[]) => void;
|
|
39
|
+
export interface NodeExpressionClass<N extends ExpressionNode> extends TypeOf<N> {
|
|
40
|
+
fromJSON(node: N, deserializer: NodeDeserializer): N;
|
|
41
|
+
visit?(node: N, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void;
|
|
42
|
+
}
|
|
43
|
+
export interface NodeExpressionWithType<N extends ExpressionNode> extends NodeExpressionClass<N> {
|
|
44
|
+
type: string;
|
|
23
45
|
}
|
|
24
46
|
export interface CanDeclareExpression extends ExpressionNode {
|
|
25
47
|
declareVariable(stack: Stack, scopeType: ScopeType, propertyValue?: any): any;
|
package/api/expression.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../src/expressions/api/expression.ts"],"names":[],"mappings":"","sourcesContent":["import type { Scope, ScopeType } from '../scope/scope.js';\nimport type { Stack } from '../scope/stack.js';\n\nexport type NodeType = { type: string };\nexport type NodeJsonType = { [key: string]: any } & NodeType;\n\nexport interface ExpressionNode {\n\n\t/**\n\t * assign the value to this expression in stack.\n\t * \n\t * most ExpressionNode will not implement this method, and will throw an exception.\n\t * @param stack \n\t * @param value \n\t */\n\tset(stack: Stack, value: any): any;\n\n\t/**\n\t * execute/get the code for this expression and return the result value.\n\t * @param stack \n\t * @param thisContext \n\t */\n\tget(stack: Stack, thisContext?: any): any;\n\n\t/**\n\t * get all the events form this expression\n\t * @param parent \n\t */\n\tevents(
|
|
1
|
+
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../src/expressions/api/expression.ts"],"names":[],"mappings":"","sourcesContent":["import type { Scope, ScopeType } from '../scope/scope.js';\nimport type { Stack } from '../scope/stack.js';\n\nexport type NodeType = { type: string };\nexport type NodeJsonType = { [key: string]: any } & NodeType;\n\nexport type ExpressionEventPathDotNotation = { computed: false, path: string };\nexport type ExpressionEventPathBracketNotation = { computed: true, path: string, computedPath: ExpressionEventPath[][] };\nexport type ExpressionEventPath = ExpressionEventPathDotNotation | ExpressionEventPathBracketNotation;\nexport type ExpressionEventMap = { [key: string]: ExpressionEventMap };\n\nexport interface ExpressionNode {\n\n\t/**\n\t * pass scope list from outer function to inner function,\n\t * \n\t * all other end point expression should do nothing,\n\t * if this function executed.\n\t * \n\t * @param scopeList all outer function scopes given to the inner function,\n\t * this solution ignore the fact that some inner function has no need to\n\t * get shared variables, as its implementation never say that\n\t * ```js\n\t * function f(d) {\n\t * \t\tfunction g() {\n\t * \t\t\tconst a = ({ d }) => d;\n\t * \t\t\treturn a;\n\t * \t\t}\n\t * \t\treturn [d, g];\n\t * }\n\t * ```\n\t */\n\tshareVariables(scopeList: Scope<any>[]): void;\n\n\t/**\n\t * assign the value to this expression in stack.\n\t * \n\t * most ExpressionNode will not implement this method, and will throw an exception.\n\t * @param stack \n\t * @param value \n\t */\n\tset(stack: Stack, value: any): any;\n\n\t/**\n\t * execute/get the code for this expression and return the result value.\n\t * @param stack \n\t * @param thisContext \n\t */\n\tget(stack: Stack, thisContext?: any): any;\n\n\t/**\n\t * get all dependencies form an expression node\n\t *\n\t * tha return from this method, is represent an answer for what identifiers this expression depends-on.\n\t * \n\t *\n\t * ex:\n\t * ```js\n\t * x + y;\n\t * ```\n\t *\n\t * - for `+` operator :\tthe answer should be `lhs` and `rhs`,\n\t * - for `x` identifier:\tthe answer should be node `x`,\n\t * - for `y` identifier:\tthe answer should be node `y`.\n\t *\n\t * so, the return from `+` will be `[ node 'x', node 'y']`\n\t *\n\t * and:\n\t * - `x.y.z * a` ==> `[ member node `x.y.z`, identifier 'a']`\n\t * @param computed\n\t */\n\tdependency(computed?: true): ExpressionNode[];\n\n\t/**\n\t * ex:\n\t * ```js\n\t * x + y;\n\t * ```\n\t *\n\t * - for `+` operator :\tthe answer should be `lhs` and `rhs`,\n\t * - for `x` identifier:\tthe answer should be node `x`,\n\t * - for `y` identifier:\tthe answer should be node `y`.\n\t *\n\t * so, the return from `+` will be `['x', 'y']`\n\t *\n\t * and:\n\t * - `x.y.z` ==> `['x', 'y', 'z']`\n\t * - `x[y].z` ==> ['x', ]\n\t * @param computed required for member and chaining operators\n\t */\n\tdependencyPath(computed?: true): ExpressionEventPath[];\n\n\t/**\n\t * get all the events form this expression\n\t * \n\t * tha return from this method, is represent an answer for what is this expression depends-on as identifier name\n\t * \n\t * ex: \n\t * ```js\n\t * x + y;\n\t * ```\n\t * \n\t * - for `+` operator :\tthe answer should be `lhs` and `rhs`,\n\t * - for `x` identifier: the answer should be `x`\n\t * - for `y` identifier: the answer should be `y`\n\t * the final output will be \n\t * \n\t * so, the return from `+` will be `{ x: undefined, y: undefined }`\n\t * \n\t * and:\n\t * - `x.y.z * a` ==> `{ x: { y: { z: undefined }, a: undefined } }`\n\t * - `x.y.z > x.y.h.g` ==> `{ x: { y: { z: undefined, h: { g: undefined} } } }`\n\t * - `x[Symbol.toStringTag] + 'Class' + classType + array[3]` ==> `{ x: { 'Symbol.toStringTag': undefined }, classType: undefined, array: { 3: undefined } }`\n\t * - `'name'` ==> {}\n\t * - ```js\n\t * user[firstName + `son of ${fatherName}`]\n\t * ``` ==> `{ user: { 'firstName:fatherName': undefined }, firstName: undefined, fatherName: undefined }`\n\t * @param parent \n\t */\n\tevents(): ExpressionEventMap;\n\n\n\t/**\n\t * re-write this expression as a javascript source \n\t */\n\ttoString(): string;\n\n\t/**\n\t * used to map this object to represent an [ESTree](https://github.com/estree/estree) json object\n\t * @param key \n\t */\n\ttoJSON(): NodeJsonType;\n\n\t/**\n\t * just a helper method to force class that implement this interface to\n\t * have a static method `fromJSON` to help reconstruct this ExpressionNode\n\t * from an [ESTree](https://github.com/estree/estree) json object,\n\t * with all necessary implementation to execute the code\n\t */\n\tgetClass(): NodeExpressionClass<ExpressionNode>;\n}\n\ninterface TypeOf<T> {\n\tnew(...params: any[]): T;\n}\n\nexport type NodeDeserializer<N = ExpressionNode> = (node: N) => N;\n\nexport type VisitNodeType = (expression: ExpressionNode) => void;\nexport type VisitNodeListType = (expressions: ExpressionNode[]) => void;\n\n/**\n * this is how to:\n * describe a class with it's static functions and properties\n * in the interface add getClass method\n */\nexport interface NodeExpressionClass<N extends ExpressionNode> extends TypeOf<N> {\n\n\t/**\n\t * build expression node from [ESTree](https://github.com/estree/estree) json object\n\t * @param node \n\t * @param deserializer \n\t */\n\tfromJSON(node: N, deserializer: NodeDeserializer): N;\n\n\t/**\n\t * visit nodes inside expression\n\t * @param expression \n\t * @param callback \n\t */\n\tvisit?(node: N, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void;\n}\n\nexport interface NodeExpressionWithType<N extends ExpressionNode> extends NodeExpressionClass<N> {\n\n\t/**\n\t * the type of an expression\n\t */\n\ttype: string;\n}\n\nexport interface CanDeclareExpression extends ExpressionNode {\n\t/**\n\t * declare variable in the current local scope (block),\n\t * or closest function scope (global) scop,\n\t * the propertyName will be calculated at runtime\n\t * @param stack the stack which an identifier will be declared\n\t * @param propertyValue the initial value of identifier\n\t * @param scope which scop to declare this identifier\n\t */\n\tdeclareVariable(stack: Stack, scopeType: ScopeType, propertyValue?: any): any;\n}\n\n\n/**\n * An interface meant to be implemented by MemberExpression,\n * Identifier and ChainExpression and all Literal expressions\n */\nexport interface CanFindScope {\n\t/**\n\t * try to search for scope of this expression\n\t * @param stack \n\t */\n\tfindScope<T extends object>(stack: Stack): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, scope: Scope<any>): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, scope?: Scope<any>): Scope<T> | undefined;\n}\n"]}
|
package/api/index.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export * from './computing/return.js';
|
|
|
15
15
|
export * from './computing/spread.js';
|
|
16
16
|
export * from './computing/rest.js';
|
|
17
17
|
export * from './computing/throw.js';
|
|
18
|
+
export * from './computing/yield.js';
|
|
18
19
|
export * from './operators/assignment.js';
|
|
19
20
|
export * from './operators/await.js';
|
|
20
21
|
export * from './operators/binary.js';
|
package/api/index.js
CHANGED
|
@@ -15,6 +15,7 @@ export * from './computing/return.js';
|
|
|
15
15
|
export * from './computing/spread.js';
|
|
16
16
|
export * from './computing/rest.js';
|
|
17
17
|
export * from './computing/throw.js';
|
|
18
|
+
export * from './computing/yield.js';
|
|
18
19
|
export * from './operators/assignment.js';
|
|
19
20
|
export * from './operators/await.js';
|
|
20
21
|
export * from './operators/binary.js';
|
package/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/expressions/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAE9B,cAAc,8BAA8B,CAAC;AAE7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/expressions/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAE9B,cAAc,8BAA8B,CAAC;AAE7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AAErC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AAEjD,cAAc,sCAAsC,CAAC;AAErD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC","sourcesContent":["export * from './expression.js';\nexport * from './abstract.js';\n\nexport * from './deserialize/deserialize.js';\n\nexport * from './definition/values.js';\nexport * from './definition/array.js';\nexport * from './definition/comment.js';\nexport * from './definition/function.js';\nexport * from './definition/member.js';\nexport * from './definition/bind.js';\nexport * from './definition/object.js';\nexport * from './definition/statement.js';\n\nexport * from './computing/call.js';\nexport * from './computing/new.js';\nexport * from './computing/return.js';\nexport * from './computing/spread.js';\nexport * from './computing/rest.js';\nexport * from './computing/throw.js';\nexport * from './computing/yield.js';\n\nexport * from './operators/assignment.js';\nexport * from './operators/await.js';\nexport * from './operators/binary.js';\nexport * from './operators/chaining.js';\nexport * from './operators/comma.js';\nexport * from './operators/grouping.js';\nexport * from './operators/logical.js';\nexport * from './operators/pipeline.js';\nexport * from './operators/ternary.js';\nexport * from './operators/types.js';\nexport * from './operators/unary.js';\nexport * from './operators/update.js';\n\nexport * from './statement/control/block.js';\nexport * from './statement/control/empty.js';\nexport * from './statement/control/if.js';\nexport * from './statement/control/switch.js';\nexport * from './statement/control/terminate.js';\n\nexport * from './statement/declarations/declares.js';\n\nexport * from './statement/iterations/for.js';\nexport * from './statement/iterations/while.js';\n"]}
|
package/api/module/export.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import type { NodeDeserializer, ExpressionNode } from '../expression.js';
|
|
1
|
+
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType, VisitNodeListType } from '../expression.js';
|
|
2
|
+
import type { Scope } from '../../scope/scope.js';
|
|
2
3
|
import type { Stack } from '../../scope/stack.js';
|
|
3
4
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
4
5
|
export declare class ExportAliasName {
|
|
5
6
|
exportName: ExpressionNode;
|
|
6
7
|
protected _aliasName?: ExpressionNode | undefined;
|
|
8
|
+
static visit(node: ExportAliasName, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void;
|
|
7
9
|
constructor(exportName: ExpressionNode, _aliasName?: ExpressionNode | undefined);
|
|
8
10
|
get aliasName(): ExpressionNode;
|
|
9
11
|
set aliasName(_aliasName: ExpressionNode);
|
|
@@ -19,13 +21,16 @@ export declare class ExportNode extends AbstractExpressionNode {
|
|
|
19
21
|
private exportExpression?;
|
|
20
22
|
private moduleName?;
|
|
21
23
|
static fromJSON(node: ExportNode, deserializer: NodeDeserializer): ExportNode;
|
|
24
|
+
static visit(node: ExportNode, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void;
|
|
22
25
|
constructor(exportList?: ExportAliasName[] | undefined, starExport?: ExportAliasName | undefined, exportExpression?: ExportAliasName | undefined, moduleName?: ExpressionNode | undefined);
|
|
23
26
|
getModuleName(): ExpressionNode | undefined;
|
|
24
27
|
getExportExpression(): ExportAliasName | undefined;
|
|
25
28
|
getExportList(): ExportAliasName[] | undefined;
|
|
29
|
+
shareVariables(scopeList: Scope<any>[]): void;
|
|
26
30
|
set(stack: Stack): void;
|
|
27
31
|
get(stack: Stack): void;
|
|
28
|
-
|
|
32
|
+
dependency(computed?: true): ExpressionNode[];
|
|
33
|
+
dependencyPath(computed?: true): ExpressionEventPath[];
|
|
29
34
|
toString(): string;
|
|
30
35
|
toJson(): object;
|
|
31
36
|
}
|
package/api/module/export.js
CHANGED
|
@@ -7,6 +7,10 @@ export class ExportAliasName {
|
|
|
7
7
|
this.exportName = exportName;
|
|
8
8
|
this._aliasName = _aliasName;
|
|
9
9
|
}
|
|
10
|
+
static visit(node, visitNode, visitNodeList) {
|
|
11
|
+
visitNode(node.exportName);
|
|
12
|
+
node.aliasName && visitNode(node.aliasName);
|
|
13
|
+
}
|
|
10
14
|
get aliasName() {
|
|
11
15
|
return this._aliasName || this.exportName;
|
|
12
16
|
}
|
|
@@ -37,6 +41,12 @@ let ExportNode = ExportNode_1 = class ExportNode extends AbstractExpressionNode
|
|
|
37
41
|
static fromJSON(node, deserializer) {
|
|
38
42
|
return new ExportNode_1(node.exportList?.map(expo => new ExportAliasName(deserializer(expo.exportName), deserializer(expo.aliasName))), node.starExport ? new ExportAliasName(deserializer(node.starExport.exportName), deserializer(node.starExport.aliasName)) : void 0, node.exportExpression ? new ExportAliasName(deserializer(node.exportExpression.exportName), deserializer(node.exportExpression.aliasName)) : void 0, node.moduleName ? deserializer(node.moduleName) : void 0);
|
|
39
43
|
}
|
|
44
|
+
static visit(node, visitNode, visitNodeList) {
|
|
45
|
+
node.exportList?.map(expo => ExportAliasName.visit(expo, visitNode, visitNodeList));
|
|
46
|
+
node.starExport && ExportAliasName.visit(node.starExport, visitNode, visitNodeList);
|
|
47
|
+
node.exportExpression && ExportAliasName.visit(node.exportExpression, visitNode, visitNodeList);
|
|
48
|
+
node.moduleName && visitNode(node.moduleName);
|
|
49
|
+
}
|
|
40
50
|
getModuleName() {
|
|
41
51
|
return this.moduleName;
|
|
42
52
|
}
|
|
@@ -46,13 +56,17 @@ let ExportNode = ExportNode_1 = class ExportNode extends AbstractExpressionNode
|
|
|
46
56
|
getExportList() {
|
|
47
57
|
return this.exportList;
|
|
48
58
|
}
|
|
59
|
+
shareVariables(scopeList) { }
|
|
49
60
|
set(stack) {
|
|
50
61
|
throw new Error(`ExportNode.#set() has no implementation.`);
|
|
51
62
|
}
|
|
52
63
|
get(stack) {
|
|
53
64
|
throw new Error(`ExportNode.#get() has no implementation.`);
|
|
54
65
|
}
|
|
55
|
-
|
|
66
|
+
dependency(computed) {
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
dependencyPath(computed) {
|
|
56
70
|
return [];
|
|
57
71
|
}
|
|
58
72
|
toString() {
|
package/api/module/export.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../../../src/expressions/api/module/export.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../../../src/expressions/api/module/export.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, ExpressionEventPath,\n\tVisitNodeType, VisitNodeListType\n} from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\nexport class ExportAliasName {\n\tstatic visit(node: ExportAliasName, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void {\n\t\tvisitNode(node.exportName);\n\t\tnode.aliasName && visitNode(node.aliasName);\n\t}\n\tconstructor(public exportName: ExpressionNode, protected _aliasName?: ExpressionNode) { }\n\n\tpublic get aliasName(): ExpressionNode {\n\t\treturn this._aliasName || this.exportName;\n\t}\n\n\tpublic set aliasName(_aliasName: ExpressionNode) {\n\t\tthis._aliasName = _aliasName;\n\t}\n\n\ttoString() {\n\t\tif (this._aliasName) {\n\t\t\treturn `${this.exportName.toString()} as ${this._aliasName.toString()}`;\n\t\t}\n\t\treturn this.exportName.toString();\n\t}\n\n\ttoJSON() {\n\t\treturn {\n\t\t\texportName: this.exportName.toJSON(),\n\t\t\taliasName: this._aliasName?.toJSON()\n\t\t};\n\t}\n}\n\n/**\n * There are two types of exports:\n * 1- Named Exports (Zero or more exports per module)\n * 2- Default Exports (One per module)\n * \n * // Exporting individual features\n * export let name1, name2, …, nameN; // also var, const\n * export let name1 = …, name2 = …, …, nameN; // also var, const\n * export function functionName(){...}\n * export class ClassName {...}\n * \n * // Export list\n * export { name1, name2, …, nameN };\n * \n * // Renaming exports\n * export { variable1 as name1, variable2 as name2, …, nameN };\n * \n * // Exporting destructed assignments with renaming\n * export const { name1, name2: bar } = o;\n * \n * // Default exports\n * export default expression;\n * export default function (…) { … } // also class, function*\n * export default function name1(…) { … } // also class, function*\n * export { name1 as default, … };\n * \n * // Aggregating modules\n * export * from …; // does not set the default export\n * export * as name1 from …; // Draft ECMAScript® 2O21\n * export { name1, name2, …, nameN } from …;\n * export { import1 as name1, import2 as name2, …, nameN } from …;\n * export { default, … } from …;\n */\n@Deserializer('export')\nexport class ExportNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: ExportNode, deserializer: NodeDeserializer): ExportNode {\n\t\treturn new ExportNode(\n\t\t\tnode.exportList?.map(expo => new ExportAliasName(deserializer(expo.exportName), deserializer(expo.aliasName))),\n\t\t\tnode.starExport ? new ExportAliasName(deserializer(node.starExport.exportName), deserializer(node.starExport.aliasName)) : void 0,\n\t\t\tnode.exportExpression ? new ExportAliasName(deserializer(node.exportExpression.exportName), deserializer(node.exportExpression.aliasName)) : void 0,\n\t\t\tnode.moduleName ? deserializer(node.moduleName) : void 0\n\t\t);\n\t}\n\tstatic visit(node: ExportNode, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void {\n\t\tnode.exportList?.map(expo => ExportAliasName.visit(expo, visitNode, visitNodeList));\n\t\tnode.starExport && ExportAliasName.visit(node.starExport, visitNode, visitNodeList);\n\t\tnode.exportExpression && ExportAliasName.visit(node.exportExpression, visitNode, visitNodeList);\n\t\tnode.moduleName && visitNode(node.moduleName);\n\t}\n\tconstructor(\n\t\tprivate exportList?: ExportAliasName[],\n\t\tprivate starExport?: ExportAliasName,\n\t\tprivate exportExpression?: ExportAliasName,\n\t\tprivate moduleName?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetModuleName() {\n\t\treturn this.moduleName;\n\t}\n\tgetExportExpression() {\n\t\treturn this.exportExpression;\n\t}\n\tgetExportList() {\n\t\treturn this.exportList;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack) {\n\t\tthrow new Error(`ExportNode.#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tthrow new Error(`ExportNode.#get() has no implementation.`);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn [];\n\t}\n\ttoString() {\n\t\t// Aggregating modules\n\t\tif (this.exportList && this.moduleName) {\n\t\t\treturn `export { ${this.exportList.map(expo => expo.toString()).join(', ')} } from '${this.moduleName.toString()}';`;\n\t\t}\n\t\tif (this.starExport && this.moduleName) {\n\t\t\treturn `export ${this.starExport.toString()} from '${this.moduleName.toString()}';`;\n\t\t}\n\n\t\tif (this.exportList) {\n\t\t\treturn `export { ${this.exportList.map(expo => expo.toString()).join(', ')} };`;\n\t\t}\n\t\tif (this.exportExpression) {\n\t\t\treturn `export ${this.exportExpression.toString()};`;\n\t\t}\n\t\tthrow new Error(`not enough params found,at least 'exportExpression' should be initialized.`);\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\texportList: this.exportList?.map(expression => expression.toJSON()),\n\t\t\tstarExport: this.starExport?.toJSON(),\n\t\t\texportExpression: this.exportExpression?.toJSON(),\n\t\t\tmoduleName: this.moduleName?.toJSON(),\n\t\t};\n\t}\n}\n"]}
|
package/api/module/import.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import type { NodeDeserializer, ExpressionNode } from '../expression.js';
|
|
1
|
+
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType, VisitNodeListType } from '../expression.js';
|
|
2
|
+
import type { Scope } from '../../scope/scope.js';
|
|
2
3
|
import type { Stack } from '../../scope/stack.js';
|
|
3
4
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
4
5
|
export declare class ImportAliasName {
|
|
5
6
|
importName: ExpressionNode;
|
|
6
7
|
protected _aliasName?: ExpressionNode | undefined;
|
|
8
|
+
static visit(node: ImportAliasName, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void;
|
|
7
9
|
constructor(importName: ExpressionNode, _aliasName?: ExpressionNode | undefined);
|
|
8
10
|
get aliasName(): ExpressionNode;
|
|
9
11
|
set aliasName(_aliasName: ExpressionNode);
|
|
@@ -19,14 +21,17 @@ export declare class ImportNode extends AbstractExpressionNode {
|
|
|
19
21
|
private namespace?;
|
|
20
22
|
private importAliasNames?;
|
|
21
23
|
static fromJSON(node: ImportNode, deserializer: NodeDeserializer): ImportNode;
|
|
24
|
+
static visit(node: ImportNode, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void;
|
|
22
25
|
constructor(moduleName: ExpressionNode, defaultExport?: ExpressionNode | undefined, namespace?: ExpressionNode | undefined, importAliasNames?: ImportAliasName[] | undefined);
|
|
23
26
|
getModuleName(): ExpressionNode;
|
|
24
27
|
getDefaultExport(): ExpressionNode | undefined;
|
|
25
28
|
getNamespace(): ExpressionNode | undefined;
|
|
26
29
|
getImportAliasNames(): ImportAliasName[] | undefined;
|
|
30
|
+
shareVariables(scopeList: Scope<any>[]): void;
|
|
27
31
|
set(stack: Stack): void;
|
|
28
32
|
get(stack: Stack): void;
|
|
29
|
-
|
|
33
|
+
dependency(computed?: true): ExpressionNode[];
|
|
34
|
+
dependencyPath(computed?: true): ExpressionEventPath[];
|
|
30
35
|
toString(): string;
|
|
31
36
|
toJson(): object;
|
|
32
37
|
}
|
package/api/module/import.js
CHANGED
|
@@ -7,6 +7,10 @@ export class ImportAliasName {
|
|
|
7
7
|
this.importName = importName;
|
|
8
8
|
this._aliasName = _aliasName;
|
|
9
9
|
}
|
|
10
|
+
static visit(node, visitNode, visitNodeList) {
|
|
11
|
+
visitNode(node.importName);
|
|
12
|
+
node.aliasName && visitNode(node.aliasName);
|
|
13
|
+
}
|
|
10
14
|
get aliasName() {
|
|
11
15
|
return this._aliasName || this.importName;
|
|
12
16
|
}
|
|
@@ -37,6 +41,12 @@ let ImportNode = ImportNode_1 = class ImportNode extends AbstractExpressionNode
|
|
|
37
41
|
static fromJSON(node, deserializer) {
|
|
38
42
|
return new ImportNode_1(deserializer(node.moduleName), node.defaultExport ? deserializer(node.defaultExport) : void 0, node.namespace ? deserializer(node.namespace) : void 0, node.importAliasNames?.map(expo => new ImportAliasName(deserializer(expo.importName), deserializer(expo.aliasName))));
|
|
39
43
|
}
|
|
44
|
+
static visit(node, visitNode, visitNodeList) {
|
|
45
|
+
visitNode(node.moduleName);
|
|
46
|
+
node.defaultExport && visitNode(node.defaultExport);
|
|
47
|
+
node.namespace && visitNode(node.namespace);
|
|
48
|
+
node.importAliasNames?.map(expo => ImportAliasName.visit(expo, visitNode, visitNodeList));
|
|
49
|
+
}
|
|
40
50
|
getModuleName() {
|
|
41
51
|
return this.moduleName;
|
|
42
52
|
}
|
|
@@ -49,13 +59,17 @@ let ImportNode = ImportNode_1 = class ImportNode extends AbstractExpressionNode
|
|
|
49
59
|
getImportAliasNames() {
|
|
50
60
|
return this.importAliasNames;
|
|
51
61
|
}
|
|
62
|
+
shareVariables(scopeList) { }
|
|
52
63
|
set(stack) {
|
|
53
64
|
throw new Error(`ImportNode.#set() has no implementation.`);
|
|
54
65
|
}
|
|
55
66
|
get(stack) {
|
|
56
67
|
throw new Error(`ImportNode.#get() has no implementation.`);
|
|
57
68
|
}
|
|
58
|
-
|
|
69
|
+
dependency(computed) {
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
72
|
+
dependencyPath(computed) {
|
|
59
73
|
return [];
|
|
60
74
|
}
|
|
61
75
|
toString() {
|
package/api/module/import.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../../../src/expressions/api/module/import.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NodeDeserializer, ExpressionNode } from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\nexport class ImportAliasName {\n\tconstructor(public importName: ExpressionNode, protected _aliasName?: ExpressionNode) { }\n\n\tpublic get aliasName(): ExpressionNode {\n\t\treturn this._aliasName || this.importName;\n\t}\n\n\tpublic set aliasName(_aliasName: ExpressionNode) {\n\t\tthis._aliasName = _aliasName;\n\t}\n\n\ttoString() {\n\t\tif (this._aliasName) {\n\t\t\treturn `${this.importName.toString()} as ${this._aliasName.toString()}`;\n\t\t}\n\t\treturn this.importName.toString();\n\t}\n\n\ttoJSON() {\n\t\treturn {\n\t\t\texportName: this.importName.toJSON(),\n\t\t\taliasName: this._aliasName?.toJSON()\n\t\t};\n\t}\n}\n\n\n/**\n * import defaultExport from \"module-name\";\\n\n * import * as name from \"module-name\";\\n\n * import { export1 } from \"module-name\";\n * import { export1 as alias1 } from \"module-name\";\n * import { export1 , export2 } from \"module-name\";\n * import { foo , bar } from \"module-name/path/to/specific/un-exported/file\";\n * import { export1 , export2 as alias2 , [...] } from \"module-name\";\n * import defaultExport, { export1 [ , [...] ] } from \"module-name\";\n * import defaultExport, * as name from \"module-name\";\n * import \"module-name\";\n * var promise = import(\"module-name\");\n */\n@Deserializer('import')\nexport class ImportNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: ImportNode, deserializer: NodeDeserializer): ImportNode {\n\t\treturn new ImportNode(\n\t\t\tdeserializer(node.moduleName),\n\t\t\tnode.defaultExport ? deserializer(node.defaultExport) : void 0,\n\t\t\tnode.namespace ? deserializer(node.namespace) : void 0,\n\t\t\tnode.importAliasNames?.map(expo => new ImportAliasName(deserializer(expo.importName), deserializer(expo.aliasName))),\n\t\t);\n\t}\n\tconstructor(\n\t\tprivate moduleName: ExpressionNode,\n\t\tprivate defaultExport?: ExpressionNode,\n\t\tprivate namespace?: ExpressionNode,\n\t\tprivate importAliasNames?: ImportAliasName[]) {\n\t\tsuper();\n\t}\n\tgetModuleName() {\n\t\treturn this.moduleName;\n\t}\n\tgetDefaultExport() {\n\t\treturn this.defaultExport;\n\t}\n\tgetNamespace() {\n\t\treturn this.namespace;\n\t}\n\tgetImportAliasNames() {\n\t\treturn this.importAliasNames;\n\t}\n\tset(stack: Stack) {\n\t\tthrow new Error(`ImportNode.#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tthrow new Error(`ImportNode.#get() has no implementation.`);\n\t}\n\tevents(parent?: string): string[] {\n\t\treturn [];\n\t}\n\ttoString() {\n\t\tif (this.defaultExport && this.namespace && this.importAliasNames) {\n\t\t\t// import defaultExport, * as name, { export1 , export2 as alias2 , [...] } from \"module-name;\n\t\t\treturn `import ${this.defaultExport.toString()}, * as ${this.namespace.toString()}, { ${this.importAliasNames.map(expo => expo.toString()).join(', ')} } from '${this.moduleName.toString()}';`;\n\t\t}\n\n\t\tif (this.defaultExport && this.importAliasNames) {\n\t\t\t// import defaultExport, { export1 , export2 as alias2 , [...] } from \"module-name;\n\t\t\treturn `import ${this.defaultExport.toString()}, { ${this.importAliasNames.map(expo => expo.toString()).join(', ')} } from '${this.moduleName.toString()}';`;\n\n\t\t}\n\t\tif (this.namespace && this.importAliasNames) {\n\n\t\t\t// import * as name, { export1 , export2 as alias2 , [...] } from \"module-name;\n\t\t\treturn `import * as ${this.namespace.toString()}, { ${this.importAliasNames.map(expo => expo.toString()).join(', ')} } from '${this.moduleName.toString()}';`;\n\t\t}\n\t\tif (this.namespace && this.defaultExport) {\n\n\t\t\t// import defaultExport, * as name from \"module-name;\n\t\t\treturn `import ${this.defaultExport.toString()}, * as ${this.namespace.toString()} from '${this.moduleName.toString()}';`;\n\t\t}\n\n\t\tif (this.importAliasNames) {\n\n\t\t\t// import { export1 , export2 as alias2 , [...] } from \"module-name;\n\t\t\treturn `import { ${this.importAliasNames.map(expo => expo.toString()).join(', ')} } from '${this.moduleName.toString()}';`;\n\t\t}\n\t\tif (this.defaultExport) {\n\n\t\t\t// import defaultExport from \"module-name;\n\t\t\treturn `import ${this.defaultExport.toString()} from '${this.moduleName.toString()}';`;\n\t\t}\n\t\tif (this.namespace) {\n\n\t\t\t// import * as name from \"module-name;\n\t\t\treturn `import * as ${this.namespace.toString()} from '${this.moduleName.toString()}';`;\n\t\t}\n\n\t\treturn `import '${this.moduleName.toString()}'`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tmoduleName: this.moduleName.toJSON(),\n\t\t\tdefaultExport: this.defaultExport?.toJSON(),\n\t\t\tnamespace: this.namespace?.toJSON(),\n\t\t\texportAliasNames: this.importAliasNames?.map(expression => expression.toJSON()),\n\t\t};\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../../../src/expressions/api/module/import.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, ExpressionEventPath,\n\tVisitNodeType, VisitNodeListType,\n} from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\nexport class ImportAliasName {\n\tstatic visit(node: ImportAliasName, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void {\n\t\tvisitNode(node.importName);\n\t\tnode.aliasName && visitNode(node.aliasName);\n\t}\n\tconstructor(public importName: ExpressionNode, protected _aliasName?: ExpressionNode) { }\n\n\tpublic get aliasName(): ExpressionNode {\n\t\treturn this._aliasName || this.importName;\n\t}\n\n\tpublic set aliasName(_aliasName: ExpressionNode) {\n\t\tthis._aliasName = _aliasName;\n\t}\n\n\ttoString() {\n\t\tif (this._aliasName) {\n\t\t\treturn `${this.importName.toString()} as ${this._aliasName.toString()}`;\n\t\t}\n\t\treturn this.importName.toString();\n\t}\n\n\ttoJSON() {\n\t\treturn {\n\t\t\texportName: this.importName.toJSON(),\n\t\t\taliasName: this._aliasName?.toJSON()\n\t\t};\n\t}\n}\n\n\n/**\n * import defaultExport from \"module-name\";\\n\n * import * as name from \"module-name\";\\n\n * import { export1 } from \"module-name\";\n * import { export1 as alias1 } from \"module-name\";\n * import { export1 , export2 } from \"module-name\";\n * import { foo , bar } from \"module-name/path/to/specific/un-exported/file\";\n * import { export1 , export2 as alias2 , [...] } from \"module-name\";\n * import defaultExport, { export1 [ , [...] ] } from \"module-name\";\n * import defaultExport, * as name from \"module-name\";\n * import \"module-name\";\n * var promise = import(\"module-name\");\n */\n@Deserializer('import')\nexport class ImportNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: ImportNode, deserializer: NodeDeserializer): ImportNode {\n\t\treturn new ImportNode(\n\t\t\tdeserializer(node.moduleName),\n\t\t\tnode.defaultExport ? deserializer(node.defaultExport) : void 0,\n\t\t\tnode.namespace ? deserializer(node.namespace) : void 0,\n\t\t\tnode.importAliasNames?.map(expo => new ImportAliasName(deserializer(expo.importName), deserializer(expo.aliasName))),\n\t\t);\n\t}\n\tstatic visit(node: ImportNode, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void {\n\t\tvisitNode(node.moduleName);\n\t\tnode.defaultExport && visitNode(node.defaultExport);\n\t\tnode.namespace && visitNode(node.namespace);\n\t\tnode.importAliasNames?.map(expo => ImportAliasName.visit(expo, visitNode, visitNodeList));\n\t}\n\tconstructor(\n\t\tprivate moduleName: ExpressionNode,\n\t\tprivate defaultExport?: ExpressionNode,\n\t\tprivate namespace?: ExpressionNode,\n\t\tprivate importAliasNames?: ImportAliasName[]) {\n\t\tsuper();\n\t}\n\tgetModuleName() {\n\t\treturn this.moduleName;\n\t}\n\tgetDefaultExport() {\n\t\treturn this.defaultExport;\n\t}\n\tgetNamespace() {\n\t\treturn this.namespace;\n\t}\n\tgetImportAliasNames() {\n\t\treturn this.importAliasNames;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack) {\n\t\tthrow new Error(`ImportNode.#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tthrow new Error(`ImportNode.#get() has no implementation.`);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn [];\n\t}\n\ttoString() {\n\t\tif (this.defaultExport && this.namespace && this.importAliasNames) {\n\t\t\t// import defaultExport, * as name, { export1 , export2 as alias2 , [...] } from \"module-name;\n\t\t\treturn `import ${this.defaultExport.toString()}, * as ${this.namespace.toString()}, { ${this.importAliasNames.map(expo => expo.toString()).join(', ')} } from '${this.moduleName.toString()}';`;\n\t\t}\n\n\t\tif (this.defaultExport && this.importAliasNames) {\n\t\t\t// import defaultExport, { export1 , export2 as alias2 , [...] } from \"module-name;\n\t\t\treturn `import ${this.defaultExport.toString()}, { ${this.importAliasNames.map(expo => expo.toString()).join(', ')} } from '${this.moduleName.toString()}';`;\n\n\t\t}\n\t\tif (this.namespace && this.importAliasNames) {\n\n\t\t\t// import * as name, { export1 , export2 as alias2 , [...] } from \"module-name;\n\t\t\treturn `import * as ${this.namespace.toString()}, { ${this.importAliasNames.map(expo => expo.toString()).join(', ')} } from '${this.moduleName.toString()}';`;\n\t\t}\n\t\tif (this.namespace && this.defaultExport) {\n\n\t\t\t// import defaultExport, * as name from \"module-name;\n\t\t\treturn `import ${this.defaultExport.toString()}, * as ${this.namespace.toString()} from '${this.moduleName.toString()}';`;\n\t\t}\n\n\t\tif (this.importAliasNames) {\n\n\t\t\t// import { export1 , export2 as alias2 , [...] } from \"module-name;\n\t\t\treturn `import { ${this.importAliasNames.map(expo => expo.toString()).join(', ')} } from '${this.moduleName.toString()}';`;\n\t\t}\n\t\tif (this.defaultExport) {\n\n\t\t\t// import defaultExport from \"module-name;\n\t\t\treturn `import ${this.defaultExport.toString()} from '${this.moduleName.toString()}';`;\n\t\t}\n\t\tif (this.namespace) {\n\n\t\t\t// import * as name from \"module-name;\n\t\t\treturn `import * as ${this.namespace.toString()} from '${this.moduleName.toString()}';`;\n\t\t}\n\n\t\treturn `import '${this.moduleName.toString()}'`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tmoduleName: this.moduleName.toJSON(),\n\t\t\tdefaultExport: this.defaultExport?.toJSON(),\n\t\t\tnamespace: this.namespace?.toJSON(),\n\t\t\texportAliasNames: this.importAliasNames?.map(expression => expression.toJSON()),\n\t\t};\n\t}\n}\n"]}
|
package/api/module/module.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { ExpressionNode, NodeDeserializer } from '../expression.js';
|
|
1
|
+
import type { ExpressionEventPath, ExpressionNode, NodeDeserializer, VisitNodeListType, VisitNodeType } from '../expression.js';
|
|
2
|
+
import type { Scope } from '../../scope/scope.js';
|
|
2
3
|
import type { Stack } from '../../scope/stack.js';
|
|
3
4
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
4
5
|
export declare class ModuleNode extends AbstractExpressionNode {
|
|
@@ -7,6 +8,7 @@ export declare class ModuleNode extends AbstractExpressionNode {
|
|
|
7
8
|
private body;
|
|
8
9
|
private meta;
|
|
9
10
|
static fromJSON(node: ModuleNode, deserializer: NodeDeserializer): ModuleNode;
|
|
11
|
+
static visit(node: ModuleNode, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void;
|
|
10
12
|
constructor(exportList: ExpressionNode[], importList: ExpressionNode[], body: ExpressionNode[], meta: {
|
|
11
13
|
name: string;
|
|
12
14
|
url: string;
|
|
@@ -14,9 +16,11 @@ export declare class ModuleNode extends AbstractExpressionNode {
|
|
|
14
16
|
getExportList(): ExpressionNode[];
|
|
15
17
|
getImportList(): ExpressionNode[];
|
|
16
18
|
getBody(): ExpressionNode[];
|
|
19
|
+
shareVariables(scopeList: Scope<any>[]): void;
|
|
17
20
|
set(stack: Stack): void;
|
|
18
21
|
get(stack: Stack): void;
|
|
19
|
-
|
|
22
|
+
dependency(computed?: true): ExpressionNode[];
|
|
23
|
+
dependencyPath(computed?: true): ExpressionEventPath[];
|
|
20
24
|
toString(): string;
|
|
21
25
|
toJson(): object;
|
|
22
26
|
}
|
package/api/module/module.js
CHANGED
|
@@ -13,6 +13,11 @@ let ModuleNode = ModuleNode_1 = class ModuleNode extends AbstractExpressionNode
|
|
|
13
13
|
static fromJSON(node, deserializer) {
|
|
14
14
|
return new ModuleNode_1(node.exportList.map(deserializer), node.importList.map(deserializer), node.body.map(deserializer), node.meta);
|
|
15
15
|
}
|
|
16
|
+
static visit(node, visitNode, visitNodeList) {
|
|
17
|
+
visitNodeList(node.exportList);
|
|
18
|
+
visitNodeList(node.importList);
|
|
19
|
+
visitNodeList(node.body);
|
|
20
|
+
}
|
|
16
21
|
getExportList() {
|
|
17
22
|
return this.exportList;
|
|
18
23
|
}
|
|
@@ -22,14 +27,18 @@ let ModuleNode = ModuleNode_1 = class ModuleNode extends AbstractExpressionNode
|
|
|
22
27
|
getBody() {
|
|
23
28
|
return this.body;
|
|
24
29
|
}
|
|
30
|
+
shareVariables(scopeList) { }
|
|
25
31
|
set(stack) {
|
|
26
32
|
throw new Error(`ModuleNode.#set() has no implementation.`);
|
|
27
33
|
}
|
|
28
34
|
get(stack) {
|
|
29
35
|
throw new Error(`ModuleNode.#get() has no implementation.`);
|
|
30
36
|
}
|
|
31
|
-
|
|
32
|
-
return this.body.flatMap(exp => exp.
|
|
37
|
+
dependency(computed) {
|
|
38
|
+
return this.body.flatMap(exp => exp.dependency(computed));
|
|
39
|
+
}
|
|
40
|
+
dependencyPath(computed) {
|
|
41
|
+
return this.body.flatMap(exp => exp.dependencyPath(computed));
|
|
33
42
|
}
|
|
34
43
|
toString() {
|
|
35
44
|
const importString = this.importList.map(imp => imp.toString()).join('\n');
|
package/api/module/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../src/expressions/api/module/module.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../src/expressions/api/module/module.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tExpressionEventPath, ExpressionNode, NodeDeserializer,\n\tVisitNodeListType, VisitNodeType\n} from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('module')\nexport class ModuleNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: ModuleNode, deserializer: NodeDeserializer): ModuleNode {\n\t\treturn new ModuleNode(\n\t\t\tnode.exportList.map(deserializer),\n\t\t\tnode.importList.map(deserializer),\n\t\t\tnode.body.map(deserializer),\n\t\t\tnode.meta\n\t\t);\n\t}\n\tstatic visit(node: ModuleNode, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void {\n\t\tvisitNodeList(node.exportList);\n\t\tvisitNodeList(node.importList);\n\t\tvisitNodeList(node.body);\n\t}\n\tconstructor(\n\t\tprivate exportList: ExpressionNode[],\n\t\tprivate importList: ExpressionNode[],\n\t\tprivate body: ExpressionNode[],\n\t\tprivate meta: { name: string, url: string, }) {\n\t\tsuper();\n\t}\n\tgetExportList() {\n\t\treturn this.exportList;\n\t}\n\tgetImportList() {\n\t\treturn this.importList;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack) {\n\t\tthrow new Error(`ModuleNode.#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tthrow new Error(`ModuleNode.#get() has no implementation.`);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.body.flatMap(exp => exp.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.body.flatMap(exp => exp.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\tconst importString = this.importList.map(imp => imp.toString()).join('\\n');\n\t\tconst exportString = this.exportList.map(expo => expo.toString()).join('\\n');\n\t\tconst bodyString = this.body.map(exp => exp.toString()).join('\\n');\n\t\treturn `${importString}\\n${exportString}\\n${bodyString}\\n`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\texportList: this.exportList.map(expression => expression.toJSON()),\n\t\t\timportList: this.importList.map(expression => expression.toJSON()),\n\t\t\tbody: this.body.map(expression => expression.toJSON()),\n\t\t\tmeta: JSON.parse(JSON.stringify(this.meta)),\n\t\t};\n\t}\n}\n"]}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { EvaluateType } from './types.js';
|
|
2
|
-
import type { NodeDeserializer, ExpressionNode } from '../expression.js';
|
|
2
|
+
import type { NodeDeserializer, ExpressionNode, VisitNodeType, VisitNodeListType } from '../expression.js';
|
|
3
3
|
import type { Stack } from '../../scope/stack.js';
|
|
4
4
|
import { InfixExpressionNode } from '../abstract.js';
|
|
5
5
|
export declare type AssignmentOperator = '=' | '+=' | '-=' | '*=' | '**=' | '/=' | '%=' | '<<=' | '>>=' | '>>>=' | '|=' | '^=' | '&=' | '||=' | '&&=' | '??=' | '%%=' | '>?=' | '<?=';
|
|
6
6
|
export declare class AssignmentExpression extends InfixExpressionNode<AssignmentOperator> {
|
|
7
7
|
static fromJSON(node: AssignmentExpression, deserializer: NodeDeserializer): AssignmentExpression;
|
|
8
|
+
static visit(node: AssignmentExpression, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void;
|
|
8
9
|
static Evaluations: EvaluateType;
|
|
9
10
|
static LogicalEvaluations: {
|
|
10
11
|
[key: string]: (exp: AssignmentExpression, context: any) => any;
|
|
@@ -9,6 +9,10 @@ let AssignmentExpression = AssignmentExpression_1 = class AssignmentExpression e
|
|
|
9
9
|
static fromJSON(node, deserializer) {
|
|
10
10
|
return new AssignmentExpression_1(node.operator, deserializer(node.left), deserializer(node.right));
|
|
11
11
|
}
|
|
12
|
+
static visit(node, visitNode, visitNodeList) {
|
|
13
|
+
visitNode(node.left);
|
|
14
|
+
visitNode(node.right);
|
|
15
|
+
}
|
|
12
16
|
set(stack, value) {
|
|
13
17
|
return this.left.set(stack, value);
|
|
14
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assignment.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/assignment.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAU7D,IAAa,oBAAoB,4BAAjC,MAAa,oBAAqB,SAAQ,mBAAuC;
|
|
1
|
+
{"version":3,"file":"assignment.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/assignment.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAU7D,IAAa,oBAAoB,4BAAjC,MAAa,oBAAqB,SAAQ,mBAAuC;IAqEhF,YAAY,QAA4B,EAAE,IAAoB,EAAE,KAAqB;QACpF,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAtED,MAAM,CAAC,QAAQ,CAAC,IAA0B,EAAE,YAA8B;QACzE,OAAO,IAAI,sBAAoB,CAC9B,IAAI,CAAC,QAAQ,EACb,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EACvB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CACxB,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAA0B,EAAE,SAAwB,EAAE,aAAgC;QAClG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IA6DD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,GAAG,CAAC,KAAY;QACf,QAAQ,IAAI,CAAC,QAAQ,EAAE;YACtB,KAAK,KAAK,CAAC;YACX,KAAK,KAAK,CAAC;YACX,KAAK,KAAK;gBACT,OAAO,sBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC5E;QACD,MAAM,QAAQ,GAAiB;YAC9B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAC1B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;SAC5B,CAAC;QACF,MAAM,KAAK,GAAG,sBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;QACxE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC;IACd,CAAC;CACD,CAAA;AA9EO,gCAAW,GAAiB;IAElC,GAAG,EAAE,CAAC,QAAsB,EAAE,EAAE,GAAG,OAAO,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,IAAI,EAAE,CAAC,QAAsB,EAAE,EAAE,GAAG,OAAO,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,KAAK,EAAE,CAAC,QAAsB,EAAE,EAAE,GAAG,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAE/E,IAAI,EAAE,CAAC,QAAsB,EAAE,EAAE,GAAG,OAAO,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,IAAI,EAAE,CAAC,QAAsB,EAAE,EAAE,GAAG,OAAO,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAE7E,IAAI,EAAE,CAAC,QAAsB,EAAE,EAAE,GAAG,OAAO,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,IAAI,EAAE,CAAC,QAAsB,EAAE,EAAE,GAAG,OAAO,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAE7E,KAAK,EAAE,CAAC,QAAsB,EAAE,EAAE,GAAG,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/E,KAAK,EAAE,CAAC,QAAsB,EAAE,EAAE,GAAG,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/E,MAAM,EAAE,CAAC,QAAsB,EAAE,EAAE,GAAG,OAAO,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAEjF,IAAI,EAAE,CAAC,QAAsB,EAAE,EAAE,GAAG,OAAO,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,IAAI,EAAE,CAAC,QAAsB,EAAE,EAAE,GAAG,OAAO,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,IAAI,EAAE,CAAC,QAAsB,EAAE,EAAE,GAAG,OAAO,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAE7E,KAAK,EAAE,CAAC,QAAsB,EAAE,EAAE,GAAG,OAAO,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACpI,KAAK,EAAE,CAAC,QAAsB,EAAE,EAAE,GAAG,OAAO,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9H,KAAK,EAAE,CAAC,QAAsB,EAAE,EAAE,GAAG,OAAO,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;CAE7H,CAAA;AAEK,uCAAkB,GAAwE;IAEhG,KAAK,EAAE,CAAC,GAAyB,EAAE,OAAY,EAAE,EAAE;QAClD,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,KAAK,EAAE;YACV,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC/B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACxB;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,KAAK,EAAE,CAAC,GAAyB,EAAE,OAAY,EAAE,EAAE;QAClD,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE;YACX,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC/B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACxB;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,KAAK,EAAE,CAAC,GAAyB,EAAE,OAAY,EAAE,EAAE;QAClD,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;YAC1C,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC/B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACxB;QACD,OAAO,KAAK,CAAC;IACd,CAAC;CAEA,CAAA;AAnEU,oBAAoB;IADhC,YAAY,CAAC,sBAAsB,CAAC;;GACxB,oBAAoB,CA0FhC;SA1FY,oBAAoB","sourcesContent":["import type { EvaluateNode, EvaluateType } from './types.js';\nimport type { NodeDeserializer, ExpressionNode, VisitNodeType, VisitNodeListType } from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { InfixExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\nexport type AssignmentOperator =\n\t'=' | '+=' | '-=' | '*=' | '**=' | '/=' | '%='\n\t| '<<=' | '>>=' | '>>>='\n\t| '|=' | '^=' | '&='\n\t| '||=' | '&&=' | '??='\n\t| '%%=' | '>?=' | '<?=';\n\n@Deserializer('AssignmentExpression')\nexport class AssignmentExpression extends InfixExpressionNode<AssignmentOperator> {\n\tstatic fromJSON(node: AssignmentExpression, deserializer: NodeDeserializer): AssignmentExpression {\n\t\treturn new AssignmentExpression(\n\t\t\tnode.operator,\n\t\t\tdeserializer(node.left),\n\t\t\tdeserializer(node.right)\n\t\t);\n\t}\n\tstatic visit(node: AssignmentExpression, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void {\n\t\tvisitNode(node.left);\n\t\tvisitNode(node.right);\n\t}\n\tstatic Evaluations: EvaluateType = {\n\n\t\t'=': (evalNode: EvaluateNode) => { return evalNode.left = evalNode.right; },\n\t\t'*=': (evalNode: EvaluateNode) => { return evalNode.left *= evalNode.right; },\n\t\t'**=': (evalNode: EvaluateNode) => { return evalNode.left **= evalNode.right; },\n\n\t\t'/=': (evalNode: EvaluateNode) => { return evalNode.left /= evalNode.right; },\n\t\t'%=': (evalNode: EvaluateNode) => { return evalNode.left %= evalNode.right; },\n\n\t\t'+=': (evalNode: EvaluateNode) => { return evalNode.left += evalNode.right; },\n\t\t'-=': (evalNode: EvaluateNode) => { return evalNode.left -= evalNode.right; },\n\n\t\t'<<=': (evalNode: EvaluateNode) => { return evalNode.left <<= evalNode.right; },\n\t\t'>>=': (evalNode: EvaluateNode) => { return evalNode.left >>= evalNode.right; },\n\t\t'>>>=': (evalNode: EvaluateNode) => { return evalNode.left >>>= evalNode.right; },\n\n\t\t'&=': (evalNode: EvaluateNode) => { return evalNode.left &= evalNode.right; },\n\t\t'^=': (evalNode: EvaluateNode) => { return evalNode.left ^= evalNode.right; },\n\t\t'|=': (evalNode: EvaluateNode) => { return evalNode.left |= evalNode.right; },\n\n\t\t'%%=': (evalNode: EvaluateNode) => { return evalNode.left %= ((evalNode.left % evalNode.right) + evalNode.right) % evalNode.right; },\n\t\t'>?=': (evalNode: EvaluateNode) => { return evalNode.left = evalNode.left > evalNode.right ? evalNode.left : evalNode.right; },\n\t\t'<?=': (evalNode: EvaluateNode) => { return evalNode.left = evalNode.left > evalNode.right ? evalNode.right : evalNode.left; },\n\n\t};\n\n\tstatic LogicalEvaluations: { [key: string]: (exp: AssignmentExpression, context: any) => any } = {\n\n\t\t'&&=': (exp: AssignmentExpression, context: any) => {\n\t\t\tlet value = exp.left.get(context);\n\t\t\tif (value) {\n\t\t\t\tvalue = exp.right.get(context);\n\t\t\t\texp.set(context, value);\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\n\t\t'||=': (exp: AssignmentExpression, context: any) => {\n\t\t\tlet value = exp.left.get(context);\n\t\t\tif (!value) {\n\t\t\t\tvalue = exp.right.get(context);\n\t\t\t\texp.set(context, value);\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\n\t\t'??=': (exp: AssignmentExpression, context: any) => {\n\t\t\tlet value = exp.left.get(context);\n\t\t\tif (value === undefined || value === null) {\n\t\t\t\tvalue = exp.right.get(context);\n\t\t\t\texp.set(context, value);\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\n\t};\n\n\tconstructor(operator: AssignmentOperator, left: ExpressionNode, right: ExpressionNode) {\n\t\tsuper(operator, left, right);\n\t}\n\tset(stack: Stack, value: any) {\n\t\treturn this.left.set(stack, value);\n\t}\n\tget(stack: Stack): any {\n\t\tswitch (this.operator) {\n\t\t\tcase '&&=':\n\t\t\tcase '||=':\n\t\t\tcase '??=':\n\t\t\t\treturn AssignmentExpression.LogicalEvaluations[this.operator](this, stack);\n\t\t}\n\t\tconst evalNode: EvaluateNode = {\n\t\t\tleft: this.left.get(stack),\n\t\t\tright: this.right.get(stack)\n\t\t};\n\t\tconst value = AssignmentExpression.Evaluations[this.operator](evalNode);\n\t\tthis.set(stack, value);\n\t\treturn value;\n\t}\n}\n"]}
|
package/api/operators/await.d.ts
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
import type { NodeDeserializer, ExpressionNode } from '../expression.js';
|
|
1
|
+
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType, VisitNodeListType } from '../expression.js';
|
|
2
|
+
import type { Scope } from '../../scope/scope.js';
|
|
2
3
|
import type { Stack } from '../../scope/stack.js';
|
|
3
4
|
import { AbstractExpressionNode, AwaitPromise } from '../abstract.js';
|
|
4
5
|
export declare class AwaitExpression extends AbstractExpressionNode {
|
|
5
6
|
private argument;
|
|
6
7
|
static fromJSON(node: AwaitExpression, serializer: NodeDeserializer): AwaitExpression;
|
|
8
|
+
static visit(node: AwaitExpression, visitNode: VisitNodeType, visitNodeList: VisitNodeListType): void;
|
|
7
9
|
constructor(argument: ExpressionNode);
|
|
8
10
|
getArgument(): ExpressionNode;
|
|
11
|
+
shareVariables(scopeList: Scope<any>[]): void;
|
|
9
12
|
set(stack: Stack, value: any): void;
|
|
10
|
-
events(parent?: string): string[];
|
|
11
13
|
get(stack: Stack, thisContext?: any): AwaitPromise;
|
|
14
|
+
dependency(computed?: true): ExpressionNode[];
|
|
15
|
+
dependencyPath(computed?: true): ExpressionEventPath[];
|
|
12
16
|
toString(): string;
|
|
13
17
|
toJson(): object;
|
|
14
18
|
}
|
package/api/operators/await.js
CHANGED
|
@@ -10,19 +10,28 @@ let AwaitExpression = AwaitExpression_1 = class AwaitExpression extends Abstract
|
|
|
10
10
|
static fromJSON(node, serializer) {
|
|
11
11
|
return new AwaitExpression_1(serializer(node.argument));
|
|
12
12
|
}
|
|
13
|
+
static visit(node, visitNode, visitNodeList) {
|
|
14
|
+
visitNode(node.argument);
|
|
15
|
+
}
|
|
13
16
|
getArgument() {
|
|
14
17
|
return this.argument;
|
|
15
18
|
}
|
|
19
|
+
shareVariables(scopeList) {
|
|
20
|
+
this.argument.shareVariables(scopeList);
|
|
21
|
+
}
|
|
16
22
|
set(stack, value) {
|
|
17
23
|
throw new Error('AwaitExpression#set() has no implementation.');
|
|
18
24
|
}
|
|
19
|
-
events(parent) {
|
|
20
|
-
return this.argument.events(parent);
|
|
21
|
-
}
|
|
22
25
|
get(stack, thisContext) {
|
|
23
26
|
const promise = this.argument.get(stack);
|
|
24
27
|
return new AwaitPromise(promise);
|
|
25
28
|
}
|
|
29
|
+
dependency(computed) {
|
|
30
|
+
return this.argument.dependency(computed);
|
|
31
|
+
}
|
|
32
|
+
dependencyPath(computed) {
|
|
33
|
+
return this.argument.dependencyPath(computed);
|
|
34
|
+
}
|
|
26
35
|
toString() {
|
|
27
36
|
return `await ${this.argument.toString()}`;
|
|
28
37
|
}
|