weaver-e10-builder 1.5.13 → 1.5.15
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/commands/actionflow.d.ts.map +1 -1
- package/dist/commands/actionflow.js +1 -0
- package/dist/commands/actionflow.js.map +1 -1
- package/dist/commands/designer-setters.d.ts.map +1 -1
- package/dist/commands/designer-setters.js +148 -47
- package/dist/commands/designer-setters.js.map +1 -1
- package/dist/commands/form-add-detail-table.d.ts.map +1 -1
- package/dist/commands/form-add-detail-table.js +53 -7
- package/dist/commands/form-add-detail-table.js.map +1 -1
- package/dist/commands/form-browser-definition.d.ts +14 -0
- package/dist/commands/form-browser-definition.d.ts.map +1 -0
- package/dist/commands/form-browser-definition.js +493 -0
- package/dist/commands/form-browser-definition.js.map +1 -0
- package/dist/commands/form-code.d.ts +5 -0
- package/dist/commands/form-code.d.ts.map +1 -0
- package/dist/commands/form-code.js +276 -0
- package/dist/commands/form-code.js.map +1 -0
- package/dist/commands/form-engine-linkage.d.ts +3 -0
- package/dist/commands/form-engine-linkage.d.ts.map +1 -0
- package/dist/commands/form-engine-linkage.js +199 -0
- package/dist/commands/form-engine-linkage.js.map +1 -0
- package/dist/commands/form-formula.d.ts.map +1 -1
- package/dist/commands/form-formula.js +7 -19
- package/dist/commands/form-formula.js.map +1 -1
- package/dist/commands/form-layout-template-advanced.d.ts +3 -0
- package/dist/commands/form-layout-template-advanced.d.ts.map +1 -0
- package/dist/commands/form-layout-template-advanced.js +115 -0
- package/dist/commands/form-layout-template-advanced.js.map +1 -0
- package/dist/commands/form-layout-template-easy.d.ts +3 -0
- package/dist/commands/form-layout-template-easy.d.ts.map +1 -0
- package/dist/commands/form-layout-template-easy.js +59 -0
- package/dist/commands/form-layout-template-easy.js.map +1 -0
- package/dist/commands/form-layout.d.ts.map +1 -1
- package/dist/commands/form-layout.js +77 -0
- package/dist/commands/form-layout.js.map +1 -1
- package/dist/commands/form-list-filter.js +1 -1
- package/dist/commands/form-list-filter.js.map +1 -1
- package/dist/commands/form-list-utils.d.ts +5 -0
- package/dist/commands/form-list-utils.d.ts.map +1 -1
- package/dist/commands/form-list-utils.js +23 -3
- package/dist/commands/form-list-utils.js.map +1 -1
- package/dist/commands/form-permission.d.ts.map +1 -1
- package/dist/commands/form-permission.js +55 -19
- package/dist/commands/form-permission.js.map +1 -1
- package/dist/commands/form-physical-table.d.ts.map +1 -1
- package/dist/commands/form-physical-table.js +8 -2
- package/dist/commands/form-physical-table.js.map +1 -1
- package/dist/commands/form.d.ts.map +1 -1
- package/dist/commands/form.js +143 -5
- package/dist/commands/form.js.map +1 -1
- package/dist/commands/menu.d.ts +68 -2
- package/dist/commands/menu.d.ts.map +1 -1
- package/dist/commands/menu.js +186 -41
- package/dist/commands/menu.js.map +1 -1
- package/dist/commands/page.d.ts.map +1 -1
- package/dist/commands/page.js +29 -6
- package/dist/commands/page.js.map +1 -1
- package/dist/commands/special.d.ts.map +1 -1
- package/dist/commands/special.js +3 -2
- package/dist/commands/special.js.map +1 -1
- package/dist/commands/wf-form.d.ts.map +1 -1
- package/dist/commands/wf-form.js +76 -31
- package/dist/commands/wf-form.js.map +1 -1
- package/dist/commands/workflow-auth-resp.js +2 -2
- package/dist/commands/workflow-auth-resp.js.map +1 -1
- package/dist/commands/workflow-base-command.d.ts +4 -0
- package/dist/commands/workflow-base-command.d.ts.map +1 -0
- package/dist/commands/workflow-base-command.js +6 -0
- package/dist/commands/workflow-base-command.js.map +1 -0
- package/dist/commands/workflow-base-settings.d.ts +3 -0
- package/dist/commands/workflow-base-settings.d.ts.map +1 -0
- package/dist/commands/workflow-base-settings.js +76 -0
- package/dist/commands/workflow-base-settings.js.map +1 -0
- package/dist/commands/workflow-condition.d.ts.map +1 -1
- package/dist/commands/workflow-condition.js +59 -450
- package/dist/commands/workflow-condition.js.map +1 -1
- package/dist/commands/workflow-export.d.ts +9 -0
- package/dist/commands/workflow-export.d.ts.map +1 -0
- package/dist/commands/workflow-export.js +121 -0
- package/dist/commands/workflow-export.js.map +1 -0
- package/dist/commands/workflow-function-settings.d.ts +3 -0
- package/dist/commands/workflow-function-settings.d.ts.map +1 -0
- package/dist/commands/workflow-function-settings.js +47 -0
- package/dist/commands/workflow-function-settings.js.map +1 -0
- package/dist/commands/workflow-node.d.ts.map +1 -1
- package/dist/commands/workflow-node.js +28 -53
- package/dist/commands/workflow-node.js.map +1 -1
- package/dist/commands/workflow-operator-batch.d.ts +3 -0
- package/dist/commands/workflow-operator-batch.d.ts.map +1 -0
- package/dist/commands/workflow-operator-batch.js +35 -0
- package/dist/commands/workflow-operator-batch.js.map +1 -0
- package/dist/commands/workflow-setting.d.ts.map +1 -1
- package/dist/commands/workflow-setting.js +137 -406
- package/dist/commands/workflow-setting.js.map +1 -1
- package/dist/commands/workflow-subprocess.d.ts.map +1 -1
- package/dist/commands/workflow-subprocess.js +21 -33
- package/dist/commands/workflow-subprocess.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +18 -33
- package/dist/commands/workflow.js.map +1 -1
- package/dist/index.js +18 -1
- package/dist/index.js.map +1 -1
- package/dist/services/actionflow/browser_source.d.ts +9 -0
- package/dist/services/actionflow/browser_source.d.ts.map +1 -0
- package/dist/services/actionflow/browser_source.js +12 -0
- package/dist/services/actionflow/browser_source.js.map +1 -0
- package/dist/services/actionflow/components/date_trigger.js +1 -1
- package/dist/services/actionflow/components/date_trigger.js.map +1 -1
- package/dist/services/actionflow/components/document_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/document_actions.js +178 -25
- package/dist/services/actionflow/components/document_actions.js.map +1 -1
- package/dist/services/actionflow/components/enquiry_form.js +1 -1
- package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
- package/dist/services/actionflow/components/logic_flow_set.d.ts.map +1 -1
- package/dist/services/actionflow/components/logic_flow_set.js +80 -8
- package/dist/services/actionflow/components/logic_flow_set.js.map +1 -1
- package/dist/services/actionflow/components/meeting_create.d.ts.map +1 -1
- package/dist/services/actionflow/components/meeting_create.js +1 -0
- package/dist/services/actionflow/components/meeting_create.js.map +1 -1
- package/dist/services/actionflow/components/schedule_create.d.ts.map +1 -1
- package/dist/services/actionflow/components/schedule_create.js +2 -0
- package/dist/services/actionflow/components/schedule_create.js.map +1 -1
- package/dist/services/actionflow/components/time_batch_trigger.js +1 -1
- package/dist/services/actionflow/components/time_batch_trigger.js.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.js +6 -2
- package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
- package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
- package/dist/services/actionflow/context_preflight.js +103 -6
- package/dist/services/actionflow/context_preflight.js.map +1 -1
- package/dist/services/actionflow/form_source.d.ts +2 -0
- package/dist/services/actionflow/form_source.d.ts.map +1 -1
- package/dist/services/actionflow/form_source.js +8 -0
- package/dist/services/actionflow/form_source.js.map +1 -1
- package/dist/services/actionflow/formula_service.d.ts.map +1 -1
- package/dist/services/actionflow/formula_service.js +35 -19
- package/dist/services/actionflow/formula_service.js.map +1 -1
- package/dist/services/actionflow/logicflow_source.d.ts +5 -0
- package/dist/services/actionflow/logicflow_source.d.ts.map +1 -0
- package/dist/services/actionflow/logicflow_source.js +15 -0
- package/dist/services/actionflow/logicflow_source.js.map +1 -0
- package/dist/services/actionflow/preflight_service.d.ts +15 -0
- package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
- package/dist/services/actionflow/preflight_service.js +558 -26
- package/dist/services/actionflow/preflight_service.js.map +1 -1
- package/dist/services/actionflow/runtime_metadata.d.ts +8 -0
- package/dist/services/actionflow/runtime_metadata.d.ts.map +1 -1
- package/dist/services/actionflow/runtime_metadata.js +25 -0
- package/dist/services/actionflow/runtime_metadata.js.map +1 -1
- package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/workflow_compiler.js +50 -10
- package/dist/services/actionflow/workflow_compiler.js.map +1 -1
- package/dist/services/actionflow/workflow_source.d.ts +2 -0
- package/dist/services/actionflow/workflow_source.d.ts.map +1 -1
- package/dist/services/actionflow/workflow_source.js +7 -0
- package/dist/services/actionflow/workflow_source.js.map +1 -1
- package/dist/services/auth-resp-condition.d.ts +7 -3
- package/dist/services/auth-resp-condition.d.ts.map +1 -1
- package/dist/services/auth-resp-condition.js +58 -63
- package/dist/services/auth-resp-condition.js.map +1 -1
- package/dist/services/browser.d.ts +5 -0
- package/dist/services/browser.d.ts.map +1 -1
- package/dist/services/browser.js +16 -4
- package/dist/services/browser.js.map +1 -1
- package/dist/services/condition-rules.d.ts +2 -30
- package/dist/services/condition-rules.d.ts.map +1 -1
- package/dist/services/condition-rules.js +3 -219
- package/dist/services/condition-rules.js.map +1 -1
- package/dist/services/designer-dataset.d.ts +45 -0
- package/dist/services/designer-dataset.d.ts.map +1 -0
- package/dist/services/designer-dataset.js +156 -0
- package/dist/services/designer-dataset.js.map +1 -0
- package/dist/services/form-association.d.ts +7 -0
- package/dist/services/form-association.d.ts.map +1 -1
- package/dist/services/form-association.js +22 -1
- package/dist/services/form-association.js.map +1 -1
- package/dist/services/form-code.d.ts +53 -0
- package/dist/services/form-code.d.ts.map +1 -0
- package/dist/services/form-code.js +370 -0
- package/dist/services/form-code.js.map +1 -0
- package/dist/services/form-create.d.ts +20 -0
- package/dist/services/form-create.d.ts.map +1 -1
- package/dist/services/form-create.js +73 -1
- package/dist/services/form-create.js.map +1 -1
- package/dist/services/form-field-build.d.ts +1 -1
- package/dist/services/form-field-build.d.ts.map +1 -1
- package/dist/services/form-field-build.js +20 -1
- package/dist/services/form-field-build.js.map +1 -1
- package/dist/services/form-field-drop.d.ts +2 -0
- package/dist/services/form-field-drop.d.ts.map +1 -1
- package/dist/services/form-field-drop.js +2 -0
- package/dist/services/form-field-drop.js.map +1 -1
- package/dist/services/form-layout-detail-insert.d.ts +58 -0
- package/dist/services/form-layout-detail-insert.d.ts.map +1 -0
- package/dist/services/form-layout-detail-insert.js +293 -0
- package/dist/services/form-layout-detail-insert.js.map +1 -0
- package/dist/services/form-layout-insert.d.ts.map +1 -1
- package/dist/services/form-layout-insert.js +34 -2
- package/dist/services/form-layout-insert.js.map +1 -1
- package/dist/services/form-layout-source/compile.d.ts.map +1 -1
- package/dist/services/form-layout-source/compile.js +11 -4
- package/dist/services/form-layout-source/compile.js.map +1 -1
- package/dist/services/form-layout-template-advanced.d.ts +330 -0
- package/dist/services/form-layout-template-advanced.d.ts.map +1 -0
- package/dist/services/form-layout-template-advanced.js +1437 -0
- package/dist/services/form-layout-template-advanced.js.map +1 -0
- package/dist/services/form-layout-template-easy.d.ts +34 -0
- package/dist/services/form-layout-template-easy.d.ts.map +1 -0
- package/dist/services/form-layout-template-easy.js +159 -0
- package/dist/services/form-layout-template-easy.js.map +1 -0
- package/dist/services/form-layout-template-flow.d.ts +23 -0
- package/dist/services/form-layout-template-flow.d.ts.map +1 -0
- package/dist/services/form-layout-template-flow.js +99 -0
- package/dist/services/form-layout-template-flow.js.map +1 -0
- package/dist/services/form-permission-archive.d.ts +23 -1
- package/dist/services/form-permission-archive.d.ts.map +1 -1
- package/dist/services/form-permission-archive.js +54 -2
- package/dist/services/form-permission-archive.js.map +1 -1
- package/dist/services/form-physical-table.d.ts +10 -0
- package/dist/services/form-physical-table.d.ts.map +1 -1
- package/dist/services/form-physical-table.js +20 -0
- package/dist/services/form-physical-table.js.map +1 -1
- package/dist/services/form-view-linkage-functions.d.ts +19 -0
- package/dist/services/form-view-linkage-functions.d.ts.map +1 -0
- package/dist/services/form-view-linkage-functions.js +90 -0
- package/dist/services/form-view-linkage-functions.js.map +1 -0
- package/dist/services/matrix-condition.d.ts +32 -1
- package/dist/services/matrix-condition.d.ts.map +1 -1
- package/dist/services/matrix-condition.js +169 -6
- package/dist/services/matrix-condition.js.map +1 -1
- package/dist/services/menu-catalog.d.ts +24 -1
- package/dist/services/menu-catalog.d.ts.map +1 -1
- package/dist/services/menu-catalog.js +49 -2
- package/dist/services/menu-catalog.js.map +1 -1
- package/dist/services/workflow-base-settings.d.ts +117 -0
- package/dist/services/workflow-base-settings.d.ts.map +1 -0
- package/dist/services/workflow-base-settings.js +504 -0
- package/dist/services/workflow-base-settings.js.map +1 -0
- package/dist/services/workflow-condition-core.d.ts +48 -0
- package/dist/services/workflow-condition-core.d.ts.map +1 -0
- package/dist/services/workflow-condition-core.js +316 -0
- package/dist/services/workflow-condition-core.js.map +1 -0
- package/dist/services/workflow-context.d.ts +10 -0
- package/dist/services/workflow-context.d.ts.map +1 -0
- package/dist/services/workflow-context.js +15 -0
- package/dist/services/workflow-context.js.map +1 -0
- package/dist/services/workflow-export.d.ts +80 -0
- package/dist/services/workflow-export.d.ts.map +1 -0
- package/dist/services/workflow-export.js +150 -0
- package/dist/services/workflow-export.js.map +1 -0
- package/dist/services/workflow-field-permission-route.d.ts +75 -0
- package/dist/services/workflow-field-permission-route.d.ts.map +1 -0
- package/dist/services/workflow-field-permission-route.js +52 -0
- package/dist/services/workflow-field-permission-route.js.map +1 -0
- package/dist/services/workflow-field-permission.d.ts +18 -0
- package/dist/services/workflow-field-permission.d.ts.map +1 -0
- package/dist/services/workflow-field-permission.js +40 -0
- package/dist/services/workflow-field-permission.js.map +1 -0
- package/dist/services/workflow-function-settings.d.ts +31 -0
- package/dist/services/workflow-function-settings.d.ts.map +1 -0
- package/dist/services/workflow-function-settings.js +191 -0
- package/dist/services/workflow-function-settings.js.map +1 -0
- package/dist/services/workflow-node-layout.d.ts +11 -10
- package/dist/services/workflow-node-layout.d.ts.map +1 -1
- package/dist/services/workflow-node-layout.js +24 -62
- package/dist/services/workflow-node-layout.js.map +1 -1
- package/dist/services/workflow-operator-batch-condition.d.ts +23 -0
- package/dist/services/workflow-operator-batch-condition.d.ts.map +1 -0
- package/dist/services/workflow-operator-batch-condition.js +56 -0
- package/dist/services/workflow-operator-batch-condition.js.map +1 -0
- package/dist/services/workflow-sign-file-settings.d.ts +16 -0
- package/dist/services/workflow-sign-file-settings.d.ts.map +1 -0
- package/dist/services/workflow-sign-file-settings.js +80 -0
- package/dist/services/workflow-sign-file-settings.js.map +1 -0
- package/dist/services/workflow-submit-confirm.d.ts +14 -0
- package/dist/services/workflow-submit-confirm.d.ts.map +1 -0
- package/dist/services/workflow-submit-confirm.js +29 -0
- package/dist/services/workflow-submit-confirm.js.map +1 -0
- package/dist/services/workflow-tab-config.d.ts +3 -3
- package/dist/services/workflow-tab-config.d.ts.map +1 -1
- package/dist/services/workflow-tab-config.js +14 -12
- package/dist/services/workflow-tab-config.js.map +1 -1
- package/dist/services/workflow-tabs-editor.d.ts +28 -0
- package/dist/services/workflow-tabs-editor.d.ts.map +1 -0
- package/dist/services/workflow-tabs-editor.js +130 -0
- package/dist/services/workflow-tabs-editor.js.map +1 -0
- package/package.json +1 -1
- package/skill-docs/SKILL.md +155 -154
- package/skill-docs/_catalog.md +106 -97
- package/skill-docs/actionflows/references/components/document/GetDocumentInfo.md +17 -17
- package/skill-docs/actionflows/references/components/logic/LogicFlowSet.md +23 -17
- package/skill-docs/assets/form-template/style-templates-advanced-base-example.json +1420 -0
- package/skill-docs/assets/form-template/style-templates-advanced-base.css +33 -0
- package/skill-docs/assets/form-template/style-templates-advanced-blue-crystal-example.json +1094 -0
- package/skill-docs/assets/form-template/style-templates-advanced-document-example.json +1251 -0
- package/skill-docs/assets/form-template/style-templates-advanced-grid-example.json +39 -0
- package/skill-docs/assets/form-template/style-templates-advanced-page-example.json +38 -0
- package/skill-docs/assets/form-template/style-templates-advanced-placements-example.json +30 -0
- package/skill-docs/assets/form-template/style-templates-advanced-standard-example.json +53 -0
- package/skill-docs/assets/form-template/style-templates-advanced-structure-example.json +25 -0
- package/skill-docs/assets/form-template/style-templates-advanced-table-example.json +1420 -0
- package/skill-docs/references/code-block/guide-code-block.md +141 -0
- package/skill-docs/references/code-block/guide-layout-css.md +107 -0
- package/skill-docs/references/code-block/ref-controls.md +60 -0
- package/skill-docs/references/code-block/ref-coverage.md +32 -0
- package/skill-docs/references/code-block/ref-details.md +57 -0
- package/skill-docs/references/code-block/ref-events-validation.md +42 -0
- package/skill-docs/references/code-block/ref-foundations-fields.md +56 -0
- package/skill-docs/references/code-block/ref-recipes.md +164 -0
- package/skill-docs/references/code-block/ref-troubleshooting.md +49 -0
- package/skill-docs/references/code-block/ref-ui-global.md +47 -0
- package/skill-docs/references/common/guide-plan-template.md +168 -167
- package/skill-docs/references/common/map.md +2 -1
- package/skill-docs/references/common/ref-cli-commands.md +67 -22
- package/skill-docs/references/ebuilder-designer/guide-designer-factory.md +8 -4
- package/skill-docs/references/form/form-template/style-templates-advanced-css-guide.md +167 -0
- package/skill-docs/references/form/form-template/style-templates-advanced.md +315 -0
- package/skill-docs/references/form/form-template/style-templates-easy.md +55 -0
- package/skill-docs/references/form/form-template/style-templates-flow.md +27 -0
- package/skill-docs/references/form/form-template/style-templates.md +29 -0
- package/skill-docs/references/form/guide-browser-definition.md +148 -0
- package/skill-docs/references/form/guide-create-form.md +258 -250
- package/skill-docs/references/form/guide-form-archive-permission.md +29 -6
- package/skill-docs/references/form/guide-form-formula-functions.md +354 -354
- package/skill-docs/references/form/guide-form-layout-incremental.md +28 -0
- package/skill-docs/references/form/guide-form-layout-planning.md +11 -0
- package/skill-docs/references/form/guide-form-layout-source.md +4 -0
- package/skill-docs/references/form/guide-form-linkage.md +295 -259
- package/skill-docs/references/form/guide-form-physical-table.md +2 -0
- package/skill-docs/references/form/guide-form-view.md +3 -0
- package/skill-docs/references/form/ref-form-fields.md +301 -293
- package/skill-docs/references/form/ref-list-filter-date-params.md +83 -0
- package/skill-docs/references/menu/system-menus.md +12 -0
- package/skill-docs/references/workflow/condition-core-contract.md +63 -0
- package/skill-docs/references/workflow/guide-base-auth-share-remind.md +126 -0
- package/skill-docs/references/workflow/guide-function-settings.md +55 -0
- package/skill-docs/references/workflow/guide-workflow-condition.md +476 -447
- package/skill-docs/references/workflow/guide-workflow-node-layout.md +6 -0
- package/skill-docs/references/workflow/guide-workflow.md +630 -527
- package/skill-docs/references/form/style-templates.md +0 -97
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
import { SYSTEM_FIELDS, OP_MAP, FAMILY_OPS } from './condition-rules.js';
|
|
2
|
+
const has = (o, k) => Object.prototype.hasOwnProperty.call(o, k);
|
|
3
|
+
const emptyOps = new Set(['为空', '不为空', '是', '否']);
|
|
4
|
+
function layout(f) {
|
|
5
|
+
try {
|
|
6
|
+
return typeof f.layoutDetail === 'string' ? JSON.parse(f.layoutDetail) : f.layoutDetail || {};
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
throw Error(`字段 ${f.name || f.id} 的 layoutDetail 无效`);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export function conditionFamily(f) {
|
|
13
|
+
const t = String(f.fieldType || f.componentKey || layout(f).componentKey || '');
|
|
14
|
+
if (['DateComponent', 'DateTimeComponent', 'DateTimeSecondComponent', 'DatePicker', 'DateTimePicker', 'Date'].includes(t))
|
|
15
|
+
return 'Date';
|
|
16
|
+
if (['NumberComponent', 'Money', 'Float', 'Integer', 'Number'].includes(t))
|
|
17
|
+
return 'Number';
|
|
18
|
+
if (['Switch', 'Bool'].includes(t))
|
|
19
|
+
return 'Bool';
|
|
20
|
+
if (['Employee', 'Department', 'Subcompany', 'SubCompany', 'Role', 'Browser', 'BrowserButton', 'RelateBrowser', 'Select', 'SelectMultiple', 'RadioBox', 'CheckBox', 'Checkbox', 'PositionComponent', 'Location', 'Ebuilder', 'Eb', 'Flow', 'Workflow'].includes(t))
|
|
21
|
+
return 'Browser';
|
|
22
|
+
if (['Text', 'TextArea', 'TextComponent', 'String', 'RichText', 'Email', 'Phone', 'Mobile', 'IDCard', 'SerialNumber'].includes(t))
|
|
23
|
+
return 'String';
|
|
24
|
+
throw Error(`尚不支持条件字段类型 ${t}(${f.name || f.id}),停止保存`);
|
|
25
|
+
}
|
|
26
|
+
function keys(o, allowed) {
|
|
27
|
+
for (const k of Object.keys(o))
|
|
28
|
+
if (!allowed.includes(k))
|
|
29
|
+
throw Error(`未知条件属性 ${k}`);
|
|
30
|
+
}
|
|
31
|
+
function parseText(s) {
|
|
32
|
+
s = s.trim();
|
|
33
|
+
const pieces = s.split('|');
|
|
34
|
+
if (pieces.length > 1) {
|
|
35
|
+
if (pieces.some(p => !p.trim()))
|
|
36
|
+
throw Error('OR 子组不能包含空规则');
|
|
37
|
+
return { relation: 'OR', rules: pieces.map(parseText) };
|
|
38
|
+
}
|
|
39
|
+
const p = s.split(':');
|
|
40
|
+
let detail;
|
|
41
|
+
if (['任一', '所有'].includes(p.at(-1)))
|
|
42
|
+
detail = p.pop();
|
|
43
|
+
const [source, field, op] = p;
|
|
44
|
+
if (!['form', 'system', 'variable'].includes(source) || !field || !OP_MAP[op])
|
|
45
|
+
throw Error(`规则格式或操作无效: ${s}`);
|
|
46
|
+
const unary = emptyOps.has(op), variable = p[3] === 'field', range = op === '范围';
|
|
47
|
+
const count = unary ? 3 : range ? (variable ? 6 : 5) : (variable ? 5 : 4);
|
|
48
|
+
if (p.length !== count || (!unary && p.slice(variable ? 4 : 3).some(x => x === '')))
|
|
49
|
+
throw Error(`规则参数数量或值无效: ${s};多条件请分成多条规则,含冒号的值请用结构化 JSON`);
|
|
50
|
+
return { source: source, field, op, ...(detail ? { detail } : {}), ...(!unary ? { value: variable ? { field: p[4] } : p[3] } : {}), ...(range ? { upper: variable ? { field: p[5] } : p[4] } : {}) };
|
|
51
|
+
}
|
|
52
|
+
export function parseConditionInput(input, relation = 'AND') {
|
|
53
|
+
if (!['AND', 'OR'].includes(relation))
|
|
54
|
+
throw Error('relation 必须为 AND/OR');
|
|
55
|
+
if (typeof input === 'string')
|
|
56
|
+
return parseText(input);
|
|
57
|
+
if (Array.isArray(input)) {
|
|
58
|
+
if (!input.length)
|
|
59
|
+
throw Error('至少需要一条条件');
|
|
60
|
+
return { relation: relation, rules: input.map(x => parseConditionInput(x)) };
|
|
61
|
+
}
|
|
62
|
+
if (!input || typeof input !== 'object')
|
|
63
|
+
throw Error('条件必须是规则字符串或结构化对象');
|
|
64
|
+
if (has(input, 'rules')) {
|
|
65
|
+
keys(input, ['relation', 'rules']);
|
|
66
|
+
if (!['AND', 'OR'].includes(input.relation) || !Array.isArray(input.rules) || !input.rules.length)
|
|
67
|
+
throw Error('组合条件需 relation=AND|OR 和非空 rules');
|
|
68
|
+
return { relation: input.relation, rules: input.rules.map((r) => parseConditionInput(r)) };
|
|
69
|
+
}
|
|
70
|
+
keys(input, ['source', 'field', 'op', 'value', 'upper', 'detail']);
|
|
71
|
+
const r = { ...input, source: input.source || 'form' };
|
|
72
|
+
if (!['form', 'system', 'variable'].includes(r.source) || typeof r.field !== 'string' || !r.field || !OP_MAP[r.op])
|
|
73
|
+
throw Error('条件来源、字段或操作无效');
|
|
74
|
+
if (r.detail !== undefined && !['任一', '所有'].includes(r.detail))
|
|
75
|
+
throw Error('detail 必须为 任一/所有');
|
|
76
|
+
if (emptyOps.has(r.op)) {
|
|
77
|
+
if (has(r, 'value') || has(r, 'upper'))
|
|
78
|
+
throw Error(`${r.op} 不接受值`);
|
|
79
|
+
}
|
|
80
|
+
else if (!has(r, 'value') || r.value === null || r.value === undefined)
|
|
81
|
+
throw Error(`${r.op} 缺少 value`);
|
|
82
|
+
if (r.op === '范围') {
|
|
83
|
+
if (!has(r, 'upper') || r.upper === null || r.upper === undefined)
|
|
84
|
+
throw Error('范围缺少 upper');
|
|
85
|
+
}
|
|
86
|
+
else if (has(r, 'upper'))
|
|
87
|
+
throw Error('只有范围操作接受 upper');
|
|
88
|
+
return r;
|
|
89
|
+
}
|
|
90
|
+
export async function compileWorkflowCondition(client, base, ctx, input, relation = 'AND') {
|
|
91
|
+
const tree = parseConditionInput(input, relation);
|
|
92
|
+
const values = new Map();
|
|
93
|
+
let fields = [...(ctx.fields || [])];
|
|
94
|
+
let loaded = ctx.fields !== undefined;
|
|
95
|
+
const fieldKey = (f) => `${f.id}:${!!f.total}:${!!f.valueCount}:${!!f.variable}`;
|
|
96
|
+
async function post(path, body) {
|
|
97
|
+
const r = await client.post(base + path, body);
|
|
98
|
+
if (r?.code !== 200 || r.status === false || r.fail === true || !r.data)
|
|
99
|
+
throw Error(`条件查询失败 ${path}: ${r?.msg || '无有效数据'}`);
|
|
100
|
+
return r.data;
|
|
101
|
+
}
|
|
102
|
+
async function browseFields(searchValue = '') {
|
|
103
|
+
const all = [];
|
|
104
|
+
let current = 1;
|
|
105
|
+
while (true) {
|
|
106
|
+
const d = await post('/api/workflow/pathdef/common/browser/complete/conditionFieldBrowser', { browserMultiple: false, sourceId: ctx.sourceId, tab: 'formField', source: ctx.source, workflowId: ctx.workflowId, newly: 1, ...ctx.fieldParams, pageSize: 200, current, searchValue });
|
|
107
|
+
if (!Array.isArray(d.data))
|
|
108
|
+
throw Error('条件字段列表格式异常');
|
|
109
|
+
if (current > 1 && d.data.length && d.data.every((f) => all.some(x => fieldKey(x) === fieldKey(f))))
|
|
110
|
+
throw Error('条件字段分页没有前进');
|
|
111
|
+
all.push(...d.data);
|
|
112
|
+
if (d.total !== undefined ? all.length >= Number(d.total) : d.data.length < 200)
|
|
113
|
+
break;
|
|
114
|
+
if (!d.data.length || current++ >= 100)
|
|
115
|
+
throw Error('条件字段列表不完整');
|
|
116
|
+
}
|
|
117
|
+
const byId = new Map(fields.map(f => [fieldKey(f), f]));
|
|
118
|
+
for (const f of all)
|
|
119
|
+
byId.set(fieldKey(f), f);
|
|
120
|
+
fields = [...byId.values()];
|
|
121
|
+
}
|
|
122
|
+
async function resolveField(ref) {
|
|
123
|
+
if (!loaded) {
|
|
124
|
+
await browseFields();
|
|
125
|
+
loaded = true;
|
|
126
|
+
}
|
|
127
|
+
const match = () => {
|
|
128
|
+
const exact = fields.filter(f => String(f.id) === ref && !f.total && !f.valueCount);
|
|
129
|
+
if (exact.length)
|
|
130
|
+
return exact;
|
|
131
|
+
return fields.filter(f => { const ld = layout(f); return f.name === ref || (!f.total && !f.valueCount && (ld.dataKey === ref || ld.columnName === ref)) || `${f.detailName}.${f.name}` === ref; });
|
|
132
|
+
};
|
|
133
|
+
let hits = match();
|
|
134
|
+
if (!hits.length && ctx.fields === undefined) {
|
|
135
|
+
await browseFields(ref);
|
|
136
|
+
hits = match();
|
|
137
|
+
}
|
|
138
|
+
if (hits.length !== 1)
|
|
139
|
+
throw Error(`字段 ${ref} 匹配 ${hits.length} 项,请使用准确字段 ID`);
|
|
140
|
+
return hits[0];
|
|
141
|
+
}
|
|
142
|
+
function browserKind(r, f) {
|
|
143
|
+
const sys = { '发起人': 'resource', '当前操作人': 'resource', '发起人部门': 'department', '发起人分部': 'subcompany', '发起人岗位': 'position', '发起人职级': 'joblevel', '发起人直接上级': 'resource', '当前操作人直接上级': 'resource' };
|
|
144
|
+
if (r.source === 'system')
|
|
145
|
+
return sys[r.field];
|
|
146
|
+
const t = f.fieldType || layout(f).componentKey;
|
|
147
|
+
return { Employee: 'resource', Department: 'department', Subcompany: 'subcompany', SubCompany: 'subcompany', Role: 'role', PositionComponent: 'position' }[t];
|
|
148
|
+
}
|
|
149
|
+
async function browserValue(r, f, value) {
|
|
150
|
+
const kind = browserKind(r, f), opts = layout(f).options || f.options || [];
|
|
151
|
+
const list = Array.isArray(value) ? value : typeof value === 'string' ? value.split(',').map(v => v.trim()) : [value];
|
|
152
|
+
if (!list.length)
|
|
153
|
+
throw Error('浏览值不能为空');
|
|
154
|
+
const out = [];
|
|
155
|
+
for (const v of list) {
|
|
156
|
+
if (v && typeof v === 'object') {
|
|
157
|
+
keys(v, ['id', 'content', 'name']);
|
|
158
|
+
if (!v.id || !(v.content || v.name))
|
|
159
|
+
throw Error('浏览对象需 id 和 content/name');
|
|
160
|
+
out.push({ ...v, content: v.content || v.name });
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
const ref = String(v);
|
|
164
|
+
if (!ref)
|
|
165
|
+
throw Error('浏览值不能为空');
|
|
166
|
+
if (r.source === 'system' && r.field === '紧急程度') {
|
|
167
|
+
const id = { '普通': '1', '紧急': '2', '1': '1', '2': '2' }[ref];
|
|
168
|
+
if (!id)
|
|
169
|
+
throw Error('紧急程度只支持 普通/紧急');
|
|
170
|
+
out.push({ id, content: id === '1' ? '普通' : '紧急' });
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
if (opts.length) {
|
|
174
|
+
const hits = opts.filter((o) => [o.name, o.content, o.id, o.selectionId, o.valueKey].some(x => x !== undefined && String(x) === ref));
|
|
175
|
+
if (hits.length !== 1)
|
|
176
|
+
throw Error(`选项 ${ref} 匹配 ${hits.length} 项`);
|
|
177
|
+
const o = hits[0];
|
|
178
|
+
out.push({ id: o.valueKey ?? o.selectionId ?? o.id, content: o.name ?? o.content });
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
if (!kind)
|
|
182
|
+
throw Error(`字段 ${r.field} 的浏览值尚不能按名称解析,请传 {id,content} 对象`);
|
|
183
|
+
const cacheKey = `${kind}:${ref}`;
|
|
184
|
+
let hit = values.get(cacheKey);
|
|
185
|
+
if (!hit) {
|
|
186
|
+
// ID lookup uses the browser's destData contract; complete only searches names.
|
|
187
|
+
const byId = /^\d+$/.test(ref);
|
|
188
|
+
const d = byId
|
|
189
|
+
? await post(`/api/workflow/pathdef/common/browser/destData/${kind}`, { selectIds: ref, browserMultiple: true, virtualType: 'All' })
|
|
190
|
+
: await post(`/api/workflow/pathdef/common/browser/complete/${kind}`, { browserMultiple: true, virtualType: 'All', newly: 0, searchValue: ref, pageSize: 200, current: 1 });
|
|
191
|
+
const rows = Array.isArray(d) ? d : d.data;
|
|
192
|
+
if (!Array.isArray(rows))
|
|
193
|
+
throw Error('浏览查询列表格式异常');
|
|
194
|
+
if (d.total !== undefined && Number(d.total) > rows.length)
|
|
195
|
+
throw Error('浏览查询结果不完整,请使用准确 ID');
|
|
196
|
+
const flatten = (xs) => xs.flatMap(x => [x, ...flatten(x.children || [])]);
|
|
197
|
+
const hits = flatten(rows).filter(x => byId ? String(x.id) === ref : (x.name === ref || x.content === ref || x.number === ref));
|
|
198
|
+
if (hits.length !== 1)
|
|
199
|
+
throw Error(`${kind} ${ref} 精确匹配 ${hits.length} 项,请指定准确对象`);
|
|
200
|
+
hit = hits[0];
|
|
201
|
+
if (hit.disabledCheck || hit.disabled || hit.isDelete)
|
|
202
|
+
throw Error(`${ref} 不可选择`);
|
|
203
|
+
values.set(cacheKey, hit);
|
|
204
|
+
}
|
|
205
|
+
out.push({ ...hit, content: hit.content || hit.name });
|
|
206
|
+
}
|
|
207
|
+
return out;
|
|
208
|
+
}
|
|
209
|
+
async function leaf(r) {
|
|
210
|
+
const sf = r.source === 'system' ? SYSTEM_FIELDS[r.field] : undefined;
|
|
211
|
+
if (r.source === 'system' && !sf)
|
|
212
|
+
throw Error(`未知系统字段 ${r.field}`);
|
|
213
|
+
const f = sf ? {} : await resolveField(r.field), family = sf?.family || conditionFamily(f);
|
|
214
|
+
if (['包含子部门', '不包含子部门'].includes(r.op) && !(r.source === 'system' ? r.field === '发起人部门' : (f.fieldType || layout(f).componentKey) === 'Department'))
|
|
215
|
+
throw Error('包含子部门/不包含子部门仅适用于部门字段');
|
|
216
|
+
if (!FAMILY_OPS[family]?.includes(r.op))
|
|
217
|
+
throw Error(`${r.field} (${family}) 不支持 ${r.op}`);
|
|
218
|
+
const detail = !f.total && (f.detail !== undefined ? f.detail === true : !!(f.detailName && !['主表', '变量'].includes(f.detailName)));
|
|
219
|
+
if (r.detail && !detail)
|
|
220
|
+
throw Error(`${r.field} 不是明细字段,不能指定明细量词`);
|
|
221
|
+
const prefix = sf && ['紧急程度', '密级'].includes(r.field) ? 'SysBrowser' : family;
|
|
222
|
+
const o = { selectType: sf ? '3' : '4', elementValue1Id: '', elementValue2Id: '', expressionBaseId: '', dataValueId: '', ...(sf ? { systemVariable: sf.id } : { formField: [{ ...f }] }), ...(detail ? { detailOption: r.detail === '所有' ? '2' : '1' } : {}) };
|
|
223
|
+
// Switch is a selectable on/off value, not the platform Bool operator family.
|
|
224
|
+
// Preserve the CLI's 是/否 grammar, but encode the real Switch equality contract.
|
|
225
|
+
if (f.fieldType === 'Switch' || layout(f).componentKey === 'Switch') {
|
|
226
|
+
o.SwitchCompareOptionLeft = '5';
|
|
227
|
+
o.SwitchValueOptionLeft = '1';
|
|
228
|
+
o.SwitchTextValueLeft1 = r.op === '是' ? '1' : '0';
|
|
229
|
+
return o;
|
|
230
|
+
}
|
|
231
|
+
async function value(v, side) {
|
|
232
|
+
if (v && typeof v === 'object' && !Array.isArray(v) && has(v, 'field')) {
|
|
233
|
+
keys(v, ['field']);
|
|
234
|
+
const ref = await resolveField(String(v.field));
|
|
235
|
+
if (conditionFamily(ref) !== family)
|
|
236
|
+
throw Error('比较字段类型不兼容');
|
|
237
|
+
o[`${prefix}ValueOption${side}`] = '2';
|
|
238
|
+
o[`${prefix}TextValue${side}2`] = [ref];
|
|
239
|
+
if (family === 'Date')
|
|
240
|
+
o.typeHrm = '11';
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
o[`${prefix}ValueOption${side}`] = '1';
|
|
244
|
+
if (family === 'Number') {
|
|
245
|
+
if ((typeof v !== 'number' && typeof v !== 'string') || String(v).trim() === '' || !Number.isFinite(Number(v)))
|
|
246
|
+
throw Error(`非法数值 ${String(v)}`);
|
|
247
|
+
o[`${prefix}TextValue${side}1`] = Number(v);
|
|
248
|
+
}
|
|
249
|
+
else if (family === 'Browser') {
|
|
250
|
+
o[`${prefix}TextValue${side}1`] = await browserValue(r, f, v);
|
|
251
|
+
o.containType = '1';
|
|
252
|
+
if (browserKind(r, f) === 'resource')
|
|
253
|
+
o.typeHrm = '1';
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
if (typeof v !== 'string')
|
|
257
|
+
throw Error(`${family} 值必须为字符串`);
|
|
258
|
+
if (family === 'Date') {
|
|
259
|
+
const parts = /^(\d{4})-(\d{2})-(\d{2})(?:[ T](\d{2}):(\d{2})(?::(\d{2}))?)?$/.exec(v);
|
|
260
|
+
if (!parts || !Number.isFinite(Date.parse(v)))
|
|
261
|
+
throw Error(`非法日期 ${v}`);
|
|
262
|
+
const [, y, m, d, h, minute, second] = parts;
|
|
263
|
+
const day = new Date(`${y}-${m}-${d}T00:00:00Z`);
|
|
264
|
+
if (day.getUTCFullYear() !== Number(y) || day.getUTCMonth() + 1 !== Number(m) || day.getUTCDate() !== Number(d) || Number(h || 0) > 23 || Number(minute || 0) > 59 || Number(second || 0) > 59)
|
|
265
|
+
throw Error(`非法日期 ${v}`);
|
|
266
|
+
}
|
|
267
|
+
o[`${prefix}TextValue${side}1`] = v;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
if (r.op === '范围') {
|
|
271
|
+
o[`${prefix}CompareOptionLeft`] = '1';
|
|
272
|
+
o[`${prefix}CompareOptionRight`] = '3';
|
|
273
|
+
await value(r.value, 'Left');
|
|
274
|
+
await value(r.upper, 'Right');
|
|
275
|
+
if (family === 'Number' && typeof r.value !== 'object' && typeof r.upper !== 'object' && Number(r.value) >= Number(r.upper))
|
|
276
|
+
throw Error('范围下界必须小于上界');
|
|
277
|
+
if (family === 'Date' && typeof r.value === 'string' && typeof r.upper === 'string' && Date.parse(r.value) >= Date.parse(r.upper))
|
|
278
|
+
throw Error('日期范围下界必须早于上界');
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
o[`${prefix}CompareOptionLeft`] = OP_MAP[r.op].code;
|
|
282
|
+
if (!emptyOps.has(r.op))
|
|
283
|
+
await value(r.value, 'Left');
|
|
284
|
+
}
|
|
285
|
+
return o;
|
|
286
|
+
}
|
|
287
|
+
async function build(t) {
|
|
288
|
+
if ('rules' in t) {
|
|
289
|
+
const childrens = [];
|
|
290
|
+
for (const r of t.rules)
|
|
291
|
+
childrens.push(await build(r));
|
|
292
|
+
return { relation: t.relation === 'AND' ? 1 : 2, childrens };
|
|
293
|
+
}
|
|
294
|
+
return leaf(t);
|
|
295
|
+
}
|
|
296
|
+
const built = await build(tree);
|
|
297
|
+
return { relation: 'rules' in tree ? built.relation : 1, childrens: 'rules' in tree ? built.childrens : [built] };
|
|
298
|
+
}
|
|
299
|
+
/** Allocate a fresh condition set, then persist. Business adapters bind only after success.
|
|
300
|
+
* Never delete the previously bound condition before the replacement has been saved.
|
|
301
|
+
* sourceId=-1 is the platform's new/unbound context; discovery still uses the real business ID.
|
|
302
|
+
*/
|
|
303
|
+
export async function persistWorkflowCondition(client, base, ctx, compiled) {
|
|
304
|
+
const common = { ...ctx.extra, workflowId: ctx.workflowId, source: ctx.source, sourceId: '-1', conditionName: ctx.conditionName, needFormfield: true, readOnly: false };
|
|
305
|
+
const result = await client.post(base + '/api/workflow/pathdef/rule/condition/getConditionSet', { ...common, templateTokenId: String(Date.now()) });
|
|
306
|
+
if (result?.code !== 200 || result.status === false || result.data?.addRight === false || !result.data?.mapBaseId)
|
|
307
|
+
throw Error(`无法创建条件集合: ${result?.msg || '缺少 mapBaseId'}`);
|
|
308
|
+
const relation = ctx.inheritRelation ? Number(result.data.relation ?? compiled.relation) : compiled.relation;
|
|
309
|
+
if (![1, 2].includes(relation))
|
|
310
|
+
throw Error('平台返回无效条件关系');
|
|
311
|
+
const response = await client.post(base + '/api/workflow/pathdef/rule/condition/saveCondition', { ...result.data, ...common, mapBaseId: result.data.mapBaseId, isEdit: false, isFromRuleListPage: true, ...compiled, relation, allRuleIsEmpty: false });
|
|
312
|
+
if (response?.code !== 200 || !response.status || !response.data?.result || !response.data?.conditionKey)
|
|
313
|
+
throw Error(`保存条件失败: ${response?.data?.msg || response?.msg || '缺少 conditionKey'}`);
|
|
314
|
+
return { conditionKey: String(response.data.conditionKey), conditionCn: response.data.conditionCn || '', conditionId: response.data.conditionId, mapId: response.data.mapId };
|
|
315
|
+
}
|
|
316
|
+
//# sourceMappingURL=workflow-condition-core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-condition-core.js","sourceRoot":"","sources":["../../src/services/workflow-condition-core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAuBzE,MAAM,GAAG,GAAG,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAClD,SAAS,MAAM,CAAC,CAAM;IAAI,IAAI,CAAC;QAC3B,OAAO,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC;IAClG,CAAC;IACD,MAAM,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;IAC1D,CAAC;AAAC,CAAC;AACH,MAAM,UAAU,eAAe,CAAC,CAAM;IAClC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAChF,IAAI,CAAC,eAAe,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrH,OAAO,MAAM,CAAC;IAClB,IAAI,CAAC,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtE,OAAO,QAAQ,CAAC;IACpB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC;IAClB,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9P,OAAO,SAAS,CAAC;IACrB,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7H,OAAO,QAAQ,CAAC;IACpB,MAAM,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC3D,CAAC;AACD,SAAS,IAAI,CAAC,CAAM,EAAE,OAAiB;IAAI,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YACpB,MAAM,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAAC,CAAC;AACrC,SAAS,SAAS,CAAC,CAAS;IACxB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACb,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3B,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;QAChC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;IAC5D,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;QAChC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAS,CAAC;IAC5B,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACzE,MAAM,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,CAAC;IACjF,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/E,MAAM,KAAK,CAAC,eAAe,CAAC,6BAA6B,CAAC,CAAC;IAC/D,OAAO,EAAE,MAAM,EAAE,MAAa,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAChN,CAAC;AACD,MAAM,UAAU,mBAAmB,CAAC,KAAU,EAAE,QAAQ,GAAG,KAAK;IAC5D,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACjC,MAAM,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,MAAM;YACb,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5B,OAAO,EAAE,QAAQ,EAAE,QAAe,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QACnC,MAAM,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACpC,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;YAC7F,MAAM,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACnD,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpG,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnE,MAAM,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;IACvD,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9G,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;IAChC,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1D,MAAM,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACpC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACrB,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC;YAClC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;SACI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;QAClE,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IACpC,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QAChB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;YAC7D,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;SACI,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC;QACpB,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAClC,OAAO,CAAC,CAAC;AACb,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,MAAuB,EAAE,IAAY,EAAE,GAAqB,EAAE,KAAU,EAAE,QAAQ,GAAG,KAAK;IACrI,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAe,CAAC;IACtC,IAAI,MAAM,GAAU,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC;IACtC,MAAM,QAAQ,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtF,KAAK,UAAU,IAAI,CAAC,IAAY,EAAE,IAAS;QAAI,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;QAAC,IAAI,CAAC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI;YAClK,MAAM,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC,CAAC;QAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IAAC,CAAC;IACzE,KAAK,UAAU,YAAY,CAAC,WAAW,GAAG,EAAE;QACxC,MAAM,GAAG,GAAU,EAAE,CAAC;QACtB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,OAAO,IAAI,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,qEAAqE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YACrR,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;gBACtB,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;YAC9B,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpG,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;YAC9B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG;gBAC3E,MAAM;YACV,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE,IAAI,GAAG;gBAClC,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,KAAK,MAAM,CAAC,IAAI,GAAG;YACf,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,UAAU,YAAY,CAAC,GAAW;QACnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,YAAY,EAAE,CAAC;YACrB,MAAM,GAAG,IAAI,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,GAAG,GAAG,EAAE;YAAG,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAAC,IAAI,KAAK,CAAC,MAAM;gBACvH,OAAO,KAAK,CAAC;YAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,OAAO,KAAK,GAAG,IAAI,EAAE,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC,CAAC;QACxN,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC3C,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,GAAG,KAAK,EAAE,CAAC;QACnB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YACjB,MAAM,KAAK,CAAC,MAAM,GAAG,OAAO,IAAI,CAAC,MAAM,eAAe,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,SAAS,WAAW,CAAC,CAAgB,EAAE,CAAM;QAAI,MAAM,GAAG,GAA2B,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;QAAC,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ;YAC9R,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;QAAC,OAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAU,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IACnP,KAAK,UAAU,YAAY,CAAC,CAAgB,EAAE,CAAM,EAAE,KAAU;QAC5D,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;QAC5E,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtH,IAAI,CAAC,IAAI,CAAC,MAAM;YACZ,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;QAC3B,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC7B,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC;oBAC/B,MAAM,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBAC3C,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACjD,SAAS;YACb,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,GAAG;gBACJ,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3B,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;gBAC9C,MAAM,EAAE,GAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAU,CAAC,GAAG,CAAC,CAAC;gBACtE,IAAI,CAAC,EAAE;oBACH,MAAM,KAAK,CAAC,eAAe,CAAC,CAAC;gBACjC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACpD,SAAS;YACb,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC3I,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;oBACjB,MAAM,KAAK,CAAC,MAAM,GAAG,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;gBACjD,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBACpF,SAAS;YACb,CAAC;YACD,IAAI,CAAC,IAAI;gBACL,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,kCAAkC,CAAC,CAAC;YACjE,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;YAClC,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;gBACP,gFAAgF;gBAChF,MAAM,IAAI,GAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC7B,MAAM,CAAC,GAAG,IAAI;oBACV,CAAC,CAAC,MAAM,IAAI,CAAC,iDAAiD,IAAI,EAAE,EAAC,EAAC,SAAS,EAAC,GAAG,EAAC,eAAe,EAAC,IAAI,EAAC,WAAW,EAAC,KAAK,EAAC,CAAC;oBAC5H,CAAC,CAAC,MAAM,IAAI,CAAC,iDAAiD,IAAI,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;gBAChL,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,IAAI,CAAC;gBACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oBACpB,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC9B,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM;oBACtD,MAAM,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBACtC,MAAM,OAAO,GAAG,CAAC,EAAS,EAAS,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACzF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAA,CAAC,CAAA,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAG,GAAG,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC1H,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;oBACjB,MAAM,KAAK,CAAC,GAAG,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,MAAM,YAAY,CAAC,CAAC;gBAChE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACd,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ;oBACjD,MAAM,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC;gBAC/B,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC9B,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IACD,KAAK,UAAU,IAAI,CAAC,CAAgB;QAChC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,EAAE;YAC5B,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACrC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;QAC3F,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,YAAY,CAAC;YAC/I,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,MAAM,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACnI,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM;YACnB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9E,MAAM,CAAC,GAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,eAAe,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACpQ,8EAA8E;QAC9E,gFAAgF;QAChF,IAAI,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YAClE,CAAC,CAAC,uBAAuB,GAAG,GAAG,CAAC;YAChC,CAAC,CAAC,qBAAqB,GAAG,GAAG,CAAC;YAC9B,CAAC,CAAC,oBAAoB,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAClD,OAAO,CAAC,CAAC;QACb,CAAC;QACD,KAAK,UAAU,KAAK,CAAC,CAAM,EAAE,IAAsB;YAC/C,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;gBACrE,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnB,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChD,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,MAAM;oBAC/B,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;gBAC7B,CAAC,CAAC,GAAG,MAAM,cAAc,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;gBACvC,CAAC,CAAC,GAAG,MAAM,YAAY,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACxC,IAAI,MAAM,KAAK,MAAM;oBACjB,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;gBACrB,OAAO;YACX,CAAC;YACD,CAAC,CAAC,GAAG,MAAM,cAAc,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;YACvC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACtB,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC1G,MAAM,KAAK,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACrC,CAAC,CAAC,GAAG,MAAM,YAAY,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC;iBACI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC5B,CAAC,CAAC,GAAG,MAAM,YAAY,IAAI,GAAG,CAAC,GAAG,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9D,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;gBACpB,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU;oBAChC,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC;YACxB,CAAC;iBACI,CAAC;gBACF,IAAI,OAAO,CAAC,KAAK,QAAQ;oBACrB,MAAM,KAAK,CAAC,GAAG,MAAM,UAAU,CAAC,CAAC;gBACrC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;oBACpB,MAAM,KAAK,GAAC,gEAAgE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACrF,IAAG,CAAC,KAAK,IAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBACpE,MAAM,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,MAAM,EAAC,MAAM,CAAC,GAAC,KAAK,CAAC;oBACrC,MAAM,GAAG,GAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC/C,IAAG,GAAG,CAAC,cAAc,EAAE,KAAG,MAAM,CAAC,CAAC,CAAC,IAAE,GAAG,CAAC,WAAW,EAAE,GAAC,CAAC,KAAG,MAAM,CAAC,CAAC,CAAC,IAAE,GAAG,CAAC,UAAU,EAAE,KAAG,MAAM,CAAC,CAAC,CAAC,IAAE,MAAM,CAAC,CAAC,IAAE,CAAC,CAAC,GAAC,EAAE,IAAE,MAAM,CAAC,MAAM,IAAE,CAAC,CAAC,GAAC,EAAE,IAAE,MAAM,CAAC,MAAM,IAAE,CAAC,CAAC,GAAC,EAAE;wBAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC7L,CAAC;gBACD,CAAC,CAAC,GAAG,MAAM,YAAY,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YACxC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;YAChB,CAAC,CAAC,GAAG,MAAM,mBAAmB,CAAC,GAAG,GAAG,CAAC;YACtC,CAAC,CAAC,GAAG,MAAM,oBAAoB,CAAC,GAAG,GAAG,CAAC;YACvC,MAAM,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC7B,MAAM,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC9B,IAAI,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;gBACvH,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;YAC9B,IAAG,MAAM,KAAG,MAAM,IAAE,OAAO,CAAC,CAAC,KAAK,KAAG,QAAQ,IAAE,OAAO,CAAC,CAAC,KAAK,KAAG,QAAQ,IAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAC,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;QACnJ,CAAC;aACI,CAAC;YACF,CAAC,CAAC,GAAG,MAAM,mBAAmB,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,MAAM,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,CAAC,CAAC;IACb,CAAC;IACD,KAAK,UAAU,KAAK,CAAC,CAAgB;QAAkB,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YACtE,MAAM,SAAS,GAAG,EAAE,CAAC;YACrB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;gBACnB,SAAS,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;QACjE,CAAC;QAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IACnB,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AACtH,CAAC;AACD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,MAAuB,EAAE,IAAY,EAAE,GAMrF,EAAE,QAGF;IACG,MAAM,MAAM,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACxK,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,sDAAsD,EAAE,EAAE,GAAG,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACpJ,IAAI,MAAM,EAAE,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,QAAQ,KAAG,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS;QAC3G,MAAM,KAAK,CAAC,aAAa,MAAM,EAAE,GAAG,IAAI,cAAc,EAAE,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAC,GAAG,CAAC,eAAe,CAAA,CAAC,CAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAA,QAAQ,CAAC,QAAQ,CAAC;IACrG,IAAG,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAC,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,oDAAoD,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IACvP,IAAI,QAAQ,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY;QACpG,MAAM,KAAK,CAAC,WAAW,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,QAAQ,EAAE,GAAG,IAAI,iBAAiB,EAAE,CAAC,CAAC;IACxF,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAClL,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type Client } from './workflow-function-management.js';
|
|
2
|
+
export type WorkflowFormKind = 'workflow' | 'ebuilder';
|
|
3
|
+
/** Existing workflows are classified exclusively by frame metadata, never by probing form endpoints. */
|
|
4
|
+
export declare function getWorkflowContext(client: Pick<Client, 'get'>, base: string, workflowId: string, expectedFormId?: string): Promise<{
|
|
5
|
+
workflowId: string;
|
|
6
|
+
formId: string;
|
|
7
|
+
relateType: "wea_form" | "wea_ebuilder";
|
|
8
|
+
kind: WorkflowFormKind;
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=workflow-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-context.d.ts","sourceRoot":"","sources":["../../src/services/workflow-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAI,KAAK,MAAM,EAAC,MAAM,mCAAmC,CAAC;AACjE,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,UAAU,CAAC;AAEvD,wGAAwG;AACxG,wBAAsB,kBAAkB,CAAC,MAAM,EAAC,IAAI,CAAC,MAAM,EAAC,KAAK,CAAC,EAAC,IAAI,EAAC,MAAM,EAAC,UAAU,EAAC,MAAM,EAAC,cAAc,CAAC,EAAC,MAAM;;;gBAOjE,UAAU,GAAC,cAAc;UAA+D,gBAAgB;GAC7J"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { id } from './workflow-function-management.js';
|
|
2
|
+
/** Existing workflows are classified exclusively by frame metadata, never by probing form endpoints. */
|
|
3
|
+
export async function getWorkflowContext(client, base, workflowId, expectedFormId) {
|
|
4
|
+
const r = await client.get(`${base}/api/bs/workflow/pathdef/frame/getPathFrameInfo?workflowId=${id(workflowId)}`);
|
|
5
|
+
if (r?.code !== 200 || r.status === false || r.fail === true || !r.data || r.data.fail === true)
|
|
6
|
+
throw Error('getPathFrameInfo 读取失败,停止操作');
|
|
7
|
+
const d = r.data;
|
|
8
|
+
if (!['wea_form', 'wea_ebuilder'].includes(d.relateType))
|
|
9
|
+
throw Error(`不支持或缺少 relateType: ${String(d.relateType)},停止操作`);
|
|
10
|
+
const formId = id(d.formId, 'frame.formId');
|
|
11
|
+
if (expectedFormId !== undefined && formId !== String(expectedFormId))
|
|
12
|
+
throw Error('getPathFrameInfo 的 formId 与目标表单不一致,停止操作');
|
|
13
|
+
return { workflowId, formId, relateType: d.relateType, kind: (d.relateType === 'wea_ebuilder' ? 'ebuilder' : 'workflow') };
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=workflow-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-context.js","sourceRoot":"","sources":["../../src/services/workflow-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAa,MAAM,mCAAmC,CAAC;AAGjE,wGAAwG;AACxG,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAyB,EAAC,IAAW,EAAC,UAAiB,EAAC,cAAsB;IACtH,MAAM,CAAC,GAAC,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,8DAA8D,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAChH,IAAG,CAAC,EAAE,IAAI,KAAG,GAAG,IAAE,CAAC,CAAC,MAAM,KAAG,KAAK,IAAE,CAAC,CAAC,IAAI,KAAG,IAAI,IAAE,CAAC,CAAC,CAAC,IAAI,IAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAG,IAAI;QAAC,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACzH,MAAM,CAAC,GAAC,CAAC,CAAC,IAAI,CAAC;IACf,IAAG,CAAC,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;QAAC,MAAM,KAAK,CAAC,sBAAsB,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACtH,MAAM,MAAM,GAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAC,cAAc,CAAC,CAAC;IACzC,IAAG,cAAc,KAAG,SAAS,IAAE,MAAM,KAAG,MAAM,CAAC,cAAc,CAAC;QAAC,MAAM,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACtH,OAAO,EAAC,UAAU,EAAC,MAAM,EAAC,UAAU,EAAC,CAAC,CAAC,UAAuC,EAAC,IAAI,EAAC,CAAC,CAAC,CAAC,UAAU,KAAG,cAAc,CAAA,CAAC,CAAA,UAAU,CAAA,CAAC,CAAA,UAAU,CAAqB,EAAC,CAAC;AAChK,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { ApiClient } from '../core/client.js';
|
|
2
|
+
/**
|
|
3
|
+
* 流程导出(平台叫 packing / 迁出)。
|
|
4
|
+
*
|
|
5
|
+
* 平台前端「导出流程」是异步三步,抓包(monitor_1792655821408.txt)与实测一致:
|
|
6
|
+
*
|
|
7
|
+
* 1. `POST /api/packing/public/packing`
|
|
8
|
+
* `{"ietype":"workflow","exportIds":["<workflowId>"],"exportNameMap":{"<workflowId>":"<流程名>"}}`
|
|
9
|
+
* → `data` 直接是 taskId 字符串。
|
|
10
|
+
* 2. 每 2 秒 `GET /api/packing/public/packingStatus?taskId=<taskId>`
|
|
11
|
+
* → `data.totalStatus` 为 packing / success / fail,`data.totalProcess` 是百分比字符串。
|
|
12
|
+
* 打包的是流程绑定的 e-builder 应用,条目 `packingStatusList[].details[]` 是各微服务的进度。
|
|
13
|
+
* 3. 成功后 `data.fileObj` 给出 zip 元信息(`fileid` / `name` / `module`),
|
|
14
|
+
* `data.zipFileId` 与之一致;下载走 `/api/file/remotedownload/<fileId>/token/true?authModule=<module>`。
|
|
15
|
+
*
|
|
16
|
+
* 注意:打包过程可能持续 1 分钟以上(应用越大越久),调用方要自己控制轮询与超时。
|
|
17
|
+
*/
|
|
18
|
+
export interface PackingPayload {
|
|
19
|
+
ietype: 'workflow';
|
|
20
|
+
exportIds: string[];
|
|
21
|
+
exportNameMap: Record<string, string>;
|
|
22
|
+
}
|
|
23
|
+
/** 抓包原文:ietype 固定 workflow,名称映射用于导出任务与文件名。 */
|
|
24
|
+
export declare function buildPackingPayload(workflowId: string, name: string): PackingPayload;
|
|
25
|
+
export interface PackingStep {
|
|
26
|
+
serviceName: string;
|
|
27
|
+
step: string;
|
|
28
|
+
status: string;
|
|
29
|
+
process: string;
|
|
30
|
+
failMsg: string;
|
|
31
|
+
}
|
|
32
|
+
export interface PackingState {
|
|
33
|
+
/** packing / success / fail(平台原值,可能为空) */
|
|
34
|
+
totalStatus: string;
|
|
35
|
+
/** 百分比字符串,如 "50.00%" */
|
|
36
|
+
totalProcess: string;
|
|
37
|
+
zipFileId: string;
|
|
38
|
+
pkgId: string;
|
|
39
|
+
/** 成功后的 zip 元信息;未完成时为 null */
|
|
40
|
+
file: Record<string, any> | null;
|
|
41
|
+
/** 各微服务进度明细(展平) */
|
|
42
|
+
steps: PackingStep[];
|
|
43
|
+
done: boolean;
|
|
44
|
+
failed: boolean;
|
|
45
|
+
/** 失败原因;成功或进行中为空串 */
|
|
46
|
+
failMessage: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* 解析 packingStatus 响应。**纯函数**:平台字段名大小写/层级曾变过,
|
|
50
|
+
* 这里集中兜底,命令层只消费归一化后的结果。
|
|
51
|
+
*/
|
|
52
|
+
export declare function parsePackingStatus(resp: any): PackingState;
|
|
53
|
+
/** 当前正在执行的步骤(用于进度提示;取最近 3 个去重的步骤名)。 */
|
|
54
|
+
export declare function packingProgressLabel(state: PackingState): string;
|
|
55
|
+
/** zip 下载路径。fileId 用 `fileObj.fileid`(与 zipFileId 相同),module 用 fileObj.module。 */
|
|
56
|
+
export declare function packingDownloadPath(fileId: string, module: string): string;
|
|
57
|
+
/** 去掉路径分隔符与 Windows 非法字符,避免把服务端文件名直接当本地路径。 */
|
|
58
|
+
export declare function sanitizeFileName(name: string, fallback?: string): string;
|
|
59
|
+
/**
|
|
60
|
+
* 从 Content-Disposition 取文件名。
|
|
61
|
+
* 平台真实返回:`attachment;filename="%E4%BC%9A%E8%AE%AE%E7%AE%A1%E7%90%861_1792659668744.zip"`(百分号编码)。
|
|
62
|
+
*/
|
|
63
|
+
export declare function fileNameFromContentDisposition(header: string | null | undefined, fallback?: string): string;
|
|
64
|
+
/** 对象存储 302 的 URL 里带 `response-content-disposition`(腾讯云风格),文件名藏在那。 */
|
|
65
|
+
export declare function fileNameFromRedirectLocation(location: string, fallback?: string): string;
|
|
66
|
+
/**
|
|
67
|
+
* 下载打包好的 zip。
|
|
68
|
+
*
|
|
69
|
+
* 与失败数据下载同一套安全约定:先带鉴权拿 302,再**不带任何鉴权头**去对象存储,
|
|
70
|
+
* 不把 eteamsid 递给第三方主机。平台实测也可能直接 200 返回二进制。
|
|
71
|
+
*/
|
|
72
|
+
export declare function downloadPackedFile(baseUrl: string, fileId: string, module: string, eteamsId: string): Promise<{
|
|
73
|
+
bytes: Buffer;
|
|
74
|
+
fileName: string;
|
|
75
|
+
}>;
|
|
76
|
+
/** 发起导出并返回 taskId。响应 `data` 直接是字符串。 */
|
|
77
|
+
export declare function startWorkflowExport(client: ApiClient, baseUrl: string, workflowId: string, name: string): Promise<string>;
|
|
78
|
+
/** 查询一次打包进度。 */
|
|
79
|
+
export declare function fetchPackingStatus(client: ApiClient, baseUrl: string, taskId: string): Promise<PackingState>;
|
|
80
|
+
//# sourceMappingURL=workflow-export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-export.d.ts","sourceRoot":"","sources":["../../src/services/workflow-export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,8CAA8C;AAC9C,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAOpF;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IACjC,mBAAmB;IACnB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,qBAAqB;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,GAAG,GAAG,YAAY,CA8B1D;AAED,uCAAuC;AACvC,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAOhE;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAG1E;AAED,8CAA8C;AAC9C,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAwB,GAAG,MAAM,CAQvF;AAaD;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,SAAK,GAAG,MAAM,CAIvG;AAED,sEAAsE;AACtE,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,MAAM,CAOpF;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAChE,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAoB9C;AAED,uCAAuC;AACvC,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GACnE,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED,gBAAgB;AAChB,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GACjD,OAAO,CAAC,YAAY,CAAC,CAQvB"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/** 抓包原文:ietype 固定 workflow,名称映射用于导出任务与文件名。 */
|
|
2
|
+
export function buildPackingPayload(workflowId, name) {
|
|
3
|
+
const id = String(workflowId);
|
|
4
|
+
return {
|
|
5
|
+
ietype: 'workflow',
|
|
6
|
+
exportIds: [id],
|
|
7
|
+
exportNameMap: { [id]: name },
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
const FAIL_STATUSES = new Set(['fail', 'failed', 'error', 'failure']);
|
|
11
|
+
/**
|
|
12
|
+
* 解析 packingStatus 响应。**纯函数**:平台字段名大小写/层级曾变过,
|
|
13
|
+
* 这里集中兜底,命令层只消费归一化后的结果。
|
|
14
|
+
*/
|
|
15
|
+
export function parsePackingStatus(resp) {
|
|
16
|
+
const data = resp?.data && typeof resp.data === 'object' ? resp.data : {};
|
|
17
|
+
const totalStatus = String(data.totalStatus || '').trim();
|
|
18
|
+
const steps = [];
|
|
19
|
+
for (const task of Array.isArray(data.packingStatusList) ? data.packingStatusList : []) {
|
|
20
|
+
for (const d of Array.isArray(task?.details) ? task.details : []) {
|
|
21
|
+
steps.push({
|
|
22
|
+
serviceName: String(d?.serviceName || ''),
|
|
23
|
+
step: String(d?.step || ''),
|
|
24
|
+
status: String(d?.status || ''),
|
|
25
|
+
process: String(d?.process || ''),
|
|
26
|
+
failMsg: String(d?.failMsg || ''),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const file = data.fileObj && typeof data.fileObj === 'object' ? data.fileObj : null;
|
|
31
|
+
const failedStep = steps.find(s => s.failMsg) || steps.find(s => FAIL_STATUSES.has(s.status.toLowerCase()));
|
|
32
|
+
const failed = FAIL_STATUSES.has(totalStatus.toLowerCase()) || (!file && Boolean(failedStep));
|
|
33
|
+
const failMessage = String(failedStep?.failMsg || (failed ? (resp?.msg || '') : ''));
|
|
34
|
+
return {
|
|
35
|
+
totalStatus,
|
|
36
|
+
totalProcess: String(data.totalProcess || ''),
|
|
37
|
+
zipFileId: String(data.zipFileId || file?.fileid || ''),
|
|
38
|
+
pkgId: String(data.pkgId || ''),
|
|
39
|
+
file,
|
|
40
|
+
steps,
|
|
41
|
+
done: totalStatus.toLowerCase() === 'success' || failed,
|
|
42
|
+
failed,
|
|
43
|
+
failMessage,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/** 当前正在执行的步骤(用于进度提示;取最近 3 个去重的步骤名)。 */
|
|
47
|
+
export function packingProgressLabel(state) {
|
|
48
|
+
const running = state.steps
|
|
49
|
+
.filter(s => s.status.toLowerCase() === 'packing' && s.step)
|
|
50
|
+
.map(s => s.step);
|
|
51
|
+
const unique = [...new Set(running)];
|
|
52
|
+
const tail = unique.slice(-3).join('、');
|
|
53
|
+
return [state.totalProcess || state.totalStatus, tail].filter(Boolean).join(' · ');
|
|
54
|
+
}
|
|
55
|
+
/** zip 下载路径。fileId 用 `fileObj.fileid`(与 zipFileId 相同),module 用 fileObj.module。 */
|
|
56
|
+
export function packingDownloadPath(fileId, module) {
|
|
57
|
+
const mod = module || 'ebuilder';
|
|
58
|
+
return `/api/file/remotedownload/${encodeURIComponent(fileId)}/token/true?authModule=${encodeURIComponent(mod)}`;
|
|
59
|
+
}
|
|
60
|
+
/** 去掉路径分隔符与 Windows 非法字符,避免把服务端文件名直接当本地路径。 */
|
|
61
|
+
export function sanitizeFileName(name, fallback = 'workflow-export.zip') {
|
|
62
|
+
const base = String(name || '')
|
|
63
|
+
.replace(/^.*[\\/]/, '')
|
|
64
|
+
.replace(/[\\/:*?"<>|]/g, '_')
|
|
65
|
+
.replace(/[\x00-\x1f]/g, '')
|
|
66
|
+
.trim()
|
|
67
|
+
.replace(/[. ]+$/, '');
|
|
68
|
+
return base || fallback;
|
|
69
|
+
}
|
|
70
|
+
function decodeFileName(raw) {
|
|
71
|
+
const m = /filename\*=UTF-8''([^;]+)/i.exec(raw);
|
|
72
|
+
const plain = m ? m[1] : (/filename="?([^";]+)"?/i.exec(raw)?.[1] || '');
|
|
73
|
+
const value = plain.trim().replace(/^"|"$/g, '');
|
|
74
|
+
try {
|
|
75
|
+
return decodeURIComponent(value);
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return value;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* 从 Content-Disposition 取文件名。
|
|
83
|
+
* 平台真实返回:`attachment;filename="%E4%BC%9A%E8%AE%AE%E7%AE%A1%E7%90%861_1792659668744.zip"`(百分号编码)。
|
|
84
|
+
*/
|
|
85
|
+
export function fileNameFromContentDisposition(header, fallback = '') {
|
|
86
|
+
if (!header)
|
|
87
|
+
return fallback;
|
|
88
|
+
const name = decodeFileName(header);
|
|
89
|
+
return name ? sanitizeFileName(name, fallback) : fallback;
|
|
90
|
+
}
|
|
91
|
+
/** 对象存储 302 的 URL 里带 `response-content-disposition`(腾讯云风格),文件名藏在那。 */
|
|
92
|
+
export function fileNameFromRedirectLocation(location, fallback = '') {
|
|
93
|
+
try {
|
|
94
|
+
const disposition = new URL(location).searchParams.get('response-content-disposition') || '';
|
|
95
|
+
return fileNameFromContentDisposition(disposition, fallback);
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return fallback;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* 下载打包好的 zip。
|
|
103
|
+
*
|
|
104
|
+
* 与失败数据下载同一套安全约定:先带鉴权拿 302,再**不带任何鉴权头**去对象存储,
|
|
105
|
+
* 不把 eteamsid 递给第三方主机。平台实测也可能直接 200 返回二进制。
|
|
106
|
+
*/
|
|
107
|
+
export async function downloadPackedFile(baseUrl, fileId, module, eteamsId) {
|
|
108
|
+
const first = await fetch(`${baseUrl}${packingDownloadPath(fileId, module)}`, {
|
|
109
|
+
headers: { eteamsid: eteamsId, langtype: 'zh_CN' },
|
|
110
|
+
redirect: 'manual',
|
|
111
|
+
});
|
|
112
|
+
if (first.status >= 300 && first.status < 400) {
|
|
113
|
+
const location = first.headers.get('location') || '';
|
|
114
|
+
if (!location)
|
|
115
|
+
throw new Error(`下载跳转缺少 location(HTTP ${first.status})`);
|
|
116
|
+
const second = await fetch(location);
|
|
117
|
+
if (!second.ok)
|
|
118
|
+
throw new Error(`从对象存储下载失败: HTTP ${second.status}`);
|
|
119
|
+
return {
|
|
120
|
+
bytes: Buffer.from(await second.arrayBuffer()),
|
|
121
|
+
fileName: fileNameFromRedirectLocation(location, fileNameFromContentDisposition(first.headers.get('content-disposition'), '')),
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
if (!first.ok)
|
|
125
|
+
throw new Error(`下载导出文件失败: HTTP ${first.status}`);
|
|
126
|
+
return {
|
|
127
|
+
bytes: Buffer.from(await first.arrayBuffer()),
|
|
128
|
+
fileName: fileNameFromContentDisposition(first.headers.get('content-disposition'), ''),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/** 发起导出并返回 taskId。响应 `data` 直接是字符串。 */
|
|
132
|
+
export async function startWorkflowExport(client, baseUrl, workflowId, name) {
|
|
133
|
+
const res = await client.post(`${baseUrl}/api/packing/public/packing`, buildPackingPayload(workflowId, name));
|
|
134
|
+
if (res?.code !== 200 || res?.status === false) {
|
|
135
|
+
throw new Error(`发起导出失败: ${res?.msg || '未知错误'}`);
|
|
136
|
+
}
|
|
137
|
+
const taskId = typeof res.data === 'string' ? res.data : String(res.data?.taskId || '');
|
|
138
|
+
if (!taskId)
|
|
139
|
+
throw new Error('发起导出失败: 响应里没有 taskId');
|
|
140
|
+
return taskId;
|
|
141
|
+
}
|
|
142
|
+
/** 查询一次打包进度。 */
|
|
143
|
+
export async function fetchPackingStatus(client, baseUrl, taskId) {
|
|
144
|
+
const res = await client.get(`${baseUrl}/api/packing/public/packingStatus?taskId=${encodeURIComponent(taskId)}`);
|
|
145
|
+
if (res?.code !== 200 || res?.status === false) {
|
|
146
|
+
throw new Error(`查询打包进度失败: ${res?.msg || '未知错误'}`);
|
|
147
|
+
}
|
|
148
|
+
return parsePackingStatus(res);
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=workflow-export.js.map
|