biz-a-cli 2.3.80-15419 → 2.3.80
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/bin/app.js +20 -255
- package/bin/hub.js +0 -16
- package/bin/hubEvent.js +5 -98
- package/bin/tunnelTarget.js +0 -4
- package/engine/bpm/workflow.js +6 -7
- package/engine/cc/configValidate.js +0 -53
- package/engine/cc/guides/V2-SCREEN-AUTHORING.md +512 -531
- package/engine/cc/layer3Behavior.js +1 -2
- package/engine/cc/layer3Schema.js +1 -3
- package/engine/cc/livePipelines.js +3 -9
- package/engine/cc/publish.js +105 -86
- package/engine/domain/appConfig.js +18 -108
- package/engine/domain/applicationConfig.js +12 -87
- package/engine/domain/dialect.js +0 -138
- package/engine/domain/domainNavigation.js +50 -86
- package/engine/domain/entityConfigLoader.js +4 -16
- package/engine/domain/numericScale.js +0 -2
- package/engine/domain/system.js +0 -2
- package/engine/ext/publicTheme.js +1 -8
- package/engine/orm/apiRoute.js +61 -187
- package/engine/orm/entityConfig.js +2 -32
- package/engine/orm/finaAuth.js +0 -0
- package/engine/orm/finaEndpoint.js +0 -19
- package/engine/orm/imgQuery.js +0 -92
- package/engine/orm/listQuery.js +1 -6
- package/package.json +1 -1
- package/worker/cliScriptWorker.js +0 -5
- package/engine/attachments/store.js +0 -195
- package/engine/domain/domainRegistration.js +0 -65
- package/engine/fina/approval.js +0 -141
- package/engine/fina/approvalService.js +0 -59
- package/engine/fina/attachments.js +0 -165
- package/engine/fina/client.js +0 -84
- package/engine/fina/config.js +0 -26
- package/engine/fina/context.js +0 -58
- package/engine/fina/document.js +0 -67
- package/engine/fina/documentWrite.js +0 -173
- package/engine/fina/documents/index.js +0 -28
- package/engine/fina/documents/jv.js +0 -105
- package/engine/fina/documents/jvWrite.js +0 -260
- package/engine/fina/documents/si.js +0 -40
- package/engine/fina/errors.js +0 -17
- package/engine/fina/features.js +0 -86
- package/engine/fina/guard.js +0 -102
- package/engine/fina/identity.js +0 -87
- package/engine/fina/live.js +0 -19
- package/engine/fina/lock.js +0 -35
- package/engine/fina/master.js +0 -331
- package/engine/fina/masters/coa.js +0 -104
- package/engine/fina/masters/currency.js +0 -39
- package/engine/fina/masters/department.js +0 -32
- package/engine/fina/masters/index.js +0 -21
- package/engine/fina/masters/project.js +0 -53
- package/engine/fina/period.js +0 -56
- package/engine/fina/print.js +0 -136
- package/engine/fina/readPolicy.js +0 -67
- package/engine/fina/recurring.js +0 -200
- package/engine/fina/route.js +0 -61
- package/engine/fina/routes/attachment.js +0 -41
- package/engine/fina/routes/document.js +0 -66
- package/engine/fina/routes/master.js +0 -26
- package/engine/fina/routes/period.js +0 -24
- package/engine/fina/routes/print.js +0 -19
- package/engine/fina/routes/recurring.js +0 -27
- package/engine/fina/routes/session.js +0 -23
- package/engine/fina/routes/setup.js +0 -58
- package/engine/fina/routes/submission.js +0 -46
- package/engine/fina/routes/template.js +0 -31
- package/engine/fina/settings.js +0 -159
- package/engine/fina/sql.js +0 -34
- package/engine/fina/submission.js +0 -290
- package/engine/fina/submissionCompare.js +0 -171
- package/engine/fina/submissionRepo.js +0 -114
- package/engine/fina/template.js +0 -118
- package/engine/fina/userMap.js +0 -79
- package/engine/orm/companyLocale.js +0 -74
- package/engine/orm/userApiDataset.js +0 -153
- package/migrations/postgres/1790600000000__fina.sql +0 -33
- package/migrations/postgres/1790700000000__attachment.sql +0 -29
- package/migrations/postgres/1790800000000__fina_jv_submission.sql +0 -41
|
@@ -100,22 +100,6 @@ const screenFindings = (c, at) => {
|
|
|
100
100
|
if (kind === "list") {
|
|
101
101
|
bindings.forEach((b, i) => {
|
|
102
102
|
if (b?.trigger === "onRowClick" && b.emitter !== "list") out.push(finding("ROW_CLICK_EMITTER", `${path}/eventBindings/${i}/emitter`, `A row click is { emitter: "list", trigger: "onRowClick" } — not emitter ${JSON.stringify(b.emitter)}.`));
|
|
103
|
-
/* Doc 8 M2 (L-10): Salin opens a NEW form filled from the row. Bound like Ubah it would edit the original. */
|
|
104
|
-
if (b?.emitter === "content_copy" && b.trigger === "onClick") {
|
|
105
|
-
const copies = (b.effects ?? []).some(
|
|
106
|
-
(e) => isObject(e) && e.type === "NAVIGATE" && Array.isArray(e.route) && e.route[0] === "form" && e.route[2] === "null" && isObject(e.queryParams) && e.queryParams.copyFrom !== undefined,
|
|
107
|
-
);
|
|
108
|
-
if (!copies) {
|
|
109
|
-
const form = routeTarget(((b.effects ?? []).find((e) => isObject(e) && e.type === "NAVIGATE") ?? {}).route) ?? formsOf(ep.entity)[0] ?? "<form>";
|
|
110
|
-
out.push(
|
|
111
|
-
finding(
|
|
112
|
-
"SALIN_NOT_COPYING",
|
|
113
|
-
`${path}/eventBindings/${i}`,
|
|
114
|
-
`Salin opens a NEW form filled from the row: { type: "NAVIGATE", route: ["form", "${form}", "null"], queryParams: { copyFrom: { "$ref": "event.id" } } } — route id "null", the row's key as copyFrom. With the row's key as the route id it edits the original.`,
|
|
115
|
-
),
|
|
116
|
-
);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
103
|
});
|
|
120
104
|
const forms = formsOf(ep.entity);
|
|
121
105
|
if (forms.length) {
|
|
@@ -274,45 +258,9 @@ const styleRefFindings = (c, at) => {
|
|
|
274
258
|
if (!isObject(item)) return;
|
|
275
259
|
const p = path ?? `${sAt}/items/${i}`;
|
|
276
260
|
check(item.styleRef, p);
|
|
277
|
-
/* A list's row buttons resolve their own styleRef (client renderListStructure). */
|
|
278
|
-
if (path === undefined && Array.isArray(item.buttons)) item.buttons.forEach((b, j) => isObject(b) && check(b.styleRef, `${p}/buttons/${j}`));
|
|
279
261
|
walk(item.items, p);
|
|
280
262
|
});
|
|
281
263
|
walk(st?.items);
|
|
282
|
-
if (st?.type === "list" && Array.isArray(st.buttons)) st.buttons.forEach((b, j) => isObject(b) && check(b.styleRef, `${sAt}/buttons/${j}`));
|
|
283
|
-
}
|
|
284
|
-
return out;
|
|
285
|
-
};
|
|
286
|
-
|
|
287
|
-
/*
|
|
288
|
-
* Doc 8 M2 (L-08, S-04) — a list button's `enabled` is an expression the client evaluates per row over `row` and
|
|
289
|
-
* `model` (client list.component isEnabled). One that does not compile disables the button on every row, so it is
|
|
290
|
-
* judged here, where the AI can still repair it.
|
|
291
|
-
*/
|
|
292
|
-
const listButtonFindings = (c, at) => {
|
|
293
|
-
const out = [];
|
|
294
|
-
const judge = (button, path) => {
|
|
295
|
-
if (!isObject(button) || button.enabled === undefined) return;
|
|
296
|
-
const expression = button.enabled;
|
|
297
|
-
let compiles = typeof expression === "string" && expression.trim() !== "";
|
|
298
|
-
if (compiles) {
|
|
299
|
-
try {
|
|
300
|
-
new Function("row", "model", `return (${expression});`);
|
|
301
|
-
} catch {
|
|
302
|
-
compiles = false;
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
if (!compiles) {
|
|
306
|
-
out.push(finding("LIST_ENABLED_INVALID", `${path}/enabled`, `enabled ${JSON.stringify(expression)} is not an expression over row and model (e.g. "model.canEdit && !row.locked"); the button would be disabled on every row.`));
|
|
307
|
-
}
|
|
308
|
-
};
|
|
309
|
-
for (const [name, st] of Object.entries(c.ui?.structures ?? {})) {
|
|
310
|
-
if (st?.type !== "list") continue;
|
|
311
|
-
const sAt = `${at}/ui/structures/${name}`;
|
|
312
|
-
(Array.isArray(st.buttons) ? st.buttons : []).forEach((b, j) => judge(b, `${sAt}/buttons/${j}`));
|
|
313
|
-
(Array.isArray(st.items) ? st.items : []).forEach((item, i) => {
|
|
314
|
-
if (isObject(item) && Array.isArray(item.buttons)) item.buttons.forEach((b, j) => judge(b, `${sAt}/items/${i}/buttons/${j}`));
|
|
315
|
-
});
|
|
316
264
|
}
|
|
317
265
|
return out;
|
|
318
266
|
};
|
|
@@ -679,7 +627,6 @@ export const validateConfigWorking = ({ working, writableDomains = [], ddlWarnin
|
|
|
679
627
|
if (!(ep?.structureRef in structures)) out.push(finding("ENTRY_POINT_STRUCTURE", `${at}/ui/entryPoints/${e}/structureRef`, `${JSON.stringify(ep?.structureRef)} is not a structure of this domain.`));
|
|
680
628
|
}
|
|
681
629
|
out.push(...styleRefFindings(c, at));
|
|
682
|
-
out.push(...listButtonFindings(c, at));
|
|
683
630
|
out.push(...referenceFindings(c, at, all));
|
|
684
631
|
out.push(...lookupFindings(c, at));
|
|
685
632
|
out.push(...serverValueFindings(c, at));
|