@ibyar/expressions 0.5.6 → 0.6.1
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/api/abstract.js +5 -0
- package/api/abstract.js.map +1 -1
- package/api/class/class.d.ts +28 -13
- package/api/class/class.js +46 -41
- package/api/class/class.js.map +1 -1
- package/api/computing/return.d.ts +4 -0
- package/api/computing/return.js +5 -0
- package/api/computing/return.js.map +1 -1
- package/api/computing/throw.d.ts +4 -0
- package/api/computing/throw.js +4 -0
- package/api/computing/throw.js.map +1 -1
- package/api/definition/bind.d.ts +6 -0
- package/api/definition/bind.js +6 -0
- package/api/definition/bind.js.map +1 -1
- package/api/definition/function.js +6 -5
- package/api/definition/function.js.map +1 -1
- package/api/definition/member.js.map +1 -1
- package/api/definition/object.js +1 -1
- package/api/definition/object.js.map +1 -1
- package/api/definition/values.d.ts +12 -3
- package/api/definition/values.js +25 -4
- package/api/definition/values.js.map +1 -1
- package/api/deserialize/deserialize.d.ts +5 -0
- package/api/deserialize/deserialize.js +5 -0
- package/api/deserialize/deserialize.js.map +1 -1
- package/api/expression.d.ts +151 -5
- package/api/expression.js.map +1 -1
- package/api/module/export.d.ts +63 -0
- package/api/module/export.js +64 -1
- package/api/module/export.js.map +1 -1
- package/api/module/import.d.ts +53 -0
- package/api/module/import.js +53 -0
- package/api/module/import.js.map +1 -1
- package/api/operators/grouping.d.ts +7 -0
- package/api/operators/grouping.js +7 -0
- package/api/operators/grouping.js.map +1 -1
- package/api/operators/pipeline.d.ts +12 -0
- package/api/operators/pipeline.js +12 -0
- package/api/operators/pipeline.js.map +1 -1
- package/api/operators/unary.js +3 -0
- package/api/operators/unary.js.map +1 -1
- package/api/program.d.ts +2 -2
- package/api/program.js.map +1 -1
- package/api/statement/control/block.d.ts +4 -0
- package/api/statement/control/block.js +4 -0
- package/api/statement/control/block.js.map +1 -1
- package/api/statement/control/empty.d.ts +7 -0
- package/api/statement/control/empty.js +7 -0
- package/api/statement/control/empty.js.map +1 -1
- package/api/statement/control/if.d.ts +5 -0
- package/api/statement/control/if.js +5 -0
- package/api/statement/control/if.js.map +1 -1
- package/api/statement/control/switch.d.ts +6 -0
- package/api/statement/control/switch.js +9 -0
- package/api/statement/control/switch.js.map +1 -1
- package/api/statement/control/terminate.d.ts +8 -0
- package/api/statement/control/terminate.js +8 -0
- package/api/statement/control/terminate.js.map +1 -1
- package/api/statement/iterations/for.d.ts +5 -0
- package/api/statement/iterations/for.js +13 -0
- package/api/statement/iterations/for.js.map +1 -1
- package/api/statement/iterations/while.d.ts +6 -0
- package/api/statement/iterations/while.js +10 -0
- package/api/statement/iterations/while.js.map +1 -1
- package/package.json +5 -3
- package/scope/event.d.ts +3 -3
- package/scope/event.js +2 -2
- package/scope/event.js.map +1 -1
- package/scope/pool.d.ts +7 -0
- package/scope/pool.js +29 -0
- package/scope/pool.js.map +1 -0
- package/scope/proxy.d.ts +6 -9
- package/scope/proxy.js +22 -31
- package/scope/proxy.js.map +1 -1
- package/scope/scope.d.ts +161 -38
- package/scope/scope.js +260 -106
- package/scope/scope.js.map +1 -1
- package/scope/stack.d.ts +95 -19
- package/scope/stack.js +13 -0
- package/scope/stack.js.map +1 -1
- package/v8/enums.js +31 -0
- package/v8/enums.js.map +1 -1
- package/v8/inline.d.ts +36 -0
- package/v8/inline.js +407 -5
- package/v8/inline.js.map +1 -1
- package/v8/nodes.js +2 -1
- package/v8/nodes.js.map +1 -1
- package/v8/parser.d.ts +8 -0
- package/v8/parser.js +304 -1
- package/v8/parser.js.map +1 -1
- package/v8/stream.d.ts +4 -0
- package/v8/stream.js +79 -17
- package/v8/stream.js.map +1 -1
- package/v8/token.d.ts +229 -0
- package/v8/token.js +236 -1
- package/v8/token.js.map +1 -1
- package/visit/visitor.d.ts +3 -0
package/v8/nodes.js
CHANGED
|
@@ -71,7 +71,7 @@ export function createTernaryExpression(op, logical, ifTrue, ifFalse) {
|
|
|
71
71
|
export function creteCommaExpression(nodes) {
|
|
72
72
|
return new SequenceExpression(nodes);
|
|
73
73
|
}
|
|
74
|
-
const USELESS_STACK = null;
|
|
74
|
+
const USELESS_STACK = null; //Object.create(null);
|
|
75
75
|
const ALLOWED_TYPES = ['string', 'number', 'bigint', 'boolean'];
|
|
76
76
|
export function shortcutNumericLiteralBinaryExpression(x, y, op) {
|
|
77
77
|
const expression = creteInfixExpression(op.getName(), x, y);
|
|
@@ -98,6 +98,7 @@ export function coverValue(value) {
|
|
|
98
98
|
if (value === null) {
|
|
99
99
|
return NullNode;
|
|
100
100
|
}
|
|
101
|
+
// never reach
|
|
101
102
|
case 'function':
|
|
102
103
|
case 'symbol':
|
|
103
104
|
default:
|
package/v8/nodes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../src/expressions/v8/nodes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../src/expressions/v8/nodes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAmB,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACpG,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,UAAU,oBAAoB,CAAC,EAAU,EAAE,IAAoB,EAAE,KAAqB;IAC3F,QAAQ,EAAE,EAAE;QACX,KAAK,GAAG,CAAC;QACT,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,KAAK,CAAC;QACX,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,KAAK,CAAC;QACX,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,KAAK,CAAC;QACX,KAAK,KAAK,CAAC;QACX,KAAK,KAAK;YACT,OAAO,IAAI,oBAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAClD,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,IAAI;YACR,OAAO,IAAI,iBAAiB,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/C,KAAK,IAAI,CAAC;QACV,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,IAAI,CAAC;QACV,KAAK,GAAG,CAAC;QACT,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,YAAY,CAAC;QAClB,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,KAAK,CAAC;QACX,KAAK,KAAK,CAAC;QACX,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,KAAK,CAAC;QACX,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,KAAK;YACT,OAAO,IAAI,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9C;YACC,MAAM,IAAI,KAAK,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;KAClD;AACF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,EAAU,EAAE,OAAuB,EAAE,MAAsB,EAAE,OAAuB;IAC3H,QAAQ,EAAE,EAAE;QACX,KAAK,GAAG;YACP,OAAO,IAAI,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5D;YACC,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;KAElD;AACF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAuB;IAC3D,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,aAAa,GAAU,IAAwB,CAAC,CAAA,sBAAsB;AAC5E,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAEhE,MAAM,UAAU,sCAAsC,CAAC,CAAiB,EAAE,CAAiB,EAAE,EAAS;IACrG,MAAM,UAAU,GAAG,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5D,IAAI,CAAC,YAAY,OAAO,IAAI,CAAC,YAAY,OAAO,EAAE;QACjD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;YACjD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;YACpE,OAAO,IAAI,OAAO,CAAM,MAAM,EAAE,SAAS,CAAC,CAAC;SAC3C;KACD;IACD,OAAO,UAAW,CAAC;AACpB,CAAC;AACD,MAAM,UAAU,UAAU,CAAC,KAAU;IACpC,QAAQ,OAAO,KAAK,EAAE;QACrB,KAAK,WAAW,CAAC,CAAC,OAAO,aAAa,CAAC;QACvC,KAAK,SAAS,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACpD,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ;YACZ,OAAO,IAAI,OAAO,CAA2B,KAAK,CAAC,CAAC;QACrD,KAAK,QAAQ;YACZ,IAAI,KAAK,KAAK,IAAI,EAAE;gBACnB,OAAO,QAAQ,CAAC;aAChB;QACF,cAAc;QACd,KAAK,UAAU,CAAC;QAChB,KAAK,QAAQ,CAAC;QACd;YACC,OAAO,KAAK,CAAC;KACd;AACF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,UAA0B,EAAE,EAAS;IACzE,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,QAAQ,IAAI,EAAE;QACb,KAAK,IAAI,CAAC;QACV,KAAK,IAAI;YACR,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QACrD,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ;YACZ,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC9C,KAAK,OAAO;YACX,OAAO,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;QACxC;YACC,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;KACjD;AACF,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,UAA0B,EAAE,EAAS;IAC3E,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,QAAQ,IAAI,EAAE;QACb,KAAK,IAAI,CAAC;QACV,KAAK,IAAI;YACR,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QACtD;YACC,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;KAClD;AACF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,EAAmB;IACxD,QAAQ,EAAE,CAAC,KAAK,EAAE;QACjB,KAAK,KAAK,CAAC,MAAM,CAAC;QAClB,KAAK,KAAK,CAAC,MAAM,CAAC;QAClB,KAAK,KAAK,CAAC,MAAM,CAAC;QAClB,KAAK,KAAK,CAAC,cAAc,CAAC;QAC1B,KAAK,KAAK,CAAC,UAAU;YACpB,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;QAEtB,KAAK,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,QAAQ,CAAC;QACzC,KAAK,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,QAAQ,CAAC;QACzC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,OAAO,SAAS,CAAC;QAC3C,QAAQ;QACR,KAAK,KAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,aAAa,CAAC;KACnD;AACF,CAAC","sourcesContent":["import type { ExpressionNode } from '../api/expression.js';\nimport type { Stack } from '../scope/stack.js';\nimport { Token, TokenExpression } from './token.js';\nimport { AssignmentExpression } from '../api/operators/assignment.js';\nimport { LogicalExpression } from '../api/operators/logical.js';\nimport { UnaryExpression } from '../api/operators/unary.js';\nimport { ConditionalExpression } from '../api/operators/ternary.js';\nimport { SequenceExpression } from '../api/operators/comma.js';\nimport { Literal, TrueNode, FalseNode, NullNode, UndefinedNode } from '../api/definition/values.js';\nimport { AwaitExpression } from '../api/operators/await.js';\nimport { UpdateExpression } from '../api/operators/update.js';\nimport { BinaryExpression } from '../api/operators/binary.js';\n\nexport function creteInfixExpression(op: string, left: ExpressionNode, right: ExpressionNode): ExpressionNode {\n\tswitch (op) {\n\t\tcase '=':\n\t\tcase '+=':\n\t\tcase '-=':\n\t\tcase '**=':\n\t\tcase '/=':\n\t\tcase '%=':\n\t\tcase '<<=':\n\t\tcase '>>=':\n\t\tcase '>>>=':\n\t\tcase '&=':\n\t\tcase '^=':\n\t\tcase '|=':\n\t\tcase '&&=':\n\t\tcase '||=':\n\t\tcase '??=':\n\t\t\treturn new AssignmentExpression(op, left, right);\n\t\tcase '&&':\n\t\tcase '||':\n\t\tcase '??':\n\t\t\treturn new LogicalExpression(op, left, right);\n\t\tcase '**':\n\t\tcase '*':\n\t\tcase '/':\n\t\tcase '%':\n\t\tcase '+':\n\t\tcase '-':\n\t\tcase '<':\n\t\tcase '<=':\n\t\tcase '>':\n\t\tcase '>=':\n\t\tcase 'in':\n\t\tcase 'instanceof':\n\t\tcase '==':\n\t\tcase '!=':\n\t\tcase '===':\n\t\tcase '!==':\n\t\tcase '<<':\n\t\tcase '>>':\n\t\tcase '>>>':\n\t\tcase '&':\n\t\tcase '^':\n\t\tcase '|':\n\t\tcase '>?':\n\t\tcase '<?':\n\t\tcase '<=>':\n\t\t\treturn new BinaryExpression(op, left, right);\n\t\tdefault:\n\t\t\tthrow new Error(`Not Supported Operator: ${op}`);\n\t}\n}\n\nexport function createTernaryExpression(op: string, logical: ExpressionNode, ifTrue: ExpressionNode, ifFalse: ExpressionNode): ExpressionNode {\n\tswitch (op) {\n\t\tcase '?':\n\t\t\treturn new ConditionalExpression(logical, ifTrue, ifFalse);\n\t\tdefault:\n\t\t\tthrow new Error(`${op} is not ternary operator`);\n\n\t}\n}\n\nexport function creteCommaExpression(nodes: ExpressionNode[]): ExpressionNode {\n\treturn new SequenceExpression(nodes);\n}\n\nconst USELESS_STACK: Stack = null as unknown as Stack;//Object.create(null);\nconst ALLOWED_TYPES = ['string', 'number', 'bigint', 'boolean'];\n\nexport function shortcutNumericLiteralBinaryExpression(x: ExpressionNode, y: ExpressionNode, op: Token): ExpressionNode {\n\tconst expression = creteInfixExpression(op.getName(), x, y);\n\n\tif (x instanceof Literal && y instanceof Literal) {\n\t\tconst typeX = typeof x.getValue();\n\t\tconst typeY = typeof y.getValue();\n\t\tif (x === y && ALLOWED_TYPES.indexOf(typeX) > -1) {\n\t\t\tconst result = expression.get(USELESS_STACK);\n\t\t\tconst rawString = `${x.toString()} ${op.getName()} ${x.toString()}`;\n\t\t\treturn new Literal<any>(result, rawString);\n\t\t}\n\t}\n\treturn expression!;\n}\nexport function coverValue(value: any) {\n\tswitch (typeof value) {\n\t\tcase 'undefined': return UndefinedNode;\n\t\tcase 'boolean': return value ? TrueNode : FalseNode;\n\t\tcase 'number':\n\t\tcase 'bigint':\n\t\tcase 'string':\n\t\t\treturn new Literal<number | string | bigint>(value);\n\t\tcase 'object':\n\t\t\tif (value === null) {\n\t\t\t\treturn NullNode;\n\t\t\t}\n\t\t// never reach\n\t\tcase 'function':\n\t\tcase 'symbol':\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\nexport function buildUnaryExpression(expression: ExpressionNode, op: Token) {\n\tconst name = op.getName();\n\tswitch (name) {\n\t\tcase '++':\n\t\tcase '--':\n\t\t\treturn new UpdateExpression(name, expression, true);\n\t\tcase '+':\n\t\tcase '-':\n\t\tcase '!':\n\t\tcase '~':\n\t\tcase 'typeof':\n\t\tcase 'void':\n\t\tcase 'delete':\n\t\t\treturn new UnaryExpression(name, expression);\n\t\tcase 'await':\n\t\t\treturn new AwaitExpression(expression);\n\t\tdefault:\n\t\t\tthrow new Error(`${op} is not prefix operator`);\n\t}\n}\n\nexport function buildPostfixExpression(expression: ExpressionNode, op: Token) {\n\tconst name = op.getName();\n\tswitch (name) {\n\t\tcase '++':\n\t\tcase '--':\n\t\t\treturn new UpdateExpression(name, expression, false);\n\t\tdefault:\n\t\t\tthrow new Error(`${op} is not postfix operator`);\n\t}\n}\n\nexport function expressionFromLiteral(te: TokenExpression) {\n\tswitch (te.token) {\n\t\tcase Token.NUMBER:\n\t\tcase Token.BIGINT:\n\t\tcase Token.STRING:\n\t\tcase Token.REGEXP_LITERAL:\n\t\tcase Token.IDENTIFIER:\n\t\t\treturn te.getValue();\n\n\t\tcase Token.NULL_LITERAL: return NullNode;\n\t\tcase Token.TRUE_LITERAL: return TrueNode;\n\t\tcase Token.FALSE_LITERAL: return FalseNode;\n\t\tdefault:\n\t\tcase Token.UNDEFINED_LITERAL: return UndefinedNode;\n\t}\n}\n"]}
|
package/v8/parser.d.ts
CHANGED
|
@@ -13,7 +13,15 @@ export declare type ParserOptions = {
|
|
|
13
13
|
mode?: LanguageMode;
|
|
14
14
|
};
|
|
15
15
|
export declare class JavaScriptParser extends JavaScriptInlineParser {
|
|
16
|
+
/**
|
|
17
|
+
* parser js with
|
|
18
|
+
* @param source
|
|
19
|
+
* @returns
|
|
20
|
+
*/
|
|
16
21
|
static parse(source: string | TokenExpression[] | TokenStream, { mode }?: ParserOptions): ExpressionNode;
|
|
22
|
+
/**
|
|
23
|
+
* parse inline code like that used in html 2 or 1 way binding
|
|
24
|
+
*/
|
|
17
25
|
static parseScript(source: string | TokenExpression[] | TokenStream, options?: InlineParserOptions): ExpressionNode;
|
|
18
26
|
scan(): ExpressionNode;
|
|
19
27
|
protected parseNewTargetExpression(): ExpressionNode;
|