@nocobase/plugin-flow-engine 2.2.0-alpha.1 → 2.2.0-alpha.3
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/dist/client/index.js +1 -1
- package/dist/externalVersion.js +9 -9
- package/dist/locale/en-US.json +1 -0
- package/dist/locale/index.d.ts +2 -0
- package/dist/locale/zh-CN.json +1 -0
- package/dist/node_modules/@ant-design/icons-svg/package.json +1 -1
- package/dist/node_modules/acorn/package.json +1 -1
- package/dist/node_modules/acorn-jsx/package.json +1 -1
- package/dist/node_modules/acorn-walk/package.json +1 -1
- package/dist/node_modules/ses/package.json +1 -1
- package/dist/node_modules/zod/package.json +1 -1
- package/dist/server/flow-surfaces/{runjs-authoring/blocked-global-stop/index.d.ts → approval/authoring-validation.d.ts} +1 -2
- package/dist/server/flow-surfaces/approval/authoring-validation.js +1151 -0
- package/dist/server/flow-surfaces/approval/blueprint-service.js +2 -0
- package/dist/server/flow-surfaces/authoring-validation.js +471 -47
- package/dist/server/flow-surfaces/blueprint/export-document.d.ts +50 -0
- package/dist/server/flow-surfaces/blueprint/export-document.js +2510 -0
- package/dist/server/flow-surfaces/builder.js +16 -1
- package/dist/server/flow-surfaces/catalog.js +13 -2
- package/dist/server/flow-surfaces/configure-options.js +5 -3
- package/dist/server/flow-surfaces/constants.d.ts +9 -2
- package/dist/server/flow-surfaces/constants.js +1 -0
- package/dist/server/flow-surfaces/contract-guard.js +24 -2
- package/dist/server/flow-surfaces/default-action-popup.d.ts +2 -0
- package/dist/server/flow-surfaces/default-action-popup.js +27 -13
- package/dist/server/flow-surfaces/filter-group.d.ts +19 -2
- package/dist/server/flow-surfaces/filter-group.js +232 -3
- package/dist/server/flow-surfaces/planning/compiler.d.ts +1 -0
- package/dist/server/flow-surfaces/planning/compiler.js +205 -82
- package/dist/server/flow-surfaces/planning/key-registry.d.ts +1 -1
- package/dist/server/flow-surfaces/planning/runtime.js +1 -0
- package/dist/server/flow-surfaces/planning/step-link.d.ts +1 -1
- package/dist/server/flow-surfaces/planning/step-link.js +22 -3
- package/dist/server/flow-surfaces/public-data-surface-default-filter.js +0 -9
- package/dist/server/flow-surfaces/reaction/field-value.d.ts +9 -0
- package/dist/server/flow-surfaces/reaction/field-value.js +51 -2
- package/dist/server/flow-surfaces/reaction/linkage.d.ts +6 -1
- package/dist/server/flow-surfaces/reaction/linkage.js +18 -3
- package/dist/server/flow-surfaces/reaction/meta.js +19 -1
- package/dist/server/flow-surfaces/reaction/types.d.ts +19 -0
- package/dist/server/flow-surfaces/relation-backing-foreign-key.d.ts +10 -0
- package/dist/server/flow-surfaces/relation-backing-foreign-key.js +79 -0
- package/dist/server/flow-surfaces/runjs-authoring/ast/source.d.ts +1 -0
- package/dist/server/flow-surfaces/runjs-authoring/ast/source.js +20 -0
- package/dist/server/flow-surfaces/runjs-authoring/rules.js +0 -2
- package/dist/server/flow-surfaces/runjs-authoring/runtime/constants.d.ts +0 -1
- package/dist/server/flow-surfaces/runjs-authoring/runtime/constants.js +11 -19
- package/dist/server/flow-surfaces/runjs-authoring/runtime/types.d.ts +0 -12
- package/dist/server/flow-surfaces/runjs-authoring/scan/filter.js +12 -2
- package/dist/server/flow-surfaces/runjs-authoring/scan/index.d.ts +0 -14
- package/dist/server/flow-surfaces/runjs-authoring/scan/index.js +10 -8
- package/dist/server/flow-surfaces/runjs-authoring/scan/source-patterns.d.ts +0 -14
- package/dist/server/flow-surfaces/runjs-authoring/scan/source-patterns.js +18 -73
- package/dist/server/flow-surfaces/runjs-authoring/types.d.ts +1 -1
- package/dist/server/flow-surfaces/runjs-authoring/validators/index.js +9 -53
- package/dist/server/flow-surfaces/service.d.ts +42 -0
- package/dist/server/flow-surfaces/service.js +741 -100
- package/dist/server/flow-surfaces/types.d.ts +2 -1
- package/dist/server/variables/registry.js +3 -0
- package/dist/swagger/flow-surfaces.d.ts +181 -0
- package/dist/swagger/flow-surfaces.examples.d.ts +11 -0
- package/dist/swagger/flow-surfaces.examples.js +11 -0
- package/dist/swagger/flow-surfaces.js +161 -4
- package/dist/swagger/index.d.ts +181 -0
- package/package.json +2 -2
- package/dist/server/flow-surfaces/runjs-authoring/blocked-global-stop/index.js +0 -40
|
@@ -43,7 +43,7 @@ var import_filter = require("./filter");
|
|
|
43
43
|
var import_constants = require("../runtime/constants");
|
|
44
44
|
function scanJavaScriptSource(source, ast, context = {}, modelUse = "") {
|
|
45
45
|
const masked = (0, import_source.maskJavaScriptSource)(source);
|
|
46
|
-
const functionRanges = (
|
|
46
|
+
const functionRanges = collectScanFunctionRanges(masked, ast);
|
|
47
47
|
const blockRanges = (0, import_source.collectBraceRanges)(masked);
|
|
48
48
|
const staticBlockRanges = (0, import_source.collectStaticBlockRanges)(masked);
|
|
49
49
|
const sourceBindings = (0, import_bindings.collectSourceBindings)(masked, functionRanges, blockRanges, staticBlockRanges);
|
|
@@ -71,10 +71,7 @@ function scanJavaScriptSource(source, ast, context = {}, modelUse = "") {
|
|
|
71
71
|
const flowResourceAliases = (0, import_source_patterns.collectFlowResourceAliases)(masked, sourceBindings);
|
|
72
72
|
const directDomWrites = (0, import_source_patterns.collectDirectDomWrites)(source, masked, sourceBindings);
|
|
73
73
|
const directDomAliases = (0, import_source_patterns.collectDirectDomAliases)(masked, sourceBindings);
|
|
74
|
-
const windowDocumentNavigatorUses = (0, import_source_patterns.collectWindowDocumentNavigatorUses)(source, masked, sourceBindings);
|
|
75
|
-
const windowDocumentNavigatorAliases = (0, import_source_patterns.collectWindowDocumentNavigatorAliases)(masked, sourceBindings);
|
|
76
74
|
const ctxAliases = (0, import_source_patterns.collectCtxAliases)(masked, sourceBindings);
|
|
77
|
-
const forbiddenBareGlobals = (0, import_source_patterns.collectForbiddenBareGlobals)(masked, sourceBindings);
|
|
78
75
|
return {
|
|
79
76
|
source,
|
|
80
77
|
masked,
|
|
@@ -126,19 +123,24 @@ function scanJavaScriptSource(source, ast, context = {}, modelUse = "") {
|
|
|
126
123
|
),
|
|
127
124
|
directDomWrites,
|
|
128
125
|
directDomAliases,
|
|
129
|
-
windowDocumentNavigatorUses,
|
|
130
|
-
windowDocumentNavigatorAliases,
|
|
131
126
|
ctxAliases,
|
|
132
127
|
ctxLibMemberCaseMismatches: (0, import_source_patterns.collectCtxLibMemberCaseMismatches)(source, masked, sourceBindings),
|
|
133
128
|
invalidCtxApiMemberAccesses: (astInspection == null ? void 0 : astInspection.invalidCtxApiMemberAccesses) || [],
|
|
134
129
|
invalidCtxNonFunctionCalls: (astInspection == null ? void 0 : astInspection.invalidCtxNonFunctionCalls) || [],
|
|
135
130
|
invalidCtxLibMemberAccesses: (astInspection == null ? void 0 : astInspection.invalidCtxLibMemberAccesses) || [],
|
|
136
|
-
forbiddenBareGlobals,
|
|
137
131
|
ctxMemberAccesses: (0, import_source_patterns.collectCtxMemberAccesses)(masked, sourceBindings),
|
|
138
132
|
dynamicCtxAccesses: (0, import_static_values.findUnboundCtxMatches)(masked, /\bctx\s*(?:\?\.\s*)?\[/g, sourceBindings),
|
|
139
133
|
isTopLevelFunctionWrapper: (0, import_source_patterns.isTopLevelFunctionWrapper)(masked, functionRanges, topLevelReachableCtxRenderCalls)
|
|
140
134
|
};
|
|
141
135
|
}
|
|
136
|
+
function collectScanFunctionRanges(masked, ast) {
|
|
137
|
+
if (!ast) {
|
|
138
|
+
return (0, import_source.findFunctionRanges)(masked);
|
|
139
|
+
}
|
|
140
|
+
const ranges = (0, import_source.collectAstFunctionBodyRanges)(ast);
|
|
141
|
+
(0, import_source.collectArrowExpressionRanges)(masked, ranges);
|
|
142
|
+
return (0, import_source.mergeRanges)(ranges);
|
|
143
|
+
}
|
|
142
144
|
function collectAstUnknownBareGlobalsFromAst(ast, identifierBindings, modelUse) {
|
|
143
145
|
var _a;
|
|
144
146
|
const allowedGlobals = new Set(import_constants.RUNJS_ALLOWED_BARE_GLOBALS);
|
|
@@ -151,7 +153,7 @@ function collectAstUnknownBareGlobalsFromAst(ast, identifierBindings, modelUse)
|
|
|
151
153
|
if (!name) {
|
|
152
154
|
return;
|
|
153
155
|
}
|
|
154
|
-
if (allowedGlobals.has(name)
|
|
156
|
+
if (allowedGlobals.has(name)) {
|
|
155
157
|
return;
|
|
156
158
|
}
|
|
157
159
|
const index = typeof node.start === "number" ? node.start : 0;
|
|
@@ -7,10 +7,6 @@
|
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
9
|
import type { CtxLibMemberCaseMismatch, FlowResourceAlias, ReactComponentAlias, ResourceCallInReactHook, SourceBinding, SourceRange, StringLiteralBinding } from '../internal-types';
|
|
10
|
-
export declare function collectForbiddenBareGlobals(masked: string, bindings: SourceBinding[]): {
|
|
11
|
-
name: string;
|
|
12
|
-
index: number;
|
|
13
|
-
}[];
|
|
14
10
|
export declare function collectInvalidApiResourceCalls(source: string, masked: string, bindings: SourceBinding[]): {
|
|
15
11
|
index: number;
|
|
16
12
|
match: string;
|
|
@@ -64,16 +60,6 @@ export declare function collectDirectDomWrites(source: string, masked: string, b
|
|
|
64
60
|
index: number;
|
|
65
61
|
match: string;
|
|
66
62
|
}[];
|
|
67
|
-
export declare function collectWindowDocumentNavigatorUses(source: string, masked: string, bindings: SourceBinding[]): {
|
|
68
|
-
root: string;
|
|
69
|
-
member: string;
|
|
70
|
-
index: number;
|
|
71
|
-
}[];
|
|
72
|
-
export declare function collectWindowDocumentNavigatorAliases(masked: string, bindings: SourceBinding[]): {
|
|
73
|
-
alias: string;
|
|
74
|
-
root: string;
|
|
75
|
-
index: number;
|
|
76
|
-
}[];
|
|
77
63
|
export declare function collectDirectDomAliases(masked: string, bindings: SourceBinding[]): {
|
|
78
64
|
alias: string;
|
|
79
65
|
index: number;
|
|
@@ -33,7 +33,6 @@ __export(source_patterns_exports, {
|
|
|
33
33
|
collectDirectDomAliases: () => collectDirectDomAliases,
|
|
34
34
|
collectDirectDomWrites: () => collectDirectDomWrites,
|
|
35
35
|
collectFlowResourceAliases: () => collectFlowResourceAliases,
|
|
36
|
-
collectForbiddenBareGlobals: () => collectForbiddenBareGlobals,
|
|
37
36
|
collectInvalidApiResourceCalls: () => collectInvalidApiResourceCalls,
|
|
38
37
|
collectInvalidFlowResourceListCalls: () => collectInvalidFlowResourceListCalls,
|
|
39
38
|
collectInvalidResourceTypeCalls: () => collectInvalidResourceTypeCalls,
|
|
@@ -43,8 +42,6 @@ __export(source_patterns_exports, {
|
|
|
43
42
|
collectReactHookCalls: () => collectReactHookCalls,
|
|
44
43
|
collectResourceCallsInReactHooks: () => collectResourceCallsInReactHooks,
|
|
45
44
|
collectUnboundReactCreateElementCalls: () => collectUnboundReactCreateElementCalls,
|
|
46
|
-
collectWindowDocumentNavigatorAliases: () => collectWindowDocumentNavigatorAliases,
|
|
47
|
-
collectWindowDocumentNavigatorUses: () => collectWindowDocumentNavigatorUses,
|
|
48
45
|
getResourceLikeCtxRunjsEntrypoint: () => getResourceLikeCtxRunjsEntrypoint,
|
|
49
46
|
isResourceLikeCtxRequest: () => isResourceLikeCtxRequest,
|
|
50
47
|
isTopLevelFunctionWrapper: () => isTopLevelFunctionWrapper
|
|
@@ -53,18 +50,6 @@ module.exports = __toCommonJS(source_patterns_exports);
|
|
|
53
50
|
var import_constants = require("../runtime/constants");
|
|
54
51
|
var import_bindings = require("../ast/bindings");
|
|
55
52
|
var import_source = require("../ast/source");
|
|
56
|
-
function collectForbiddenBareGlobals(masked, bindings) {
|
|
57
|
-
const entries = [];
|
|
58
|
-
for (const name of import_constants.FORBIDDEN_BARE_GLOBALS) {
|
|
59
|
-
const pattern = new RegExp(`(?<![.$\\w])${(0, import_source.escapeRegExp)(name)}\\b`, "g");
|
|
60
|
-
for (const match of masked.matchAll(pattern)) {
|
|
61
|
-
if (!(0, import_bindings.isNameBoundAtIndex)(bindings, name, match.index || 0) && !isObjectPropertyKey(masked, match.index || 0, name)) {
|
|
62
|
-
entries.push({ name, index: match.index || 0 });
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return entries.sort((left, right) => left.index - right.index);
|
|
67
|
-
}
|
|
68
53
|
function collectInvalidApiResourceCalls(source, masked, bindings) {
|
|
69
54
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
70
55
|
const resourceMethods = /* @__PURE__ */ new Set(["list", "get", "create", "update", "destroy"]);
|
|
@@ -618,6 +603,16 @@ function collectDirectDomWrites(source, masked, bindings) {
|
|
|
618
603
|
}
|
|
619
604
|
entries.push({ index, match: match[0].replace(/\s*(?:\?\.)?\($/, "") });
|
|
620
605
|
}
|
|
606
|
+
for (const match of masked.matchAll(
|
|
607
|
+
/\b(document)\s*(?:\?\.|\.)\s*body\s*(?:\?\.|\.)\s*(innerHTML|insertAdjacentHTML)\b|(?<![.$\w])((window|globalThis)\s*(?:\?\.|\.)\s*document)\s*(?:\?\.|\.)\s*body\s*(?:\?\.|\.)\s*(innerHTML|insertAdjacentHTML)\b/g
|
|
608
|
+
)) {
|
|
609
|
+
const index = match.index || 0;
|
|
610
|
+
const root = match[1] || match[4];
|
|
611
|
+
if (root && (0, import_bindings.isNameBoundAtIndex)(bindings, root, index)) {
|
|
612
|
+
continue;
|
|
613
|
+
}
|
|
614
|
+
entries.push({ index, match: match[0] });
|
|
615
|
+
}
|
|
621
616
|
for (const match of commentMasked.matchAll(
|
|
622
617
|
/\b(ctx)\s*(?:\?\.|\.)\s*element\s*(?:\?\.\s*)?\[\s*(?:(['"])([A-Za-z_$][\w$]*)\2|([^\]]+))\s*\]/g
|
|
623
618
|
)) {
|
|
@@ -639,71 +634,24 @@ function collectDirectDomWrites(source, masked, bindings) {
|
|
|
639
634
|
}
|
|
640
635
|
}
|
|
641
636
|
for (const match of commentMasked.matchAll(
|
|
642
|
-
|
|
637
|
+
/(?<![.$\w])(window|globalThis)\s*(?:\?\.\s*)?\[\s*(['"])document\2\s*\]\s*(?:(?:\?\.|\.)\s*createElement|(?:\?\.\s*)?\[\s*(['"])createElement\3\s*\])/g
|
|
643
638
|
)) {
|
|
644
639
|
const index = match.index || 0;
|
|
645
|
-
|
|
646
|
-
const dynamicMember = Boolean(match[4]);
|
|
647
|
-
if (isCodeTokenAt(masked, index, match[1]) && !(0, import_bindings.isNameBoundAtIndex)(bindings, match[1], index) && (dynamicMember || isDirectDomMember(member))) {
|
|
640
|
+
if (isCodeTokenAt(masked, index, match[1]) && !(0, import_bindings.isNameBoundAtIndex)(bindings, match[1], index)) {
|
|
648
641
|
entries.push({ index, match: match[0] });
|
|
649
642
|
}
|
|
650
643
|
}
|
|
651
|
-
return entries;
|
|
652
|
-
}
|
|
653
|
-
function collectWindowDocumentNavigatorUses(source, masked, bindings) {
|
|
654
|
-
const commentMasked = (0, import_source.maskJavaScriptComments)(source);
|
|
655
|
-
const entries = [...masked.matchAll(/\b(window|document|navigator)\s*(?:\?\.|\.)\s*([A-Za-z_$][\w$]*)/g)].filter((match) => !(0, import_bindings.isNameBoundAtIndex)(bindings, match[1], match.index || 0)).map((match) => ({
|
|
656
|
-
root: match[1],
|
|
657
|
-
member: match[2],
|
|
658
|
-
index: match.index || 0
|
|
659
|
-
}));
|
|
660
644
|
for (const match of commentMasked.matchAll(
|
|
661
|
-
/\b(
|
|
645
|
+
/\b(element)\s*(?:\?\.\s*)?\[\s*(?:(['"])([A-Za-z_$][\w$]*)\2|([^\]]+))\s*\]/g
|
|
662
646
|
)) {
|
|
663
647
|
const index = match.index || 0;
|
|
664
|
-
const
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
entries.push({
|
|
669
|
-
root,
|
|
670
|
-
member: match[3] || "[dynamic]",
|
|
671
|
-
index
|
|
672
|
-
});
|
|
673
|
-
}
|
|
674
|
-
return entries.sort((left, right) => left.index - right.index);
|
|
675
|
-
}
|
|
676
|
-
function collectWindowDocumentNavigatorAliases(masked, bindings) {
|
|
677
|
-
const entries = [];
|
|
678
|
-
collectAliasMatches(
|
|
679
|
-
masked,
|
|
680
|
-
[
|
|
681
|
-
/\b(?:const|let|var)\s+([A-Za-z_$][\w$]*)\s*=\s*(window|document|navigator)\b/g,
|
|
682
|
-
/(?<![.$\w])([A-Za-z_$][\w$]*)\s*=\s*(window|document|navigator)\b/g
|
|
683
|
-
],
|
|
684
|
-
(match) => {
|
|
685
|
-
const alias = match[1];
|
|
686
|
-
const root = match[2];
|
|
687
|
-
const rootIndex = (match.index || 0) + match[0].lastIndexOf(root);
|
|
688
|
-
if (alias === root || (0, import_bindings.isNameBoundAtIndex)(bindings, root, rootIndex)) {
|
|
689
|
-
return;
|
|
690
|
-
}
|
|
691
|
-
entries.push({ alias, root, index: rootIndex });
|
|
692
|
-
}
|
|
693
|
-
);
|
|
694
|
-
for (const match of masked.matchAll(
|
|
695
|
-
/\b(?:const|let|var)\s*\{([^}]*)\}\s*=\s*(window|document|navigator)\b(?!\s*(?:\.|\?\.))/g
|
|
696
|
-
)) {
|
|
697
|
-
const root = match[2];
|
|
698
|
-
const rootIndex = (match.index || 0) + match[0].lastIndexOf(root);
|
|
699
|
-
if ((0, import_bindings.isNameBoundAtIndex)(bindings, root, rootIndex)) {
|
|
700
|
-
continue;
|
|
648
|
+
const member = match[3] || "";
|
|
649
|
+
const dynamicMember = Boolean(match[4]);
|
|
650
|
+
if (isCodeTokenAt(masked, index, match[1]) && !(0, import_bindings.isNameBoundAtIndex)(bindings, match[1], index) && (dynamicMember || isDirectDomMember(member))) {
|
|
651
|
+
entries.push({ index, match: match[0] });
|
|
701
652
|
}
|
|
702
|
-
collectObjectBindingAliases(match[1]).forEach((alias) => {
|
|
703
|
-
entries.push({ alias, root, index: rootIndex });
|
|
704
|
-
});
|
|
705
653
|
}
|
|
706
|
-
return
|
|
654
|
+
return entries;
|
|
707
655
|
}
|
|
708
656
|
function collectDirectDomAliases(masked, bindings) {
|
|
709
657
|
const entries = [];
|
|
@@ -871,7 +819,6 @@ function isResourceLikeRunjsEntrypointExpression(value) {
|
|
|
871
819
|
collectDirectDomAliases,
|
|
872
820
|
collectDirectDomWrites,
|
|
873
821
|
collectFlowResourceAliases,
|
|
874
|
-
collectForbiddenBareGlobals,
|
|
875
822
|
collectInvalidApiResourceCalls,
|
|
876
823
|
collectInvalidFlowResourceListCalls,
|
|
877
824
|
collectInvalidResourceTypeCalls,
|
|
@@ -881,8 +828,6 @@ function isResourceLikeRunjsEntrypointExpression(value) {
|
|
|
881
828
|
collectReactHookCalls,
|
|
882
829
|
collectResourceCallsInReactHooks,
|
|
883
830
|
collectUnboundReactCreateElementCalls,
|
|
884
|
-
collectWindowDocumentNavigatorAliases,
|
|
885
|
-
collectWindowDocumentNavigatorUses,
|
|
886
831
|
getResourceLikeCtxRunjsEntrypoint,
|
|
887
832
|
isResourceLikeCtxRequest,
|
|
888
833
|
isTopLevelFunctionWrapper
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
|
-
export type RunJsAuthoringRepairClass = 'syntax-stop' | 'nested-runjs-stop' | 'source-limit-stop' | 'switch-to-resource-api' | 'missing-top-level-return' | 'value-surface-forbids-render' | 'unknown-surface-stop' | 'unknown-model-stop' | 'replace-innerhtml-with-render' | 'render-top-level-function-wrapper' | 'render-unreachable-render-call' | '
|
|
9
|
+
export type RunJsAuthoringRepairClass = 'syntax-stop' | 'nested-runjs-stop' | 'source-limit-stop' | 'switch-to-resource-api' | 'missing-top-level-return' | 'value-surface-forbids-render' | 'unknown-surface-stop' | 'unknown-model-stop' | 'replace-innerhtml-with-render' | 'render-top-level-function-wrapper' | 'render-unreachable-render-call' | 'unknown-global-stop' | 'blocked-capability-reroute' | 'react-runtime-contract-stop' | 'resource-runtime-contract-stop' | 'ctx-libs-member-mismatch-stop' | 'ctx-root-mismatch-stop';
|
|
10
10
|
export type RunJsAuthoringSurfaceStyle = 'render' | 'value' | 'action';
|
|
11
11
|
export interface RunJsAuthoringRuleDefinition {
|
|
12
12
|
repairClass: RunJsAuthoringRepairClass;
|
|
@@ -310,58 +310,7 @@ function collectDirectDomErrors(path, source, scan, modelUse, surface, errors) {
|
|
|
310
310
|
);
|
|
311
311
|
});
|
|
312
312
|
}
|
|
313
|
-
function
|
|
314
|
-
scan.windowDocumentNavigatorAliases.forEach((entry) => {
|
|
315
|
-
errors.push(
|
|
316
|
-
(0, import_errors.buildRunJsAuthoringError)({
|
|
317
|
-
path,
|
|
318
|
-
repairClass: "blocked-global-stop",
|
|
319
|
-
message: `flowSurfaces authoring ${path} cannot alias forbidden global ${entry.root}`,
|
|
320
|
-
modelUse,
|
|
321
|
-
surface,
|
|
322
|
-
index: entry.index,
|
|
323
|
-
source,
|
|
324
|
-
details: {
|
|
325
|
-
global: entry.root,
|
|
326
|
-
alias: entry.alias
|
|
327
|
-
}
|
|
328
|
-
})
|
|
329
|
-
);
|
|
330
|
-
});
|
|
331
|
-
scan.windowDocumentNavigatorUses.forEach((entry) => {
|
|
332
|
-
errors.push(
|
|
333
|
-
(0, import_errors.buildRunJsAuthoringError)({
|
|
334
|
-
path,
|
|
335
|
-
repairClass: "blocked-global-stop",
|
|
336
|
-
ruleId: `runjs-${entry.root}-property-blocked`,
|
|
337
|
-
message: `flowSurfaces authoring ${path} cannot access ${entry.root}.${entry.member} in RunJS`,
|
|
338
|
-
modelUse,
|
|
339
|
-
surface,
|
|
340
|
-
index: entry.index,
|
|
341
|
-
source,
|
|
342
|
-
details: {
|
|
343
|
-
global: entry.root,
|
|
344
|
-
member: entry.member
|
|
345
|
-
}
|
|
346
|
-
})
|
|
347
|
-
);
|
|
348
|
-
});
|
|
349
|
-
scan.forbiddenBareGlobals.forEach((entry) => {
|
|
350
|
-
errors.push(
|
|
351
|
-
(0, import_errors.buildRunJsAuthoringError)({
|
|
352
|
-
path,
|
|
353
|
-
repairClass: "blocked-global-stop",
|
|
354
|
-
message: `flowSurfaces authoring ${path} cannot access forbidden global ${entry.name}`,
|
|
355
|
-
modelUse,
|
|
356
|
-
surface,
|
|
357
|
-
index: entry.index,
|
|
358
|
-
source,
|
|
359
|
-
details: {
|
|
360
|
-
global: entry.name
|
|
361
|
-
}
|
|
362
|
-
})
|
|
363
|
-
);
|
|
364
|
-
});
|
|
313
|
+
function collectUnknownGlobalErrors(path, source, scan, modelUse, surface, errors) {
|
|
365
314
|
scan.unknownBareGlobals.forEach((entry) => {
|
|
366
315
|
const suggestion = entry.suggestedCapability ? `; use ${entry.suggestedCapability} or assign it to a local variable first` : "; declare or import it before using it";
|
|
367
316
|
errors.push(
|
|
@@ -840,7 +789,14 @@ const RUNJS_INSPECTION_VALIDATORS = [
|
|
|
840
789
|
),
|
|
841
790
|
createLegacyValidator("dom-global", (runtime, errors) => {
|
|
842
791
|
collectDirectDomErrors(runtime.input.path, runtime.source, runtime.scan, runtime.modelUse, runtime.surface, errors);
|
|
843
|
-
|
|
792
|
+
collectUnknownGlobalErrors(
|
|
793
|
+
runtime.input.path,
|
|
794
|
+
runtime.source,
|
|
795
|
+
runtime.scan,
|
|
796
|
+
runtime.modelUse,
|
|
797
|
+
runtime.surface,
|
|
798
|
+
errors
|
|
799
|
+
);
|
|
844
800
|
}),
|
|
845
801
|
createLegacyValidator(
|
|
846
802
|
"react-runtime",
|
|
@@ -82,6 +82,14 @@ export declare class FlowSurfacesService {
|
|
|
82
82
|
private assertMenuRouteUpdatable;
|
|
83
83
|
private assertMenuParentNotSelfOrDescendant;
|
|
84
84
|
private buildMenuResult;
|
|
85
|
+
private hasDesktopRouteUiLayoutsRelation;
|
|
86
|
+
private normalizeDesktopRouteRelationId;
|
|
87
|
+
private readDesktopRouteUiLayoutUids;
|
|
88
|
+
private resolveDefaultDesktopRouteUiLayoutUids;
|
|
89
|
+
private resolveInheritedDesktopRouteUiLayoutUids;
|
|
90
|
+
private setDesktopRouteUiLayouts;
|
|
91
|
+
private attachDesktopRouteUiLayoutsToRouteAndChildren;
|
|
92
|
+
private ensureDesktopRouteUiLayouts;
|
|
85
93
|
private isValidMenuIconName;
|
|
86
94
|
private assertVisibleNavigationIcon;
|
|
87
95
|
private assertVisibleNavigationRouteIconUpdate;
|
|
@@ -142,6 +150,7 @@ export declare class FlowSurfacesService {
|
|
|
142
150
|
private getCollectionFilterTargetKey;
|
|
143
151
|
private normalizeFlowContextTemplateValue;
|
|
144
152
|
private isSameConfiguredFlowContextValue;
|
|
153
|
+
private isPopupCurrentRecordFilterByTkMatch;
|
|
145
154
|
private isPopupAssociatedRecordsSourceIdMatch;
|
|
146
155
|
private classifyPopupRawResourceInit;
|
|
147
156
|
private resolvePopupAssociationField;
|
|
@@ -160,6 +169,7 @@ export declare class FlowSurfacesService {
|
|
|
160
169
|
private persistReactionSlot;
|
|
161
170
|
private buildLinkageWriteResult;
|
|
162
171
|
private getLiveLinkageCapability;
|
|
172
|
+
private getLiveFieldValueCapability;
|
|
163
173
|
getReactionMeta(values: FlowSurfaceGetReactionMetaValues, options?: {
|
|
164
174
|
transaction?: any;
|
|
165
175
|
}): Promise<FlowSurfaceGetReactionMetaResult>;
|
|
@@ -182,6 +192,17 @@ export declare class FlowSurfacesService {
|
|
|
182
192
|
private buildSurfaceReadPayload;
|
|
183
193
|
private buildSurfaceContextFingerprint;
|
|
184
194
|
get(input: Record<string, any>, options?: FlowSurfaceReadOptions): Promise<Record<string, any>>;
|
|
195
|
+
exportBlueprint(input: Record<string, unknown>, options?: FlowSurfaceReadOptions): Promise<{
|
|
196
|
+
document: FlowSurfaceApplyBlueprintDocument;
|
|
197
|
+
source: {
|
|
198
|
+
target: {
|
|
199
|
+
pageSchemaUid: string;
|
|
200
|
+
};
|
|
201
|
+
pageTitle?: string;
|
|
202
|
+
};
|
|
203
|
+
warnings: string[];
|
|
204
|
+
unsupported: import("./blueprint/export-document").FlowSurfaceExportBlueprintUnsupportedItem[];
|
|
205
|
+
}>;
|
|
185
206
|
private getDeclaredKeyPersistenceDeps;
|
|
186
207
|
private patchDeclaredKeyModel;
|
|
187
208
|
private persistCreatedKeysForAction;
|
|
@@ -288,6 +309,7 @@ export declare class FlowSurfacesService {
|
|
|
288
309
|
private createFlowTemplateReferenceBlockModel;
|
|
289
310
|
private buildPopupTemplateReferenceOpenView;
|
|
290
311
|
private shouldHydrateDetachedPopupTemplateBlockResourceContext;
|
|
312
|
+
private resolveDetachedPopupTemplateBlockCurrentRecordFilterByTk;
|
|
291
313
|
private collectDetachedPopupTemplateBlockResourceContextPatches;
|
|
292
314
|
private hydrateDetachedPopupTemplateBlockResourceContext;
|
|
293
315
|
private hydrateDetachedPopupTemplateSourceContext;
|
|
@@ -736,6 +758,9 @@ export declare class FlowSurfacesService {
|
|
|
736
758
|
private syncFilterActionSettingsForUpdateSettings;
|
|
737
759
|
private resolveFilterActionDefaultFilterRequiredFieldCount;
|
|
738
760
|
private syncMirroredStepParamsForUpdateSettings;
|
|
761
|
+
private syncActionButtonSettingsForUpdateSettings;
|
|
762
|
+
private supportsActionButtonSettingsSync;
|
|
763
|
+
private pickRequestedActionButtonSettings;
|
|
739
764
|
private syncCreatedFieldWrapperTitleFieldStepParams;
|
|
740
765
|
private syncUpdateActionAssignedValuesForUpdateSettings;
|
|
741
766
|
private syncActionTriggerWorkflowsForUpdateSettings;
|
|
@@ -916,6 +941,12 @@ export declare class FlowSurfacesService {
|
|
|
916
941
|
private normalizeRemoveNodeTarget;
|
|
917
942
|
private assertRemoveNodeResolvedTarget;
|
|
918
943
|
private normalizeGetTarget;
|
|
944
|
+
private normalizeExportBlueprintRequest;
|
|
945
|
+
private normalizeExportBlueprintUnsupportedPolicy;
|
|
946
|
+
private normalizeExportBlueprintLocatorValue;
|
|
947
|
+
private readRouteString;
|
|
948
|
+
private resolveExportBlueprintPageSchemaUid;
|
|
949
|
+
private assertExportBlueprintRootTarget;
|
|
919
950
|
private normalizeContextPath;
|
|
920
951
|
private normalizeContextMaxDepth;
|
|
921
952
|
private buildReadTargetSummary;
|
|
@@ -1038,14 +1069,19 @@ export declare class FlowSurfacesService {
|
|
|
1038
1069
|
private stableSerializeAIEmployeeValue;
|
|
1039
1070
|
private buildAIEmployeeActionDedupIdentity;
|
|
1040
1071
|
private normalizeAIEmployeeWorkContextForDedupIdentity;
|
|
1072
|
+
private normalizeAIEmployeeActionWorkContextForDedupIdentity;
|
|
1073
|
+
private normalizeAIEmployeeDefaultActionWorkContextForSelfUid;
|
|
1074
|
+
private normalizeAIEmployeeTaskWorkContextForDedupIdentity;
|
|
1041
1075
|
private normalizeAIEmployeeTasksForDedupIdentity;
|
|
1042
1076
|
private assertNoDuplicateAIEmployeeAction;
|
|
1077
|
+
private assertNoDuplicateAIEmployeeActionForUpdateSettings;
|
|
1043
1078
|
private hasAIEmployeePublicSettings;
|
|
1044
1079
|
private assertOnlyAIEmployeePublicSettings;
|
|
1045
1080
|
private aiEmployeeNestedRepairHint;
|
|
1046
1081
|
private assertOnlyAIEmployeeNestedPublicSettings;
|
|
1047
1082
|
private assertNoAIEmployeeInternalPropSettings;
|
|
1048
1083
|
private readAIEmployeePersistedTasks;
|
|
1084
|
+
private normalizeAIEmployeeLegacyInheritedTaskWorkContext;
|
|
1049
1085
|
private buildAIEmployeeTaskStepParams;
|
|
1050
1086
|
private mergeAIEmployeeActionSettingsPayload;
|
|
1051
1087
|
private syncAIEmployeeTaskStepParamsForUpdateSettings;
|
|
@@ -1058,6 +1094,7 @@ export declare class FlowSurfacesService {
|
|
|
1058
1094
|
private normalizeAIEmployeeUsername;
|
|
1059
1095
|
private assertAIEmployeeWorkContextType;
|
|
1060
1096
|
private normalizeAIEmployeeWorkContext;
|
|
1097
|
+
private normalizeAIEmployeeEffectiveActionWorkContext;
|
|
1061
1098
|
private normalizeAIEmployeeTaskModel;
|
|
1062
1099
|
private normalizeAIEmployeeSkillSettings;
|
|
1063
1100
|
private collectAIEmployeePromptVariables;
|
|
@@ -1080,14 +1117,19 @@ export declare class FlowSurfacesService {
|
|
|
1080
1117
|
private normalizeAIEmployeeTaskMessage;
|
|
1081
1118
|
private normalizeAIEmployeeTaskPatch;
|
|
1082
1119
|
private normalizeAIEmployeeTasks;
|
|
1120
|
+
private withAIEmployeeTaskDefaultWorkContext;
|
|
1121
|
+
private shouldMaterializeAIEmployeeTaskDefaultWorkContext;
|
|
1122
|
+
private rebaseAIEmployeeInheritedTaskWorkContext;
|
|
1083
1123
|
private normalizeAIEmployeeActionSettingsReferences;
|
|
1084
1124
|
private normalizeAIEmployeeActionPublicSettings;
|
|
1085
1125
|
private resolveAIEmployeeActionSelfUid;
|
|
1126
|
+
private resolveAIEmployeeActionSelfUidFromParentNode;
|
|
1086
1127
|
private configureActionNode;
|
|
1087
1128
|
private normalizeActionPanelActionChanges;
|
|
1088
1129
|
private buildFieldCatalog;
|
|
1089
1130
|
private getFieldMenuCatalogMode;
|
|
1090
1131
|
private resolveRegisteredFieldBinding;
|
|
1132
|
+
private isCollectionTitleField;
|
|
1091
1133
|
private resolveAssociationLeafDisplaySemantics;
|
|
1092
1134
|
private buildFieldMenuDirectCandidates;
|
|
1093
1135
|
private collectFieldMenuAssociationLeafCandidates;
|