@gct-paas/render 0.1.4-dev.9 → 0.1.5-dev.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.
Files changed (110) hide show
  1. package/dist/index.min.css +2 -0
  2. package/dist/loader.esm.min.js +1 -0
  3. package/es/Event/Dependency/controller.d.ts +1 -1
  4. package/es/Event/Dependency/controller.mjs +81 -94
  5. package/es/Event/Dependency/displayRule.mjs +130 -68
  6. package/es/Event/Dependency/useDependency.mjs +117 -0
  7. package/es/Event/Dependency/useDependencyToShow.d.ts +1 -1
  8. package/es/Event/Dependency/useDependencyToShow.mjs +100 -96
  9. package/es/Event/baseEvent.d.ts +28 -32
  10. package/es/Event/baseEvent.mjs +383 -439
  11. package/es/Event/bizServiceRequest.d.ts +1 -1
  12. package/es/Event/bizServiceRequest.mjs +29 -41
  13. package/es/Event/eventType.d.ts +1 -1
  14. package/es/Event/eventType.mjs +1 -0
  15. package/es/Event/index.d.ts +6 -3
  16. package/es/Event/index.mjs +7 -0
  17. package/es/Event/utils/appRedis.mjs +39 -49
  18. package/es/Event/utils/globalLoading.d.ts +13 -0
  19. package/es/Event/utils/globalLoading.mjs +104 -0
  20. package/es/Event/utils/processRovedInfo.mjs +228 -294
  21. package/es/Event/utils/runGlobalByPage.d.ts +4 -1
  22. package/es/Event/utils/runGlobalByPage.mjs +297 -301
  23. package/es/Event/utils/verificationVar.mjs +32 -38
  24. package/es/_virtual/_plugin-vue_export-helper.mjs +8 -0
  25. package/es/_virtual/_rolldown/runtime.mjs +13 -0
  26. package/es/components/HandwritingPad.vue.d.ts +27 -0
  27. package/es/components/HandwritingPad.vue.mjs +7 -0
  28. package/es/components/HandwritingPad.vue_vue_type_script_setup_true_name_HandwritingPad_lang.mjs +109 -0
  29. package/es/components/HandwritingPad.vue_vue_type_style_index_0_scoped_d5b980b7_lang.css +9 -0
  30. package/es/components/index.d.ts +2 -0
  31. package/es/components/index.mjs +1 -0
  32. package/es/constant/data-format.d.ts +52 -0
  33. package/es/constant/data-format.mjs +66 -0
  34. package/es/constant/date-time.d.ts +99 -0
  35. package/es/constant/date-time.mjs +187 -0
  36. package/es/constant/index.d.ts +94 -0
  37. package/es/constant/index.mjs +100 -0
  38. package/es/controller/design-render/design-render.controller.d.ts +18 -0
  39. package/es/controller/design-render/design-render.controller.mjs +78 -0
  40. package/es/controller/design-render-base/design-render-base.controller.d.ts +9 -0
  41. package/es/controller/design-render-base/design-render-base.controller.mjs +12 -0
  42. package/es/controller/design-render-container/design-render-container.controller.d.ts +4 -0
  43. package/es/controller/design-render-container/design-render-container.controller.mjs +5 -0
  44. package/es/controller/design-render-item/design-render-item.controller.d.ts +4 -0
  45. package/es/controller/design-render-item/design-render-item.controller.mjs +5 -0
  46. package/es/controller/index.d.ts +4 -0
  47. package/es/controller/index.mjs +4 -0
  48. package/es/enums/index.mjs +17 -5
  49. package/es/hooks/index.d.ts +3 -0
  50. package/es/hooks/index.mjs +3 -0
  51. package/es/hooks/use-design-render-controller/use-design-render-controller.d.ts +11 -0
  52. package/es/hooks/use-design-render-controller/use-design-render-controller.mjs +32 -0
  53. package/es/hooks/useStorageRef.mjs +35 -31
  54. package/es/hooks/widgets/useFileAttrsHooks.d.ts +28 -0
  55. package/es/hooks/widgets/useFileAttrsHooks.mjs +37 -0
  56. package/es/index.d.ts +5 -0
  57. package/es/index.mjs +44 -21
  58. package/es/interface/controller/i-design-render-base.controller.d.ts +43 -0
  59. package/es/interface/controller/i-design-render-container.controller.d.ts +7 -0
  60. package/es/interface/controller/i-design-render-item.controller.d.ts +7 -0
  61. package/es/interface/controller/i-design-render.controller.d.ts +93 -0
  62. package/es/interface/index.d.ts +12 -0
  63. package/es/interface/provider/i-render-base-node.provider.d.ts +45 -0
  64. package/es/interface/provider/i-render-container-node.provider.d.ts +30 -0
  65. package/es/interface/provider/i-render-editor-node.provider.d.ts +29 -0
  66. package/es/interface/provider/i-render-item-node.provider.d.ts +30 -0
  67. package/es/interface/state/i-design-render-base.state.d.ts +19 -0
  68. package/es/interface/state/i-design-render-container.state.d.ts +11 -0
  69. package/es/interface/state/i-design-render-item.state.d.ts +11 -0
  70. package/es/interface/state/i-design-render.state.d.ts +18 -0
  71. package/es/loader.d.ts +1 -0
  72. package/es/register/index.d.ts +1 -0
  73. package/es/register/index.mjs +2 -0
  74. package/es/register/node/node.register.d.ts +92 -0
  75. package/es/register/node/node.register.mjs +116 -0
  76. package/es/register/render-register/render-register.mjs +63 -58
  77. package/es/state/design-render/design-render.state.d.ts +13 -0
  78. package/es/state/design-render/design-render.state.mjs +15 -0
  79. package/es/state/design-render-base/design-render-base.state.d.ts +4 -0
  80. package/es/state/design-render-base/design-render-base.state.mjs +6 -0
  81. package/es/state/design-render-container/design-render-container.state.d.ts +4 -0
  82. package/es/state/design-render-item/design-render-item.state.d.ts +4 -0
  83. package/es/state/index.d.ts +4 -0
  84. package/es/utils/cacheAdapter.mjs +62 -54
  85. package/es/utils/expression/index.d.ts +1 -1
  86. package/es/utils/expression/index.mjs +105 -122
  87. package/es/utils/expression/regularExpression/methods.mjs +426 -567
  88. package/es/utils/field-attrs/basicAttrs.mjs +56 -80
  89. package/es/utils/field-attrs/index.mjs +16 -13
  90. package/es/utils/get-ref-data.mjs +41 -59
  91. package/es/utils/getFieldSchema.mjs +66 -80
  92. package/es/utils/index.d.ts +6 -3
  93. package/es/utils/index.mjs +12 -0
  94. package/es/utils/model-transformer.mjs +74 -64
  95. package/es/utils/render-plugin-pkg-util/render-plugin-pkg-util.d.ts +43 -0
  96. package/es/utils/render-plugin-pkg-util/render-plugin-pkg-util.mjs +65 -0
  97. package/es/utils/search/index.d.ts +3 -0
  98. package/es/utils/search/index.mjs +3 -0
  99. package/es/utils/search/listhook.d.ts +17 -0
  100. package/es/utils/search/listhook.mjs +70 -0
  101. package/es/utils/search/search-default-value.d.ts +7 -0
  102. package/es/utils/search/search-default-value.mjs +244 -0
  103. package/es/utils/search/search-hooks.d.ts +6 -0
  104. package/es/utils/search/search-hooks.mjs +67 -0
  105. package/es/utils/useStyle.d.ts +2 -2
  106. package/es/utils/useStyle.mjs +20 -15
  107. package/package.json +21 -17
  108. package/dist/index.esm.min.mjs +0 -7758
  109. package/dist/index.min.cjs +0 -9
  110. package/dist/index.system.min.js +0 -9
@@ -1,59 +1,64 @@
1
- class RenderRegister {
2
- /**
3
- * 组件清单
4
- *
5
- * @author zhanghanrui
6
- * @date 2024-05-25 08:05:03
7
- * @protected
8
- * @type {Map<string, Component>}
9
- */
10
- map = /* @__PURE__ */ new Map();
11
- // readonly hooks = {
12
- // register: new SyncSeriesHook<[string, Component]>(),
13
- // unregister: new SyncSeriesHook<string>(),
14
- // };
15
- /**
16
- * 注册界面绘制组件
17
- *
18
- * @author zhanghanrui
19
- * @date 2024-05-25 08:05:05
20
- * @param {string} tag
21
- * @param {Component} com
22
- */
23
- register(tag, com) {
24
- this.map.set(tag, com);
25
- }
26
- /**
27
- * 取消组件注册
28
- *
29
- * @author zhanghanrui
30
- * @date 2024-05-25 08:05:34
31
- * @param {string} tag
32
- */
33
- unregister(tag) {
34
- this.map.delete(tag);
35
- }
36
- /**
37
- * 获取注册的组件
38
- *
39
- * @author zhanghanrui
40
- * @date 2024-05-25 08:05:59
41
- * @param {string} tag
42
- * @return {*} {(Component | undefined)}
43
- */
44
- get(tag) {
45
- return this.map.get(tag);
46
- }
47
- /**
48
- * 组件标识清单
49
- *
50
- * @author zhanghanrui
51
- * @date 2024-05-25 08:05:19
52
- * @return {*} {string[]}
53
- */
54
- keys() {
55
- return Array.from(this.map.keys());
56
- }
57
- }
58
-
1
+ //#region src/register/render-register/render-register.ts
2
+ /**
3
+ * 绘制组件注册
4
+ *
5
+ * @author zhanghanrui
6
+ * @date 2024-05-25 08:05:52
7
+ * @export
8
+ * @class RenderRegister
9
+ */
10
+ var RenderRegister = class {
11
+ /**
12
+ * 组件清单
13
+ *
14
+ * @author zhanghanrui
15
+ * @date 2024-05-25 08:05:03
16
+ * @protected
17
+ * @type {Map<string, Component>}
18
+ */
19
+ map = /* @__PURE__ */ new Map();
20
+ /**
21
+ * 注册界面绘制组件
22
+ *
23
+ * @author zhanghanrui
24
+ * @date 2024-05-25 08:05:05
25
+ * @param {string} tag
26
+ * @param {Component} com
27
+ */
28
+ register(tag, com) {
29
+ this.map.set(tag, com);
30
+ }
31
+ /**
32
+ * 取消组件注册
33
+ *
34
+ * @author zhanghanrui
35
+ * @date 2024-05-25 08:05:34
36
+ * @param {string} tag
37
+ */
38
+ unregister(tag) {
39
+ this.map.delete(tag);
40
+ }
41
+ /**
42
+ * 获取注册的组件
43
+ *
44
+ * @author zhanghanrui
45
+ * @date 2024-05-25 08:05:59
46
+ * @param {string} tag
47
+ * @return {*} {(Component | undefined)}
48
+ */
49
+ get(tag) {
50
+ return this.map.get(tag);
51
+ }
52
+ /**
53
+ * 组件标识清单
54
+ *
55
+ * @author zhanghanrui
56
+ * @date 2024-05-25 08:05:19
57
+ * @return {*} {string[]}
58
+ */
59
+ keys() {
60
+ return Array.from(this.map.keys());
61
+ }
62
+ };
63
+ //#endregion
59
64
  export { RenderRegister };
@@ -0,0 +1,13 @@
1
+ import { IDesignRenderState } from '../../interface';
2
+ /**
3
+ * 界面状态
4
+ *
5
+ * @author zhanghanrui
6
+ * @date 2024-07-15 17:07:07
7
+ * @export
8
+ * @class DesignRenderState
9
+ * @implements {IDesignRenderState}
10
+ */
11
+ export declare class DesignRenderState implements IDesignRenderState {
12
+ context: IContext;
13
+ }
@@ -0,0 +1,15 @@
1
+ //#region src/state/design-render/design-render.state.ts
2
+ /**
3
+ * 界面状态
4
+ *
5
+ * @author zhanghanrui
6
+ * @date 2024-07-15 17:07:07
7
+ * @export
8
+ * @class DesignRenderState
9
+ * @implements {IDesignRenderState}
10
+ */
11
+ var DesignRenderState = class {
12
+ context = {};
13
+ };
14
+ //#endregion
15
+ export { DesignRenderState };
@@ -0,0 +1,4 @@
1
+ import { IDesignRenderBaseState } from '../../interface';
2
+ export declare class DesignRenderBaseState implements IDesignRenderBaseState {
3
+ isDestroy: boolean;
4
+ }
@@ -0,0 +1,6 @@
1
+ //#region src/state/design-render-base/design-render-base.state.ts
2
+ var DesignRenderBaseState = class {
3
+ isDestroy = false;
4
+ };
5
+ //#endregion
6
+ export { DesignRenderBaseState };
@@ -0,0 +1,4 @@
1
+ import { IDesignRenderContainerState } from '../../interface';
2
+ import { DesignRenderBaseState } from '../design-render-base/design-render-base.state';
3
+ export declare class DesignRenderContainerState extends DesignRenderBaseState implements IDesignRenderContainerState {
4
+ }
@@ -0,0 +1,4 @@
1
+ import { IDesignRenderItemState } from '../../interface';
2
+ import { DesignRenderBaseState } from '../design-render-base/design-render-base.state';
3
+ export declare class DesignRenderItemState extends DesignRenderBaseState implements IDesignRenderItemState {
4
+ }
@@ -0,0 +1,4 @@
1
+ export { DesignRenderState } from './design-render/design-render.state';
2
+ export { DesignRenderBaseState } from './design-render-base/design-render-base.state';
3
+ export { DesignRenderContainerState } from './design-render-container/design-render-container.state';
4
+ export { DesignRenderItemState } from './design-render-item/design-render-item.state';
@@ -1,57 +1,65 @@
1
- import qs from 'qs';
2
-
1
+ import qs from "qs";
2
+ //#region src/utils/cacheAdapter.ts
3
+ /**
4
+ * 请求缓存
5
+ * @param args
6
+ * @param adapter
7
+ * @returns
8
+ */
3
9
  function cacheAdapter(args, adapter, noneCache = false) {
4
- if (noneCache || args?.customApi?.value) return adapter(args);
5
- const maxAge = 5e3;
6
- const requestKey = typeof args === "object" ? qs.stringify({ ...args, customApi: null }) : args;
7
- let responsePromise = MemoryCache.get(requestKey);
8
- if (!responsePromise) {
9
- responsePromise = (async () => {
10
- try {
11
- return await adapter(args);
12
- } catch (reason) {
13
- MemoryCache.delete(requestKey);
14
- throw reason;
15
- }
16
- })();
17
- MemoryCache.set(requestKey, responsePromise, maxAge);
18
- return responsePromise;
19
- }
20
- return responsePromise;
10
+ if (noneCache || args?.customApi?.value) return adapter(args);
11
+ const maxAge = 5e3;
12
+ const requestKey = typeof args === "object" ? qs.stringify({
13
+ ...args,
14
+ customApi: null
15
+ }) : args;
16
+ let responsePromise = MemoryCache.get(requestKey);
17
+ if (!responsePromise) {
18
+ responsePromise = (async () => {
19
+ try {
20
+ return await adapter(args);
21
+ } catch (reason) {
22
+ MemoryCache.delete(requestKey);
23
+ throw reason;
24
+ }
25
+ })();
26
+ MemoryCache.set(requestKey, responsePromise, maxAge);
27
+ return responsePromise;
28
+ }
29
+ return responsePromise;
21
30
  }
22
- class MemoryCache {
23
- static cachedata = {};
24
- static set(key, value, maxAge) {
25
- this.cachedata[key] = {
26
- maxAge: maxAge || 0,
27
- value,
28
- now: Date.now()
29
- };
30
- }
31
- static get(key) {
32
- this.reset();
33
- const cachedItem = this.cachedata[key];
34
- if (!cachedItem) return null;
35
- return cachedItem.value;
36
- }
37
- static delete(key) {
38
- return delete this.cachedata[key];
39
- }
40
- static clear() {
41
- this.cachedata = {};
42
- }
43
- /**
44
- *清空过期的数据
45
- */
46
- static reset() {
47
- for (const key in this.cachedata) {
48
- const cachedItem = this.cachedata[key];
49
- if (cachedItem) {
50
- const isExpired = Date.now() - cachedItem.now > cachedItem.maxAge;
51
- if (isExpired) this.delete(key);
52
- }
53
- }
54
- }
55
- }
56
-
31
+ var MemoryCache = class {
32
+ static cachedata = {};
33
+ static set(key, value, maxAge) {
34
+ this.cachedata[key] = {
35
+ maxAge: maxAge || 0,
36
+ value,
37
+ now: Date.now()
38
+ };
39
+ }
40
+ static get(key) {
41
+ this.reset();
42
+ const cachedItem = this.cachedata[key];
43
+ if (!cachedItem) return null;
44
+ return cachedItem.value;
45
+ }
46
+ static delete(key) {
47
+ return delete this.cachedata[key];
48
+ }
49
+ static clear() {
50
+ this.cachedata = {};
51
+ }
52
+ /**
53
+ *清空过期的数据
54
+ */
55
+ static reset() {
56
+ for (const key in this.cachedata) {
57
+ const cachedItem = this.cachedata[key];
58
+ if (cachedItem) {
59
+ if (Date.now() - cachedItem.now > cachedItem.maxAge) this.delete(key);
60
+ }
61
+ }
62
+ }
63
+ };
64
+ //#endregion
57
65
  export { cacheAdapter };
@@ -1,6 +1,6 @@
1
1
  import { UseMemoizeReturn } from '@vueuse/core';
2
2
  export declare const identify: UseMemoizeReturn<string[], [expr: string, isAll?: boolean | undefined]>;
3
- export declare const calculate: UseMemoizeReturn<Promise<IObject>, [
3
+ export declare const calculate: UseMemoizeReturn<Promise<IObject | number>, [
4
4
  expr: string,
5
5
  values: IObject
6
6
  ]>;
@@ -1,133 +1,116 @@
1
- import * as methods from './regularExpression/methods.mjs';
2
- import * as esprima from 'esprima-next';
3
- import estraverse from 'estraverse';
4
- import { innerVarIds, SYSTEM_VAR_PREFIX, operator2FuncMap, functionMap } from '@gct-paas/core';
5
- import { useMemoize } from '@vueuse/core';
6
-
7
- window._METHOD_DEBUG_ = methods;
8
- const identify = useMemoize(_identify);
9
- const calculate = useMemoize(_calc);
1
+ import { methods_exports } from "./regularExpression/methods.mjs";
2
+ import { SYSTEM_VAR_PREFIX, functionMap, innerVarIds, operator2FuncMap } from "@gct-paas/core";
3
+ import * as esprima from "esprima-next";
4
+ import estraverse from "estraverse";
5
+ import { useMemoize } from "@vueuse/core";
6
+ //#region src/utils/expression/index.ts
7
+ window._METHOD_DEBUG_ = methods_exports;
8
+ var identify = useMemoize(_identify);
9
+ var calculate = useMemoize(_calc);
10
10
  function _deepCalcName(node) {
11
- if (node.type === esprima.Syntax.MemberExpression) {
12
- return `${node.object.type === esprima.Syntax.MemberExpression ? _deepCalcName(node.object) : node.object.name}.${node.property.name}`;
13
- } else if (node.type === esprima.Syntax.Identifier) {
14
- return node.name;
15
- }
16
- return "";
11
+ if (node.type === esprima.Syntax.MemberExpression) return `${node.object.type === esprima.Syntax.MemberExpression ? _deepCalcName(node.object) : node.object.name}.${node.property.name}`;
12
+ else if (node.type === esprima.Syntax.Identifier) return node.name;
13
+ return "";
17
14
  }
18
- const AsyncFunction = Object.getPrototypeOf(async function() {
19
- return;
20
- }).constructor;
15
+ var AsyncFunction = Object.getPrototypeOf(async function() {}).constructor;
16
+ /**
17
+ * 获取系统变量值
18
+ * @param ids 系统变量标识
19
+ * @returns
20
+ */
21
21
  async function _getSystemVarValue(ids) {
22
- let res = [];
23
- if (ids.length > 0) {
24
- res = await _gct.api.apaas.systemVar.getGetVarByKeys({
25
- keys: ids.join(",")
26
- });
27
- }
28
- return res;
22
+ let res = [];
23
+ if (ids.length > 0) res = await _gct.api.apaas.systemVar.getGetVarByKeys({ keys: ids.join(",") });
24
+ return res;
29
25
  }
30
- const getSystemVarValue = useMemoize(_getSystemVarValue);
26
+ var getSystemVarValue = useMemoize(_getSystemVarValue);
27
+ /**
28
+ * 表达式计算
29
+ * @param expr
30
+ * @param values
31
+ * @returns
32
+ */
31
33
  async function _calc(expr, values) {
32
- const ids = identify(expr, true);
33
- const innerIds = ids.filter((id) => innerVarIds.includes(id)).sort();
34
- const systemIds = ids.filter((id) => id.startsWith(SYSTEM_VAR_PREFIX)).sort();
35
- const systemValues = await getSystemVarValue([...innerIds, ...systemIds]);
36
- const ast = esprima.parse(expr);
37
- estraverse.replace(ast, {
38
- enter(node) {
39
- if (node.type === esprima.Syntax.BinaryExpression) {
40
- const { operator } = node;
41
- const fnName = operator2FuncMap[operator];
42
- if (!fnName) {
43
- return node;
44
- }
45
- return {
46
- type: esprima.Syntax.CallExpression,
47
- arguments: [node.left, node.right],
48
- callee: {
49
- type: esprima.Syntax.Identifier,
50
- name: fnName
51
- },
52
- optional: false
53
- };
54
- }
55
- return node;
56
- }
57
- });
58
- estraverse.traverse(ast, {
59
- enter: function(node) {
60
- if (node.type === esprima.Syntax.CallExpression && node.callee.type === esprima.Syntax.Identifier) {
61
- node.callee.name = `await Methods.${node.callee.name}`;
62
- }
63
- }
64
- });
65
- const runjs = "";
66
- const objNames = {};
67
- const defs = [];
68
- systemValues.forEach((item) => {
69
- defs.push(`const ${item.key} = ${JSON.stringify(item.value)};`);
70
- });
71
- Object.keys(values).map((key) => {
72
- if (key.includes(".")) {
73
- const [obj = "", property] = key.split(".");
74
- if (!objNames[obj]) {
75
- defs.push(`const ${obj} = {};`);
76
- objNames[obj] = true;
77
- }
78
- defs.push(`${obj}.${property} = ${JSON.stringify(values[key])};`);
79
- } else {
80
- defs.push(`const ${key} = ${JSON.stringify(values[key])};`);
81
- }
82
- });
83
- const calcFunc = new AsyncFunction(
84
- "Methods",
85
- [
86
- ...defs,
87
- `return new Promise(async(resolve)=>{`,
88
- `const res = ${runjs};`,
89
- "resolve(res);",
90
- "})"
91
- ].join("\n")
92
- );
93
- const result = await calcFunc(methods);
94
- console.info("【表达式】", expr);
95
- console.info("【参数】", values);
96
- console.info("【执行语句】", calcFunc.toString());
97
- console.info("【执行结果】", result);
98
- return result;
34
+ const ids = identify(expr, true);
35
+ const innerIds = ids.filter((id) => innerVarIds.includes(id)).sort();
36
+ const systemIds = ids.filter((id) => id.startsWith(SYSTEM_VAR_PREFIX)).sort();
37
+ const systemValues = await getSystemVarValue([...innerIds, ...systemIds]);
38
+ const ast = esprima.parse(expr);
39
+ estraverse.replace(ast, { enter(node) {
40
+ if (node.type === esprima.Syntax.BinaryExpression) {
41
+ const { operator } = node;
42
+ const fnName = operator2FuncMap[operator];
43
+ if (!fnName) return node;
44
+ return {
45
+ type: esprima.Syntax.CallExpression,
46
+ arguments: [node.left, node.right],
47
+ callee: {
48
+ type: esprima.Syntax.Identifier,
49
+ name: fnName
50
+ },
51
+ optional: false
52
+ };
53
+ }
54
+ return node;
55
+ } });
56
+ estraverse.traverse(ast, { enter: function(node) {
57
+ if (node.type === esprima.Syntax.CallExpression && node.callee.type === esprima.Syntax.Identifier) node.callee.name = `await Methods.${node.callee.name}`;
58
+ } });
59
+ const runjs = "";
60
+ const objNames = {};
61
+ const defs = [];
62
+ systemValues.forEach((item) => {
63
+ defs.push(`const ${item.key} = ${JSON.stringify(item.value)};`);
64
+ });
65
+ Object.keys(values).map((key) => {
66
+ if (key.includes(".")) {
67
+ const [obj = "", property] = key.split(".");
68
+ if (!objNames[obj]) {
69
+ defs.push(`const ${obj} = {};`);
70
+ objNames[obj] = true;
71
+ }
72
+ defs.push(`${obj}.${property} = ${JSON.stringify(values[key])};`);
73
+ } else defs.push(`const ${key} = ${JSON.stringify(values[key])};`);
74
+ });
75
+ const calcFunc = new AsyncFunction("Methods", [
76
+ ...defs,
77
+ `return new Promise(async(resolve)=>{`,
78
+ `const res = ${runjs};`,
79
+ "resolve(res);",
80
+ "})"
81
+ ].join("\n"));
82
+ const result = await calcFunc(methods_exports);
83
+ console.info("【表达式】", expr);
84
+ console.info("【参数】", values);
85
+ console.info("【执行语句】", calcFunc.toString());
86
+ console.info("【执行结果】", result);
87
+ return result;
99
88
  }
89
+ /**
90
+ * 变量识别
91
+ * @param expr
92
+ * @returns
93
+ */
100
94
  function _identify(expr, isAll = false) {
101
- const ast = esprima.parse(expr);
102
- let identifiers = [];
103
- estraverse.traverse(ast, {
104
- enter: function(node) {
105
- if (node.type === esprima.Syntax.MemberExpression) {
106
- const name = _deepCalcName(node);
107
- identifiers.push(name);
108
- Object.assign(node, {
109
- name,
110
- type: esprima.Syntax.Identifier
111
- });
112
- } else if (node.type === esprima.Syntax.Identifier) {
113
- identifiers.push(node.name);
114
- }
115
- if (isAll) {
116
- identifiers = identifiers.filter(
117
- (item) => !functionMap[item] && item !== "undefined"
118
- );
119
- } else {
120
- identifiers = identifiers.filter(
121
- (item) => !functionMap[item] && item !== "undefined" && !innerVarIds.includes(item) && !item.startsWith(SYSTEM_VAR_PREFIX) && !item.startsWith("undefined.")
122
- );
123
- }
124
- }
125
- });
126
- return [...new Set(identifiers)];
95
+ const ast = esprima.parse(expr);
96
+ let identifiers = [];
97
+ estraverse.traverse(ast, { enter: function(node) {
98
+ if (node.type === esprima.Syntax.MemberExpression) {
99
+ const name = _deepCalcName(node);
100
+ identifiers.push(name);
101
+ Object.assign(node, {
102
+ name,
103
+ type: esprima.Syntax.Identifier
104
+ });
105
+ } else if (node.type === esprima.Syntax.Identifier) identifiers.push(node.name);
106
+ if (isAll) identifiers = identifiers.filter((item) => !functionMap[item] && item !== "undefined");
107
+ else identifiers = identifiers.filter((item) => !functionMap[item] && item !== "undefined" && !innerVarIds.includes(item) && !item.startsWith(SYSTEM_VAR_PREFIX) && !item.startsWith("undefined."));
108
+ } });
109
+ return [...new Set(identifiers)];
127
110
  }
128
111
  window.gct_expression = {
129
- execute: calculate,
130
- identify
112
+ execute: calculate,
113
+ identify
131
114
  };
132
-
115
+ //#endregion
133
116
  export { calculate, identify };