@flowgram-vue/variable-core 0.2.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.
Files changed (67) hide show
  1. package/LICENSE +22 -0
  2. package/dist/index.cjs +2630 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.ts +2293 -0
  5. package/dist/index.js +2592 -0
  6. package/dist/index.js.map +1 -0
  7. package/package.json +68 -0
  8. package/src/ast/ast-node.ts +374 -0
  9. package/src/ast/ast-registers.ts +129 -0
  10. package/src/ast/common/data-node.ts +63 -0
  11. package/src/ast/common/index.ts +8 -0
  12. package/src/ast/common/list-node.ts +70 -0
  13. package/src/ast/common/map-node.ts +89 -0
  14. package/src/ast/declaration/base-variable-field.ts +184 -0
  15. package/src/ast/declaration/index.ts +13 -0
  16. package/src/ast/declaration/property.ts +19 -0
  17. package/src/ast/declaration/variable-declaration-list.ts +112 -0
  18. package/src/ast/declaration/variable-declaration.ts +78 -0
  19. package/src/ast/expression/base-expression.ts +117 -0
  20. package/src/ast/expression/enumerate-expression.ts +77 -0
  21. package/src/ast/expression/index.ts +10 -0
  22. package/src/ast/expression/keypath-expression.ts +157 -0
  23. package/src/ast/expression/legacy-keypath-expression.ts +119 -0
  24. package/src/ast/expression/wrap-array-expression.ts +96 -0
  25. package/src/ast/factory.ts +163 -0
  26. package/src/ast/flags.ts +50 -0
  27. package/src/ast/index.ts +26 -0
  28. package/src/ast/match.ts +146 -0
  29. package/src/ast/type/array.ts +109 -0
  30. package/src/ast/type/base-type.ts +49 -0
  31. package/src/ast/type/boolean.ts +26 -0
  32. package/src/ast/type/custom-type.ts +70 -0
  33. package/src/ast/type/index.ts +19 -0
  34. package/src/ast/type/integer.ts +29 -0
  35. package/src/ast/type/map.ts +96 -0
  36. package/src/ast/type/number.ts +26 -0
  37. package/src/ast/type/object.ts +185 -0
  38. package/src/ast/type/string.ts +55 -0
  39. package/src/ast/type/union.ts +13 -0
  40. package/src/ast/types.ts +188 -0
  41. package/src/ast/utils/expression.ts +61 -0
  42. package/src/ast/utils/helpers.ts +73 -0
  43. package/src/ast/utils/inversify.ts +42 -0
  44. package/src/ast/utils/observable.ts +5 -0
  45. package/src/ast/utils/variable-field.ts +25 -0
  46. package/src/composables/index.ts +9 -0
  47. package/src/composables/scope-provider.ts +78 -0
  48. package/src/composables/use-available-variables.ts +39 -0
  49. package/src/composables/use-output-variables.ts +36 -0
  50. package/src/composables/use-scope-available.ts +32 -0
  51. package/src/index.ts +14 -0
  52. package/src/providers.ts +22 -0
  53. package/src/scope/datas/index.ts +8 -0
  54. package/src/scope/datas/scope-available-data.ts +234 -0
  55. package/src/scope/datas/scope-event-data.ts +67 -0
  56. package/src/scope/datas/scope-output-data.ts +151 -0
  57. package/src/scope/index.ts +9 -0
  58. package/src/scope/scope-chain.ts +69 -0
  59. package/src/scope/scope.ts +200 -0
  60. package/src/scope/types.ts +102 -0
  61. package/src/scope/variable-table.ts +203 -0
  62. package/src/services/index.ts +6 -0
  63. package/src/services/variable-field-key-rename-service.ts +131 -0
  64. package/src/utils/memo.ts +38 -0
  65. package/src/utils/toDisposable.ts +16 -0
  66. package/src/variable-container-module.ts +28 -0
  67. package/src/variable-engine.ts +197 -0
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ */
5
+
6
+ import { distinctUntilChanged } from 'rxjs';
7
+ import { shallowEqual } from 'fast-equals';
8
+
9
+ import { checkRefCycle } from '../utils/expression';
10
+ import { ASTNodeJSON, ASTKind, CreateASTParams } from '../types';
11
+ import { BaseType } from '../type';
12
+ import { type BaseVariableField } from '../declaration';
13
+ import { subsToDisposable } from '../../utils/toDisposable';
14
+ import { BaseExpression } from './base-expression';
15
+
16
+ /**
17
+ * ASTNodeJSON representation of `KeyPathExpression`
18
+ */
19
+ export interface KeyPathExpressionJSON {
20
+ /**
21
+ * The key path of the variable.
22
+ */
23
+ keyPath: string[];
24
+ }
25
+
26
+ /**
27
+ * Represents a key path expression, which is used to reference a variable by its key path.
28
+ *
29
+ * This is the V2 of `KeyPathExpression`, with the following improvements:
30
+ * - `returnType` is copied to a new instance to avoid reference issues.
31
+ * - Circular reference detection is introduced.
32
+ */
33
+ export class KeyPathExpression<
34
+ CustomPathJSON extends ASTNodeJSON = KeyPathExpressionJSON
35
+ > extends BaseExpression<CustomPathJSON> {
36
+ static kind: string = ASTKind.KeyPathExpression;
37
+
38
+ protected _keyPath: string[] = [];
39
+
40
+ protected _rawPathJson: CustomPathJSON;
41
+
42
+ /**
43
+ * The key path of the variable.
44
+ */
45
+ get keyPath(): string[] {
46
+ return this._keyPath;
47
+ }
48
+
49
+ /**
50
+ * Get the variable fields referenced by the expression.
51
+ * @returns An array of referenced variable fields.
52
+ */
53
+ getRefFields(): BaseVariableField[] {
54
+ const ref = this.scope.available.getByKeyPath(this._keyPath);
55
+
56
+ // When refreshing references, check for circular references. If a circular reference exists, do not reference the variable.
57
+ if (checkRefCycle(this, [ref])) {
58
+ // Prompt that a circular reference exists.
59
+ console.warn(
60
+ '[CustomKeyPathExpression] checkRefCycle: Reference Cycle Existed',
61
+ this.parentFields.map((_field) => _field.key).reverse()
62
+ );
63
+ return [];
64
+ }
65
+
66
+ return ref ? [ref] : [];
67
+ }
68
+
69
+ /**
70
+ * The return type of the expression.
71
+ *
72
+ * A new `returnType` node is generated directly, instead of reusing the existing one, to ensure that different key paths do not point to the same field.
73
+ */
74
+ _returnType: BaseType;
75
+
76
+ /**
77
+ * The return type of the expression.
78
+ */
79
+ get returnType() {
80
+ return this._returnType;
81
+ }
82
+
83
+ /**
84
+ * Parse the business-defined path expression into a key path.
85
+ *
86
+ * Businesses can quickly customize their own path expressions by modifying this method.
87
+ * @param json The path expression defined by the business.
88
+ * @returns The key path.
89
+ */
90
+ protected parseToKeyPath(json: CustomPathJSON): string[] {
91
+ // The default JSON is in KeyPathExpressionJSON format.
92
+ return (json as unknown as KeyPathExpressionJSON).keyPath;
93
+ }
94
+
95
+ /**
96
+ * Deserializes the `KeyPathExpressionJSON` to the `KeyPathExpression`.
97
+ * @param json The `KeyPathExpressionJSON` to deserialize.
98
+ */
99
+ fromJSON(json: CustomPathJSON): void {
100
+ const keyPath = this.parseToKeyPath(json);
101
+
102
+ if (!shallowEqual(keyPath, this._keyPath)) {
103
+ this._keyPath = keyPath;
104
+ this._rawPathJson = json;
105
+
106
+ // After the keyPath is updated, the referenced variables need to be refreshed.
107
+ this.refreshRefs();
108
+ }
109
+ }
110
+
111
+ /**
112
+ * Get the return type JSON by reference.
113
+ * @param _ref The referenced variable field.
114
+ * @returns The JSON representation of the return type.
115
+ */
116
+ getReturnTypeJSONByRef(_ref: BaseVariableField | undefined): ASTNodeJSON | undefined {
117
+ return _ref?.type?.toJSON();
118
+ }
119
+
120
+ constructor(params: CreateASTParams, opts: any) {
121
+ super(params, opts);
122
+
123
+ this.toDispose.pushAll([
124
+ // Can be used when the variable list changes (when there are additions or deletions).
125
+ this.scope.available.onVariableListChange(() => {
126
+ this.refreshRefs();
127
+ }),
128
+ // When the referable variable pointed to by this._keyPath changes, refresh the reference data.
129
+ this.scope.available.onAnyVariableChange((_v) => {
130
+ if (_v.key === this._keyPath[0]) {
131
+ this.refreshRefs();
132
+ }
133
+ }),
134
+ subsToDisposable(
135
+ this.refs$
136
+ .pipe(
137
+ distinctUntilChanged(
138
+ (prev, next) => prev === next,
139
+ (_refs) => _refs?.[0]?.type?.hash
140
+ )
141
+ )
142
+ .subscribe((_type) => {
143
+ const [ref] = this._refs;
144
+ this.updateChildNodeByKey('_returnType', this.getReturnTypeJSONByRef(ref));
145
+ })
146
+ ),
147
+ ]);
148
+ }
149
+
150
+ /**
151
+ * Serialize the `KeyPathExpression` to `KeyPathExpressionJSON`.
152
+ * @returns The JSON representation of `KeyPathExpression`.
153
+ */
154
+ toJSON() {
155
+ return this._rawPathJson;
156
+ }
157
+ }
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ */
5
+
6
+ import { shallowEqual } from 'fast-equals';
7
+
8
+ import { ASTNodeJSON, ASTKind, CreateASTParams } from '../types';
9
+ import { BaseType } from '../type';
10
+ import { ASTNodeFlags } from '../flags';
11
+ import { type BaseVariableField } from '../declaration';
12
+ import { BaseExpression } from './base-expression';
13
+
14
+ /**
15
+ * ASTNodeJSON representation of `KeyPathExpression`
16
+ */
17
+ export interface KeyPathExpressionJSON {
18
+ /**
19
+ * The key path of the variable.
20
+ */
21
+ keyPath: string[];
22
+ }
23
+
24
+ /**
25
+ * @deprecated Use `KeyPathExpression` instead.
26
+ * Represents a key path expression, which is used to reference a variable by its key path.
27
+ */
28
+ export class LegacyKeyPathExpression<
29
+ CustomPathJSON extends ASTNodeJSON = KeyPathExpressionJSON
30
+ > extends BaseExpression<CustomPathJSON> {
31
+ static kind: string = ASTKind.KeyPathExpression;
32
+
33
+ protected _keyPath: string[] = [];
34
+
35
+ protected _rawPathJson: CustomPathJSON;
36
+
37
+ /**
38
+ * The key path of the variable.
39
+ */
40
+ get keyPath(): string[] {
41
+ return this._keyPath;
42
+ }
43
+
44
+ /**
45
+ * Get the variable fields referenced by the expression.
46
+ * @returns An array of referenced variable fields.
47
+ */
48
+ getRefFields(): BaseVariableField[] {
49
+ const ref = this.scope.available.getByKeyPath(this._keyPath);
50
+ return ref ? [ref] : [];
51
+ }
52
+
53
+ /**
54
+ * The return type of the expression.
55
+ */
56
+ get returnType(): BaseType | undefined {
57
+ const [refNode] = this._refs || [];
58
+
59
+ // Get the type of the referenced variable.
60
+ if (refNode && refNode.flags & ASTNodeFlags.VariableField) {
61
+ return refNode.type;
62
+ }
63
+
64
+ return;
65
+ }
66
+
67
+ /**
68
+ * Parse the business-defined path expression into a key path.
69
+ *
70
+ * Businesses can quickly customize their own path expressions by modifying this method.
71
+ * @param json The path expression defined by the business.
72
+ * @returns The key path.
73
+ */
74
+ protected parseToKeyPath(json: CustomPathJSON): string[] {
75
+ // The default JSON is in KeyPathExpressionJSON format.
76
+ return (json as unknown as KeyPathExpressionJSON).keyPath;
77
+ }
78
+
79
+ /**
80
+ * Deserializes the `KeyPathExpressionJSON` to the `KeyPathExpression`.
81
+ * @param json The `KeyPathExpressionJSON` to deserialize.
82
+ */
83
+ fromJSON(json: CustomPathJSON): void {
84
+ const keyPath = this.parseToKeyPath(json);
85
+
86
+ if (!shallowEqual(keyPath, this._keyPath)) {
87
+ this._keyPath = keyPath;
88
+ this._rawPathJson = json;
89
+
90
+ // After the keyPath is updated, the referenced variables need to be refreshed.
91
+ this.refreshRefs();
92
+ }
93
+ }
94
+
95
+ constructor(params: CreateASTParams, opts: any) {
96
+ super(params, opts);
97
+
98
+ this.toDispose.pushAll([
99
+ // Can be used when the variable list changes (when there are additions or deletions).
100
+ this.scope.available.onVariableListChange(() => {
101
+ this.refreshRefs();
102
+ }),
103
+ // When the referable variable pointed to by this._keyPath changes, refresh the reference data.
104
+ this.scope.available.onAnyVariableChange((_v) => {
105
+ if (_v.key === this._keyPath[0]) {
106
+ this.refreshRefs();
107
+ }
108
+ }),
109
+ ]);
110
+ }
111
+
112
+ /**
113
+ * Serialize the `KeyPathExpression` to `KeyPathExpressionJSON`.
114
+ * @returns The JSON representation of `KeyPathExpression`.
115
+ */
116
+ toJSON() {
117
+ return this._rawPathJson;
118
+ }
119
+ }
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ */
5
+
6
+ import { postConstructAST } from '../utils/inversify';
7
+ import { ASTKind, ASTNodeJSON } from '../types';
8
+ import { BaseType } from '../type';
9
+ import { BaseExpression } from './base-expression';
10
+
11
+ /**
12
+ * ASTNodeJSON representation of `WrapArrayExpression`
13
+ */
14
+ export interface WrapArrayExpressionJSON {
15
+ /**
16
+ * The expression to be wrapped.
17
+ */
18
+ wrapFor: ASTNodeJSON;
19
+ }
20
+
21
+ /**
22
+ * Represents a wrap expression, which wraps an expression with an array.
23
+ */
24
+ export class WrapArrayExpression extends BaseExpression<WrapArrayExpressionJSON> {
25
+ static kind: string = ASTKind.WrapArrayExpression;
26
+
27
+ protected _wrapFor: BaseExpression | undefined;
28
+
29
+ protected _returnType: BaseType | undefined;
30
+
31
+ /**
32
+ * The expression to be wrapped.
33
+ */
34
+ get wrapFor() {
35
+ return this._wrapFor;
36
+ }
37
+
38
+ /**
39
+ * The return type of the expression.
40
+ */
41
+ get returnType(): BaseType | undefined {
42
+ return this._returnType;
43
+ }
44
+
45
+ /**
46
+ * Refresh the return type of the expression.
47
+ */
48
+ refreshReturnType() {
49
+ // The return value of the wrapped expression.
50
+ const childReturnTypeJSON = this.wrapFor?.returnType?.toJSON();
51
+
52
+ this.updateChildNodeByKey('_returnType', {
53
+ kind: ASTKind.Array,
54
+ items: childReturnTypeJSON,
55
+ });
56
+ }
57
+
58
+ /**
59
+ * Get the variable fields referenced by the expression.
60
+ * @returns An empty array, as this expression does not reference any variables.
61
+ */
62
+ getRefFields(): [] {
63
+ return [];
64
+ }
65
+
66
+ /**
67
+ * Deserializes the `WrapArrayExpressionJSON` to the `WrapArrayExpression`.
68
+ * @param json The `WrapArrayExpressionJSON` to deserialize.
69
+ */
70
+ fromJSON({ wrapFor: expression }: WrapArrayExpressionJSON): void {
71
+ this.updateChildNodeByKey('_wrapFor', expression);
72
+ }
73
+
74
+ /**
75
+ * Serialize the `WrapArrayExpression` to `WrapArrayExpressionJSON`.
76
+ * @returns The JSON representation of `WrapArrayExpression`.
77
+ */
78
+ toJSON() {
79
+ return {
80
+ kind: ASTKind.WrapArrayExpression,
81
+ wrapFor: this.wrapFor?.toJSON(),
82
+ };
83
+ }
84
+
85
+ @postConstructAST()
86
+ protected init() {
87
+ this.refreshReturnType = this.refreshReturnType.bind(this);
88
+
89
+ this.toDispose.push(
90
+ this.subscribe(this.refreshReturnType, {
91
+ selector: (curr) => curr.wrapFor?.returnType,
92
+ triggerOnInit: true,
93
+ })
94
+ );
95
+ }
96
+ }
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ */
5
+
6
+ import { ASTKind, ASTNodeJSON } from './types';
7
+ import { StringJSON } from './type/string';
8
+ import { MapJSON } from './type/map';
9
+ import { ArrayJSON } from './type/array';
10
+ import { CustomTypeJSON, ObjectJSON, UnionJSON } from './type';
11
+ import {
12
+ EnumerateExpressionJSON,
13
+ KeyPathExpressionJSON,
14
+ WrapArrayExpressionJSON,
15
+ } from './expression';
16
+ import { PropertyJSON, VariableDeclarationJSON, VariableDeclarationListJSON } from './declaration';
17
+ import { ASTNode } from './ast-node';
18
+
19
+ /**
20
+ * Variable-core ASTNode factories.
21
+ */
22
+ export namespace ASTFactory {
23
+ /**
24
+ * Type-related factories.
25
+ */
26
+
27
+ /**
28
+ * Creates a `String` type node.
29
+ */
30
+ export const createString = (json?: StringJSON) => ({
31
+ kind: ASTKind.String,
32
+ ...(json || {}),
33
+ });
34
+
35
+ /**
36
+ * Creates a `Number` type node.
37
+ */
38
+ export const createNumber = () => ({ kind: ASTKind.Number });
39
+
40
+ /**
41
+ * Creates a `Boolean` type node.
42
+ */
43
+ export const createBoolean = () => ({ kind: ASTKind.Boolean });
44
+
45
+ /**
46
+ * Creates an `Integer` type node.
47
+ */
48
+ export const createInteger = () => ({ kind: ASTKind.Integer });
49
+
50
+ /**
51
+ * Creates an `Object` type node.
52
+ */
53
+ export const createObject = (json: ObjectJSON) => ({
54
+ kind: ASTKind.Object,
55
+ ...json,
56
+ });
57
+
58
+ /**
59
+ * Creates an `Array` type node.
60
+ */
61
+ export const createArray = (json: ArrayJSON) => ({
62
+ kind: ASTKind.Array,
63
+ ...json,
64
+ });
65
+
66
+ /**
67
+ * Creates a `Map` type node.
68
+ */
69
+ export const createMap = (json: MapJSON) => ({
70
+ kind: ASTKind.Map,
71
+ ...json,
72
+ });
73
+
74
+ /**
75
+ * Creates a `Union` type node.
76
+ */
77
+ export const createUnion = (json: UnionJSON) => ({
78
+ kind: ASTKind.Union,
79
+ ...json,
80
+ });
81
+
82
+ /**
83
+ * Creates a `CustomType` node.
84
+ */
85
+ export const createCustomType = (json: CustomTypeJSON) => ({
86
+ kind: ASTKind.CustomType,
87
+ ...json,
88
+ });
89
+
90
+ /**
91
+ * Declaration-related factories.
92
+ */
93
+
94
+ /**
95
+ * Creates a `VariableDeclaration` node.
96
+ */
97
+ export const createVariableDeclaration = <VariableMeta = any>(
98
+ json: VariableDeclarationJSON<VariableMeta>
99
+ ) => ({
100
+ kind: ASTKind.VariableDeclaration,
101
+ ...json,
102
+ });
103
+
104
+ /**
105
+ * Creates a `Property` node.
106
+ */
107
+ export const createProperty = <VariableMeta = any>(json: PropertyJSON<VariableMeta>) => ({
108
+ kind: ASTKind.Property,
109
+ ...json,
110
+ });
111
+
112
+ /**
113
+ * Creates a `VariableDeclarationList` node.
114
+ */
115
+ export const createVariableDeclarationList = (json: VariableDeclarationListJSON) => ({
116
+ kind: ASTKind.VariableDeclarationList,
117
+ ...json,
118
+ });
119
+
120
+ /**
121
+ * Expression-related factories.
122
+ */
123
+
124
+ /**
125
+ * Creates an `EnumerateExpression` node.
126
+ */
127
+ export const createEnumerateExpression = (json: EnumerateExpressionJSON) => ({
128
+ kind: ASTKind.EnumerateExpression,
129
+ ...json,
130
+ });
131
+
132
+ /**
133
+ * Creates a `KeyPathExpression` node.
134
+ */
135
+ export const createKeyPathExpression = (json: KeyPathExpressionJSON) => ({
136
+ kind: ASTKind.KeyPathExpression,
137
+ ...json,
138
+ });
139
+
140
+ /**
141
+ * Creates a `WrapArrayExpression` node.
142
+ */
143
+ export const createWrapArrayExpression = (json: WrapArrayExpressionJSON) => ({
144
+ kind: ASTKind.WrapArrayExpression,
145
+ ...json,
146
+ });
147
+
148
+ /**
149
+ * Create by AST Class.
150
+ */
151
+
152
+ /**
153
+ * Creates Type-Safe ASTNodeJSON object based on the provided AST class.
154
+ *
155
+ * @param targetType Target ASTNode class.
156
+ * @param json The JSON data for the node.
157
+ * @returns The ASTNode JSON object.
158
+ */
159
+ export const create = <JSON extends ASTNodeJSON>(
160
+ targetType: { kind: string; new (...args: any[]): ASTNode<JSON> },
161
+ json: JSON
162
+ ) => ({ kind: targetType.kind, ...json });
163
+ }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ */
5
+
6
+ /**
7
+ * ASTNode flags. Stored in the `flags` property of the `ASTNode`.
8
+ */
9
+ export enum ASTNodeFlags {
10
+ /**
11
+ * None.
12
+ */
13
+ None = 0,
14
+
15
+ /**
16
+ * Variable Field.
17
+ */
18
+ VariableField = 1 << 0,
19
+
20
+ /**
21
+ * Expression.
22
+ */
23
+ Expression = 1 << 2,
24
+
25
+ /**
26
+ * # Variable Type Flags
27
+ */
28
+
29
+ /**
30
+ * Basic type.
31
+ */
32
+ BasicType = 1 << 3,
33
+ /**
34
+ * Drillable variable type.
35
+ */
36
+ DrilldownType = 1 << 4,
37
+ /**
38
+ * Enumerable variable type.
39
+ */
40
+ EnumerateType = 1 << 5,
41
+ /**
42
+ * Composite type, currently not in use.
43
+ */
44
+ UnionType = 1 << 6,
45
+
46
+ /**
47
+ * Variable type.
48
+ */
49
+ VariableType = BasicType | DrilldownType | EnumerateType | UnionType,
50
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ */
5
+
6
+ export {
7
+ type ASTNodeJSON,
8
+ ASTKind,
9
+ type GetKindJSON,
10
+ type GetKindJSONOrKind,
11
+ type CreateASTParams,
12
+ type GlobalEventActionType,
13
+ } from './types';
14
+ export { ASTRegisters } from './ast-registers';
15
+ export { ASTNode, type ASTNodeRegistry } from './ast-node';
16
+ export { ASTNodeFlags } from './flags';
17
+
18
+ export * from './common';
19
+ export * from './declaration';
20
+ export * from './type';
21
+ export * from './expression';
22
+
23
+ export { ASTFactory } from './factory';
24
+ export { ASTMatch } from './match';
25
+ export { injectToAST, postConstructAST } from './utils/inversify';
26
+ export { isMatchAST } from './utils/helpers';