@lcap/nasl 3.7.0-beta.5 → 3.7.0-beta.6
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/out/bak/translator.js +12 -12
- package/out/bak/translator.js.map +1 -1
- package/out/common/BaseNode.js +2 -2
- package/out/common/BaseNode.js.map +1 -1
- package/out/concepts/App__.d.ts +1 -1
- package/out/concepts/App__.js +2 -2
- package/out/concepts/App__.js.map +1 -1
- package/out/concepts/BindAttribute__.js +1 -1
- package/out/concepts/BindAttribute__.js.map +1 -1
- package/out/concepts/BindDirective__.js +1 -1
- package/out/concepts/BindDirective__.js.map +1 -1
- package/out/concepts/CallAuthInterface__.d.ts +1 -0
- package/out/concepts/CallAuthInterface__.js +9 -0
- package/out/concepts/CallAuthInterface__.js.map +1 -1
- package/out/concepts/CallLogic__.js +12 -6
- package/out/concepts/CallLogic__.js.map +1 -1
- package/out/concepts/Frontend__.js +1 -0
- package/out/concepts/Frontend__.js.map +1 -1
- package/out/concepts/Integration__.d.ts +1 -0
- package/out/concepts/Integration__.js +4 -0
- package/out/concepts/Integration__.js.map +1 -1
- package/out/concepts/LogicItem__.js +1 -1
- package/out/concepts/LogicItem__.js.map +1 -1
- package/out/concepts/Logic__.js +4 -4
- package/out/concepts/Logic__.js.map +1 -1
- package/out/concepts/Param__.js +3 -1
- package/out/concepts/Param__.js.map +1 -1
- package/out/concepts/View__.d.ts +3 -2
- package/out/concepts/View__.js +11 -18
- package/out/concepts/View__.js.map +1 -1
- package/out/generator/release-body/body.js +1 -2
- package/out/generator/release-body/body.js.map +1 -1
- package/out/generator/release-body/data.js +1 -1
- package/out/generator/release-body/types.d.ts +1 -1
- package/out/natural/genNaturalTS.d.ts +8 -8
- package/out/natural/genNaturalTS.js +41 -41
- package/out/natural/prompt/analyzeClaims.js +4 -3
- package/out/natural/prompt/analyzeClaims.js.map +1 -1
- package/out/natural/prompt/analyzeFormatOutput.js +1 -1
- package/out/natural/prompt/analyzeTasks.js +2 -2
- package/out/server/naslServer.js +11 -4
- package/out/server/naslServer.js.map +1 -1
- package/out/templator/genCreateBlock.js +2 -2
- package/out/templator/genCreateBlock.js.map +1 -1
- package/out/templator/genCurdEditMultipleKeyBlock.js +1 -1
- package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
- package/out/templator/genCurdMultipleKeyBlock.js +2 -3
- package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
- package/out/templator/genUpdateBlock.js +5 -4
- package/out/templator/genUpdateBlock.js.map +1 -1
- package/out/utils/delay/index.d.ts +0 -0
- package/out/utils/delay/index.js +1 -0
- package/out/utils/delay/index.js.map +1 -0
- package/out/utils/delay.d.ts +9 -0
- package/out/utils/delay.js +41 -0
- package/out/utils/delay.js.map +1 -0
- package/out/utils/env.d.ts +4 -0
- package/out/utils/env.js +6 -1
- package/out/utils/env.js.map +1 -1
- package/out/utils/time-slicing/controller.js +4 -2
- package/out/utils/time-slicing/controller.js.map +1 -1
- package/out/utils/time-slicing/page-state.d.ts +1 -1
- package/out/utils/time-slicing/page-state.js +3 -9
- package/out/utils/time-slicing/page-state.js.map +1 -1
- package/package.json +1 -1
- package/src/bak/translator.js +13 -13
- package/src/common/BaseNode.ts +2 -2
- package/src/concepts/App__.ts +2 -2
- package/src/concepts/BindAttribute__.ts +1 -1
- package/src/concepts/BindDirective__.ts +1 -1
- package/src/concepts/CallAuthInterface__.ts +10 -0
- package/src/concepts/CallLogic__.ts +14 -7
- package/src/concepts/Frontend__.ts +1 -0
- package/src/concepts/Integration__.ts +6 -0
- package/src/concepts/LogicItem__.ts +1 -1
- package/src/concepts/Logic__.ts +4 -4
- package/src/concepts/Param__.ts +3 -1
- package/src/concepts/View__.ts +12 -20
- package/src/generator/release-body/body.ts +1 -2
- package/src/generator/release-body/data.ts +1 -1
- package/src/generator/release-body/types.ts +1 -1
- package/src/natural/genNaturalTS.ts +41 -41
- package/src/natural/prompt/analyzeClaims.ts +4 -3
- package/src/natural/prompt/analyzeFormatOutput.ts +1 -1
- package/src/natural/prompt/analyzeTasks.ts +2 -2
- package/src/server/naslServer.ts +12 -4
- package/src/templator/genCreateBlock.ts +2 -2
- package/src/templator/genCurdEditMultipleKeyBlock.ts +1 -1
- package/src/templator/genCurdMultipleKeyBlock.ts +2 -3
- package/src/templator/genUpdateBlock.ts +5 -4
- package/src/utils/delay/index.ts +0 -0
- package/src/utils/delay.ts +41 -0
- package/src/utils/env.ts +7 -0
- package/src/utils/time-slicing/controller.ts +5 -3
- package/src/utils/time-slicing/page-state.ts +1 -9
- package/test/concepts/view-element/__snapshots__/toVue.spec.ts.snap +2 -2
|
@@ -7,9 +7,9 @@ export const analyzeTasks = () => {
|
|
|
7
7
|
- text: 如果你认为需求不够明确时,可以继续询问用户需求的细节,不可为空
|
|
8
8
|
- executable
|
|
9
9
|
- 类型为 boolean, 如果你认为需求比较明确并且 plan 可执行, 返回 true, 否则返回 false
|
|
10
|
-
-
|
|
10
|
+
- requiredIndexes
|
|
11
11
|
- 类型为 Array, 你需要根据用户的执行计划,从 Context Definition 中整理出执行需要用到的模块或者方法,返回对应的索引
|
|
12
|
-
- 用于下一步的具体实施,需要尽可能详细的返回所有和执行计划相关的模块或方法索引。例如:"
|
|
12
|
+
- 用于下一步的具体实施,需要尽可能详细的返回所有和执行计划相关的模块或方法索引。例如:"requiredIndexes": ['1','6-3','8-1-1-0']。
|
|
13
13
|
- needQueryRepository
|
|
14
14
|
- 类型为 boolean, 如果你认为需求相关的上下文信息不足,需要另外查询知识库时, 返回 true, 否则返回 false
|
|
15
15
|
`;
|
package/src/server/naslServer.ts
CHANGED
|
@@ -584,7 +584,7 @@ class NaslServer {
|
|
|
584
584
|
|
|
585
585
|
if (module instanceof Connector) {
|
|
586
586
|
yield* getTsFiles(triggerLaunchers, 'triggerLauncher');
|
|
587
|
-
yield* getTsFiles(authLogicsForCallInterface, 'authLogicForCallInterface');
|
|
587
|
+
// yield* getTsFiles(authLogicsForCallInterface, 'authLogicForCallInterface');
|
|
588
588
|
yield* getTsFiles(concat(namespaces, 'logics'), 'namespaces_logic');
|
|
589
589
|
}
|
|
590
590
|
|
|
@@ -2206,7 +2206,7 @@ class NaslServer {
|
|
|
2206
2206
|
}
|
|
2207
2207
|
else if (fileNode instanceof Logic || fileNode instanceof OverriddenLogic) {
|
|
2208
2208
|
const { isRefedByTrigger, fRefNames } = yield this.isRefedByTriggerAndReturnFirstRef(fileNode);
|
|
2209
|
-
if (fileNode instanceof Logic && fileNode?.exportInterface) {
|
|
2209
|
+
if (fileNode instanceof Logic && fileNode?.exportInterface && fileNode.calleewholeKey.startsWith('app.logics')) {
|
|
2210
2210
|
let isSame = true;
|
|
2211
2211
|
const itf = (fileNode.exportInterface as Interface);
|
|
2212
2212
|
const { params: logicParams, returns: logicReturns } = fileNode;
|
|
@@ -2233,7 +2233,7 @@ class NaslServer {
|
|
|
2233
2233
|
if (isSame && logicReturns?.length === itfReturns?.length && logicReturns?.length > 0) {
|
|
2234
2234
|
if (logicReturns[0].name !== itfReturns[0].name) {
|
|
2235
2235
|
isSame = false;
|
|
2236
|
-
} else if (!logicReturns[0]?.typeAnnotation?.isSame?.(itfReturns[0]?.typeAnnotation)) {
|
|
2236
|
+
} else if (!(logicReturns[0]?.typeAnnotation ?? logicReturns[0]?.__TypeAnnotation)?.isSame?.(itfReturns[0]?.typeAnnotation)) {
|
|
2237
2237
|
isSame = false;
|
|
2238
2238
|
}
|
|
2239
2239
|
}
|
|
@@ -4474,6 +4474,11 @@ class NaslServer {
|
|
|
4474
4474
|
|
|
4475
4475
|
this.logger.timeEnd('全量标注');
|
|
4476
4476
|
|
|
4477
|
+
// 测试环境打印数据
|
|
4478
|
+
if (utils.isTestBrowser) {
|
|
4479
|
+
this.logger.info('全量标注数据', json);
|
|
4480
|
+
}
|
|
4481
|
+
|
|
4477
4482
|
if (releaseFlag) {
|
|
4478
4483
|
// 全量标注后对json进行一些修改,为了服务端翻译处理
|
|
4479
4484
|
this.annotationToJson(typesMap, json);
|
|
@@ -4803,7 +4808,10 @@ class NaslServer {
|
|
|
4803
4808
|
* @param result toTs生成的内容
|
|
4804
4809
|
*/
|
|
4805
4810
|
async handleDelete(fileNode: BaseNode, targetNode: BaseNode, result: utils.EmbeddedTSFileResult) {
|
|
4806
|
-
const filePath = (fileNode as FileNode)
|
|
4811
|
+
const filePath = (fileNode as FileNode)?.getEmbeddedFilePath();
|
|
4812
|
+
if (!filePath) {
|
|
4813
|
+
return;
|
|
4814
|
+
}
|
|
4807
4815
|
// 如果要删除,而且当前要删Logic就直接删除并且清除错误
|
|
4808
4816
|
/**
|
|
4809
4817
|
* 删除节点中的一个内容,删除了以后,就查一下引用的地方一起查一下异常
|
|
@@ -31,7 +31,7 @@ export function genCreateFormTemplate(entity: Entity, nameGroup: NameGroup, sele
|
|
|
31
31
|
if (required) rules.push('required');
|
|
32
32
|
const rulesStr = rules.join(' | ');
|
|
33
33
|
|
|
34
|
-
let formItem = ` <u-form-item ${required ? ' required' : ''}${rulesStr.length ? ` rules="${rulesStr}"` : ''
|
|
34
|
+
let formItem = ` <u-form-item ${required ? ' :required="true"' : ''}${rulesStr.length ? ` rules="${rulesStr}"` : ''
|
|
35
35
|
} layout="center"><template #label><u-text text="${label}"></u-text></template>\n`;
|
|
36
36
|
|
|
37
37
|
const { typeAnnotation } = property || {};
|
|
@@ -121,7 +121,7 @@ export function genH5CreateFormTemplate(entity: Entity, nameGroup: NameGroup, se
|
|
|
121
121
|
if (required) rules.push('required');
|
|
122
122
|
const rulesStr = rules.join(' | ');
|
|
123
123
|
|
|
124
|
-
let formItem = ` <van-field drole="other" ${required ? ' required' : ''}${rulesStr.length ? ` rules="${rulesStr}"` : ''}>\n`;
|
|
124
|
+
let formItem = ` <van-field drole="other" ${required ? ' :required="true"' : ''}${rulesStr.length ? ` rules="${rulesStr}"` : ''}>\n`;
|
|
125
125
|
const { typeAnnotation } = property || {};
|
|
126
126
|
const { typeNamespace: propertyTypeNamespace } = typeAnnotation || {};
|
|
127
127
|
const propertyTypeName = transEntityMetadataTypes(typeAnnotation, dataSource.app);
|
|
@@ -137,7 +137,7 @@ function genSaveModalTemplate(entity: Entity, nameGroup: NameGroup, selectNameGr
|
|
|
137
137
|
const rulesStr = rules.join(' | ');
|
|
138
138
|
|
|
139
139
|
let formItem = `<u-form-item
|
|
140
|
-
${required ? 'required' : ''}
|
|
140
|
+
${required ? ':required="true"' : ''}
|
|
141
141
|
${rulesStr.length ? `rules="${rulesStr}"` : ''}
|
|
142
142
|
layout="center"
|
|
143
143
|
><template #label><u-text text="${label}"></u-text></template>`;
|
|
@@ -147,7 +147,7 @@ function genSaveModalTemplate(entity: Entity, nameGroup: NameGroup, selectNameGr
|
|
|
147
147
|
}
|
|
148
148
|
if (required) rules.push('required');
|
|
149
149
|
const rulesStr = rules.join(' | ');
|
|
150
|
-
let formItem = `<u-form-item ${required ? 'required' : ''} ${
|
|
150
|
+
let formItem = `<u-form-item ${required ? ':required="true"' : ''} ${
|
|
151
151
|
rulesStr.length ? `rules="${rulesStr}"` : ''
|
|
152
152
|
} layout="center"><template #label><u-text text="${label}"></u-text></template>`;
|
|
153
153
|
|
|
@@ -1094,7 +1094,7 @@ function genSaveModalTemplateDesigner(
|
|
|
1094
1094
|
}
|
|
1095
1095
|
if (required) rules.push('required');
|
|
1096
1096
|
const rulesStr = rules.join(' | ');
|
|
1097
|
-
let formItem = `<u-form-item ${required ? 'required' : ''} ${
|
|
1097
|
+
let formItem = `<u-form-item ${required ? ':required="true"' : ''} ${
|
|
1098
1098
|
rulesStr.length ? `rules="${rulesStr}"` : ''
|
|
1099
1099
|
} layout="center"><template #label><u-text text="${label}"></u-text></template>`;
|
|
1100
1100
|
|
|
@@ -1410,7 +1410,6 @@ export function genCurdMultipleKeyBlockForTableDesigner(
|
|
|
1410
1410
|
"viewBindEvents": [
|
|
1411
1411
|
{
|
|
1412
1412
|
"concept": "BindEvent",
|
|
1413
|
-
${composedByOptionStr}
|
|
1414
1413
|
"arguments": [],
|
|
1415
1414
|
"name": "created",
|
|
1416
1415
|
"calleeNamespace": "",
|
|
@@ -31,7 +31,7 @@ export function genUpdateFormTemplate(entity: Entity, nameGroup: NameGroup, sele
|
|
|
31
31
|
if (required) rules.push('required');
|
|
32
32
|
const rulesStr = rules.join(' | ');
|
|
33
33
|
|
|
34
|
-
let formItem = ` <u-form-item ${required ? ' required' : ''}${rulesStr.length ? ` rules="${rulesStr}"` : ''
|
|
34
|
+
let formItem = ` <u-form-item ${required ? ' :required="true"' : ''}${rulesStr.length ? ` rules="${rulesStr}"` : ''
|
|
35
35
|
} layout="center"><template #label><u-text text="${label}"></u-text></template>\n`;
|
|
36
36
|
|
|
37
37
|
const { typeAnnotation } = property || {};
|
|
@@ -55,9 +55,10 @@ export function genUpdateFormTemplate(entity: Entity, nameGroup: NameGroup, sele
|
|
|
55
55
|
// 存在多个属性关联同一个实体的情况,因此加上属性名用以唯一标识
|
|
56
56
|
const key = [property.name, relationEntity.name].join('-');
|
|
57
57
|
const selectNameGroup = selectNameGroupMap.get(key);
|
|
58
|
+
let dataSourceValue = `(params) => ${selectNameGroup.logic}(elements.$ce.page, elements.$ce.size)`
|
|
58
59
|
formItem += `
|
|
59
|
-
<u-select :clearable="true" placeholder="请选择${label}" :dataSource="${
|
|
60
|
-
|
|
60
|
+
<u-select :clearable="true" placeholder="请选择${label}" :dataSource="${dataSourceValue}" :pageSize="50"
|
|
61
|
+
textField="${lowerEntityName}.${displayedProperty.name}" valueField="${lowerEntityName}.${relationProperty.name}" :pagination="true" v-model="${vModel}">
|
|
61
62
|
</u-select>
|
|
62
63
|
`;
|
|
63
64
|
} else
|
|
@@ -124,7 +125,7 @@ export function genH5UpdateFormTemplate(entity: Entity, nameGroup: NameGroup, se
|
|
|
124
125
|
if (required) rules.push('required');
|
|
125
126
|
const rulesStr = rules.join(' | ');
|
|
126
127
|
|
|
127
|
-
let formItem = ` <van-field drole="other" ${required ? ' required' : ''}${rulesStr.length ? ` rules="${rulesStr}"` : ''}>\n`;
|
|
128
|
+
let formItem = ` <van-field drole="other" ${required ? ' :required="true"' : ''}${rulesStr.length ? ` rules="${rulesStr}"` : ''}>\n`;
|
|
128
129
|
|
|
129
130
|
const { typeAnnotation } = property || {};
|
|
130
131
|
const { typeNamespace: propertyTypeNamespace } = typeAnnotation || {};
|
|
File without changes
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { isNode } from './env';
|
|
2
|
+
|
|
3
|
+
/** 主线程延迟 */
|
|
4
|
+
export function delay(time: number) {
|
|
5
|
+
return new Promise((resolve) => setTimeout(resolve, time));
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
let delaySwitch = (): void => void 0;
|
|
9
|
+
let worker: Worker;
|
|
10
|
+
|
|
11
|
+
if (!isNode) {
|
|
12
|
+
const workerCode = `
|
|
13
|
+
self.onmessage = function({ data: delay }) {
|
|
14
|
+
setTimeout(function() {
|
|
15
|
+
self.postMessage('Delayed');
|
|
16
|
+
}, delay);
|
|
17
|
+
}
|
|
18
|
+
`.trim();
|
|
19
|
+
|
|
20
|
+
worker = new Worker(URL.createObjectURL(new Blob([workerCode], { type: 'application/javascript' })));
|
|
21
|
+
worker.addEventListener('message', () => {
|
|
22
|
+
delaySwitch();
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Web Worker 延迟
|
|
28
|
+
*
|
|
29
|
+
* @description 和 setTimeout 相比,它能无视页面在后台导致的 setTimeout 暂停问题
|
|
30
|
+
* @description 仅在浏览器环境下有效;Nodejs 环境下等同于 setTimeout
|
|
31
|
+
*/
|
|
32
|
+
export function delayInWorker(time = 0) {
|
|
33
|
+
if (isNode) {
|
|
34
|
+
return delay(time);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return new Promise<void>((resolve) => {
|
|
38
|
+
worker.postMessage(time);
|
|
39
|
+
delaySwitch = resolve;
|
|
40
|
+
});
|
|
41
|
+
}
|
package/src/utils/env.ts
CHANGED
|
@@ -1,2 +1,9 @@
|
|
|
1
|
+
/** 浏览器环境 */
|
|
2
|
+
export const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';
|
|
1
3
|
/** Node 环境 */
|
|
2
4
|
export const isNode = process.env.BUILD_TARGET === 'node' || !globalThis.window;
|
|
5
|
+
/** 是否是浏览器测试环境 */
|
|
6
|
+
export const isTestBrowser = isBrowser && (
|
|
7
|
+
/codewave-(test|dev)\.163yun\.com$/.test(location.hostname) ||
|
|
8
|
+
location.hostname.includes('localhost')
|
|
9
|
+
);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isPageActive } from './page-state';
|
|
2
2
|
import { Performance } from './performance';
|
|
3
3
|
import {
|
|
4
4
|
getFrameMark,
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
NextState,
|
|
17
17
|
TheoreticalLimitCalculationCoefficient as Coefficient,
|
|
18
18
|
} from './constant';
|
|
19
|
+
import { delayInWorker } from '../delay';
|
|
19
20
|
|
|
20
21
|
/** 时间分片控制器 */
|
|
21
22
|
export class TimeSlicingController {
|
|
@@ -97,11 +98,12 @@ export class TimeSlicingController {
|
|
|
97
98
|
const { frame, group, async } = this;
|
|
98
99
|
|
|
99
100
|
// 页面处于活动状态
|
|
100
|
-
if (
|
|
101
|
+
if (isPageActive()) {
|
|
101
102
|
/** 帧剩余时间 */
|
|
102
103
|
const restFrameTime = Math.max(FrameMinTime - async.time - frame.time, 0);
|
|
103
104
|
/** 是否使用下一帧 */
|
|
104
105
|
const useNextFrame = restFrameTime < FrameIdleTime;
|
|
106
|
+
/** 下组任务状态 */
|
|
105
107
|
const state = useNextFrame ? NextState.NextFrame : NextState.MicroTask;
|
|
106
108
|
/** 增长系数计算的任务上限 */
|
|
107
109
|
const taskNumberByRatio = this.increaseRatio(group.limit);
|
|
@@ -273,7 +275,7 @@ export class TimeSlicingController {
|
|
|
273
275
|
}
|
|
274
276
|
else {
|
|
275
277
|
this.setFrameEnd();
|
|
276
|
-
|
|
278
|
+
delayInWorker(FrameIdleTime).then(runFrame);
|
|
277
279
|
}
|
|
278
280
|
};
|
|
279
281
|
/** 运行任务组 */
|
|
@@ -1,12 +1,4 @@
|
|
|
1
1
|
import { isNode } from '../env';
|
|
2
2
|
|
|
3
3
|
/** 页面活动状态 */
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
// 浏览器环境需要监听页面活动状态
|
|
7
|
-
if (!isNode) {
|
|
8
|
-
pageIsActive = !(document?.hidden ?? true);
|
|
9
|
-
document?.addEventListener('visibilitychange', () => {
|
|
10
|
-
pageIsActive = !document.hidden;
|
|
11
|
-
});
|
|
12
|
-
}
|
|
4
|
+
export const isPageActive = () => !isNode && !document.hidden;
|
|
@@ -103,7 +103,7 @@ exports[`view-element:toVue table-data-source-calllogic-with-server-validation 1
|
|
|
103
103
|
>
|
|
104
104
|
<u-table-view
|
|
105
105
|
:ref=\\"\`tableView_1\`\\"
|
|
106
|
-
:data-source=\\"
|
|
106
|
+
:data-source=\\"(params) => __tableView_1_handleDataSourceLoad(params)\\"
|
|
107
107
|
:data-schema=\\"\`LoadTestTableView_1Structure\`\\"
|
|
108
108
|
:value-field=\\"\`entity1.id\`\\"
|
|
109
109
|
:pagination=\\"true\\"
|
|
@@ -271,7 +271,7 @@ exports[`view-element:toVue with-table 1`] = `
|
|
|
271
271
|
</u-linear-layout>
|
|
272
272
|
<u-table-view
|
|
273
273
|
:ref=\\"\`tableView\`\\"
|
|
274
|
-
:data-source=\\"
|
|
274
|
+
:data-source=\\"(params) => __tableView_handleDataSourceLoad(params)\\"
|
|
275
275
|
:data-schema=\\"\`LoadTestTableView2Structure\`\\"
|
|
276
276
|
:value-field=\\"\`entity2.id\`\\"
|
|
277
277
|
:pagination=\\"true\\"
|