weaver-e10-builder 1.5.11 → 1.5.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/README.md +212 -189
  2. package/assets/image-style-observation.schema.json +1355 -0
  3. package/assets/layout-spec.schema.json +52 -0
  4. package/dist/commands/designer-common.d.ts.map +1 -1
  5. package/dist/commands/designer-common.js +91 -0
  6. package/dist/commands/designer-common.js.map +1 -1
  7. package/dist/commands/form-add-detail-table.d.ts.map +1 -1
  8. package/dist/commands/form-add-detail-table.js +97 -1
  9. package/dist/commands/form-add-detail-table.js.map +1 -1
  10. package/dist/commands/form-field-linkage.d.ts +55 -0
  11. package/dist/commands/form-field-linkage.d.ts.map +1 -1
  12. package/dist/commands/form-field-linkage.js +1026 -12
  13. package/dist/commands/form-field-linkage.js.map +1 -1
  14. package/dist/commands/form-formula-linkage.d.ts +36 -0
  15. package/dist/commands/form-formula-linkage.d.ts.map +1 -1
  16. package/dist/commands/form-formula-linkage.js +107 -7
  17. package/dist/commands/form-formula-linkage.js.map +1 -1
  18. package/dist/commands/form-formula.d.ts.map +1 -1
  19. package/dist/commands/form-formula.js +21 -4
  20. package/dist/commands/form-formula.js.map +1 -1
  21. package/dist/commands/form-layout-restore.d.ts +3 -0
  22. package/dist/commands/form-layout-restore.d.ts.map +1 -0
  23. package/dist/commands/form-layout-restore.js +217 -0
  24. package/dist/commands/form-layout-restore.js.map +1 -0
  25. package/dist/commands/form-layout.d.ts.map +1 -1
  26. package/dist/commands/form-layout.js +11 -1
  27. package/dist/commands/form-layout.js.map +1 -1
  28. package/dist/commands/form-obj-meta.d.ts +12 -0
  29. package/dist/commands/form-obj-meta.d.ts.map +1 -0
  30. package/dist/commands/form-obj-meta.js +116 -0
  31. package/dist/commands/form-obj-meta.js.map +1 -0
  32. package/dist/commands/form-validate.d.ts.map +1 -1
  33. package/dist/commands/form-validate.js +167 -35
  34. package/dist/commands/form-validate.js.map +1 -1
  35. package/dist/commands/form.d.ts.map +1 -1
  36. package/dist/commands/form.js +359 -27
  37. package/dist/commands/form.js.map +1 -1
  38. package/dist/commands/menu.d.ts.map +1 -1
  39. package/dist/commands/menu.js +5 -3
  40. package/dist/commands/menu.js.map +1 -1
  41. package/dist/commands/wf-form.d.ts.map +1 -1
  42. package/dist/commands/wf-form.js +215 -13
  43. package/dist/commands/wf-form.js.map +1 -1
  44. package/dist/commands/workflow.d.ts.map +1 -1
  45. package/dist/commands/workflow.js +18 -4
  46. package/dist/commands/workflow.js.map +1 -1
  47. package/dist/core/client.d.ts +2 -1
  48. package/dist/core/client.d.ts.map +1 -1
  49. package/dist/core/client.js +4 -2
  50. package/dist/core/client.js.map +1 -1
  51. package/dist/index.js +2 -0
  52. package/dist/index.js.map +1 -1
  53. package/dist/services/actionflow/calendar_mapper.d.ts.map +1 -1
  54. package/dist/services/actionflow/calendar_mapper.js +34 -14
  55. package/dist/services/actionflow/calendar_mapper.js.map +1 -1
  56. package/dist/services/actionflow/components/document_actions.d.ts.map +1 -1
  57. package/dist/services/actionflow/components/document_actions.js +113 -4
  58. package/dist/services/actionflow/components/document_actions.js.map +1 -1
  59. package/dist/services/actionflow/components/eb_get_data_by_id.d.ts.map +1 -1
  60. package/dist/services/actionflow/components/eb_get_data_by_id.js +18 -1
  61. package/dist/services/actionflow/components/eb_get_data_by_id.js.map +1 -1
  62. package/dist/services/actionflow/components/index.d.ts.map +1 -1
  63. package/dist/services/actionflow/components/index.js +2 -1
  64. package/dist/services/actionflow/components/index.js.map +1 -1
  65. package/dist/services/actionflow/components/schedule_create.d.ts.map +1 -1
  66. package/dist/services/actionflow/components/schedule_create.js +22 -6
  67. package/dist/services/actionflow/components/schedule_create.js.map +1 -1
  68. package/dist/services/actionflow/components/workflow_actions.d.ts +1 -0
  69. package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
  70. package/dist/services/actionflow/components/workflow_actions.js +31 -6
  71. package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
  72. package/dist/services/actionflow/context_preflight.d.ts +5 -0
  73. package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
  74. package/dist/services/actionflow/context_preflight.js +88 -34
  75. package/dist/services/actionflow/context_preflight.js.map +1 -1
  76. package/dist/services/actionflow/document_source.d.ts +5 -0
  77. package/dist/services/actionflow/document_source.d.ts.map +1 -1
  78. package/dist/services/actionflow/document_source.js +16 -0
  79. package/dist/services/actionflow/document_source.js.map +1 -1
  80. package/dist/services/actionflow/filter_rules.d.ts.map +1 -1
  81. package/dist/services/actionflow/filter_rules.js +9 -8
  82. package/dist/services/actionflow/filter_rules.js.map +1 -1
  83. package/dist/services/actionflow/formula_service.d.ts +2 -1
  84. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  85. package/dist/services/actionflow/formula_service.js +52 -22
  86. package/dist/services/actionflow/formula_service.js.map +1 -1
  87. package/dist/services/actionflow/preflight_service.d.ts +5 -0
  88. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  89. package/dist/services/actionflow/preflight_service.js +128 -3
  90. package/dist/services/actionflow/preflight_service.js.map +1 -1
  91. package/dist/services/actionflow/save_workflow_draft.d.ts +7 -0
  92. package/dist/services/actionflow/save_workflow_draft.d.ts.map +1 -1
  93. package/dist/services/actionflow/save_workflow_draft.js +1 -1
  94. package/dist/services/actionflow/save_workflow_draft.js.map +1 -1
  95. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  96. package/dist/services/actionflow/workflow_compiler.js +51 -13
  97. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  98. package/dist/services/form-formula-linkage.d.ts +4 -0
  99. package/dist/services/form-formula-linkage.d.ts.map +1 -1
  100. package/dist/services/form-formula-linkage.js +3 -1
  101. package/dist/services/form-formula-linkage.js.map +1 -1
  102. package/dist/services/form-layout-io.d.ts +18 -0
  103. package/dist/services/form-layout-io.d.ts.map +1 -0
  104. package/dist/services/form-layout-io.js +89 -0
  105. package/dist/services/form-layout-io.js.map +1 -0
  106. package/dist/services/form-layout-source/artifact.d.ts +8 -0
  107. package/dist/services/form-layout-source/artifact.d.ts.map +1 -0
  108. package/dist/services/form-layout-source/artifact.js +52 -0
  109. package/dist/services/form-layout-source/artifact.js.map +1 -0
  110. package/dist/services/form-layout-source/binding.d.ts +10 -0
  111. package/dist/services/form-layout-source/binding.d.ts.map +1 -0
  112. package/dist/services/form-layout-source/binding.js +43 -0
  113. package/dist/services/form-layout-source/binding.js.map +1 -0
  114. package/dist/services/form-layout-source/compile.d.ts +7 -0
  115. package/dist/services/form-layout-source/compile.d.ts.map +1 -0
  116. package/dist/services/form-layout-source/compile.js +262 -0
  117. package/dist/services/form-layout-source/compile.js.map +1 -0
  118. package/dist/services/form-layout-source/creation.d.ts +18 -0
  119. package/dist/services/form-layout-source/creation.d.ts.map +1 -0
  120. package/dist/services/form-layout-source/creation.js +42 -0
  121. package/dist/services/form-layout-source/creation.js.map +1 -0
  122. package/dist/services/form-layout-source/excel-extractor.d.ts +7 -0
  123. package/dist/services/form-layout-source/excel-extractor.d.ts.map +1 -0
  124. package/dist/services/form-layout-source/excel-extractor.js +342 -0
  125. package/dist/services/form-layout-source/excel-extractor.js.map +1 -0
  126. package/dist/services/form-layout-source/image-border.d.ts +9 -0
  127. package/dist/services/form-layout-source/image-border.d.ts.map +1 -0
  128. package/dist/services/form-layout-source/image-border.js +128 -0
  129. package/dist/services/form-layout-source/image-border.js.map +1 -0
  130. package/dist/services/form-layout-source/image-observation.d.ts +14 -0
  131. package/dist/services/form-layout-source/image-observation.d.ts.map +1 -0
  132. package/dist/services/form-layout-source/image-observation.js +90 -0
  133. package/dist/services/form-layout-source/image-observation.js.map +1 -0
  134. package/dist/services/form-layout-source/image-review.d.ts +32 -0
  135. package/dist/services/form-layout-source/image-review.d.ts.map +1 -0
  136. package/dist/services/form-layout-source/image-review.js +266 -0
  137. package/dist/services/form-layout-source/image-review.js.map +1 -0
  138. package/dist/services/form-layout-source/image-style.d.ts +16 -0
  139. package/dist/services/form-layout-source/image-style.d.ts.map +1 -0
  140. package/dist/services/form-layout-source/image-style.js +539 -0
  141. package/dist/services/form-layout-source/image-style.js.map +1 -0
  142. package/dist/services/form-layout-source/json.d.ts +3 -0
  143. package/dist/services/form-layout-source/json.d.ts.map +1 -0
  144. package/dist/services/form-layout-source/json.js +33 -0
  145. package/dist/services/form-layout-source/json.js.map +1 -0
  146. package/dist/services/form-layout-source/presentation.d.ts +23 -0
  147. package/dist/services/form-layout-source/presentation.d.ts.map +1 -0
  148. package/dist/services/form-layout-source/presentation.js +174 -0
  149. package/dist/services/form-layout-source/presentation.js.map +1 -0
  150. package/dist/services/form-layout-source/preview.d.ts +4 -0
  151. package/dist/services/form-layout-source/preview.d.ts.map +1 -0
  152. package/dist/services/form-layout-source/preview.js +49 -0
  153. package/dist/services/form-layout-source/preview.js.map +1 -0
  154. package/dist/services/form-layout-source/schema.d.ts +20 -0
  155. package/dist/services/form-layout-source/schema.d.ts.map +1 -0
  156. package/dist/services/form-layout-source/schema.js +149 -0
  157. package/dist/services/form-layout-source/schema.js.map +1 -0
  158. package/dist/services/form-layout-source/source-grid.d.ts +8 -0
  159. package/dist/services/form-layout-source/source-grid.d.ts.map +1 -0
  160. package/dist/services/form-layout-source/source-grid.js +61 -0
  161. package/dist/services/form-layout-source/source-grid.js.map +1 -0
  162. package/dist/services/form-layout-source/types.d.ts +242 -0
  163. package/dist/services/form-layout-source/types.d.ts.map +1 -0
  164. package/dist/services/form-layout-source/types.js +2 -0
  165. package/dist/services/form-layout-source/types.js.map +1 -0
  166. package/dist/services/form-layout-source/verify.d.ts +14 -0
  167. package/dist/services/form-layout-source/verify.d.ts.map +1 -0
  168. package/dist/services/form-layout-source/verify.js +226 -0
  169. package/dist/services/form-layout-source/verify.js.map +1 -0
  170. package/dist/services/form-linkage-condition.d.ts +15 -0
  171. package/dist/services/form-linkage-condition.d.ts.map +1 -1
  172. package/dist/services/form-linkage-condition.js +19 -10
  173. package/dist/services/form-linkage-condition.js.map +1 -1
  174. package/dist/services/form-obj-meta.d.ts +72 -0
  175. package/dist/services/form-obj-meta.d.ts.map +1 -0
  176. package/dist/services/form-obj-meta.js +103 -0
  177. package/dist/services/form-obj-meta.js.map +1 -0
  178. package/dist/services/form-sub-detail.d.ts +25 -0
  179. package/dist/services/form-sub-detail.d.ts.map +1 -1
  180. package/dist/services/form-sub-detail.js +64 -0
  181. package/dist/services/form-sub-detail.js.map +1 -1
  182. package/dist/services/validate-help.d.ts +25 -0
  183. package/dist/services/validate-help.d.ts.map +1 -0
  184. package/dist/services/validate-help.js +29 -0
  185. package/dist/services/validate-help.js.map +1 -0
  186. package/dist/services/workflow-operator.d.ts +12 -5
  187. package/dist/services/workflow-operator.d.ts.map +1 -1
  188. package/dist/services/workflow-operator.js +41 -16
  189. package/dist/services/workflow-operator.js.map +1 -1
  190. package/package.json +3 -1
  191. package/skill-docs/SKILL.md +38 -165
  192. package/skill-docs/_catalog.md +4 -1
  193. package/skill-docs/actionflows/references/components/document/DocumentSave.md +17 -17
  194. package/skill-docs/actionflows/references/components/workflow/ApproveCompletelyDelete.md +29 -0
  195. package/skill-docs/actionflows/references/components/workflow/ApproveDelete.md +1 -1
  196. package/skill-docs/assets/schemas/image-style-observation.schema.json +1355 -0
  197. package/skill-docs/references/coding/guide-page-code.md +2 -0
  198. package/skill-docs/references/coding/ref-compile-rules.md +2 -0
  199. package/skill-docs/references/common/capability-boundaries.md +15 -0
  200. package/skill-docs/references/common/guide-install.md +44 -0
  201. package/skill-docs/references/common/guide-plan-template.md +167 -164
  202. package/skill-docs/references/common/map.md +9 -0
  203. package/skill-docs/references/common/ref-cli-commands.md +650 -635
  204. package/skill-docs/references/form/guide-create-form.md +2 -0
  205. package/skill-docs/references/form/guide-field-linkage.md +185 -58
  206. package/skill-docs/references/form/guide-form-formula-functions.md +354 -343
  207. package/skill-docs/references/form/guide-form-layout-planning.md +6 -0
  208. package/skill-docs/references/form/guide-form-layout-source.md +366 -0
  209. package/skill-docs/references/form/guide-form-linkage.md +56 -66
  210. package/skill-docs/references/form/guide-form-view.md +1 -1
  211. package/skill-docs/references/form/guide-formula-linkage.md +44 -1
  212. package/skill-docs/references/workflow/guide-workflow.md +1 -1
@@ -3,13 +3,14 @@ import * as workflowSource from './workflow_source.js';
3
3
  import * as personSource from './person_source.js';
4
4
  import * as contextSource from './context_source.js';
5
5
  import * as hrmSource from './hrm_source.js';
6
+ import * as documentSource from './document_source.js';
6
7
  import { completeEbuilder, pickEbuilderBrowserRow } from './ebuilder_source.js';
7
8
  import { resolveHttpBindings } from './http_source.js';
8
9
  import { registerTargetFormFields, registerTargetDetailFields, registerWorkflowFieldIds, registerWorkflowContextFields, getWorkflowFieldIds, getWorkflowDetailFields, getWorkflowDetailNames, getTargetFormFields, getTargetDetailFields, } from './runtime_metadata.js';
9
10
  // workflow_id → 目标表单 id(进程缓存)
10
11
  const FORM_ID_CACHE = {};
11
12
  import { ContextStore, PlatformContextProvider } from './context_provider.js';
12
- import { hydrateContextReferences, hydrateQueryResultReferences, queryNodeContext } from './context_preflight.js';
13
+ import { hydrateContextReferences, hydrateQueryResultReferences, queryNodeContext, resolveContextGroupRoot, } from './context_preflight.js';
13
14
  import { get as getComponent } from './components/index.js';
14
15
  import { defaultQueryFieldsAll } from './query_field_defaults.js';
15
16
  import { getStepBranches } from './step_branches.js';
@@ -524,6 +525,112 @@ export async function resolveFixedPeople(plan, client) {
524
525
  (plan._autoResources ??= []).push(...records);
525
526
  return records;
526
527
  }
528
+ function documentFolderRows(response) {
529
+ const data = response && typeof response === 'object' && 'data' in response ? response.data : response;
530
+ if (Array.isArray(data))
531
+ return data;
532
+ if (Array.isArray(data?.data))
533
+ return data.data;
534
+ if (Array.isArray(data?.rows))
535
+ return data.rows;
536
+ if (Array.isArray(data?.list))
537
+ return data.list;
538
+ if (Array.isArray(data?.records))
539
+ return data.records;
540
+ return [];
541
+ }
542
+ function documentFolderId(row) {
543
+ return String(row?.id ?? row?.folderId ?? row?.fileFolderId ?? row?.value ?? '').trim();
544
+ }
545
+ function documentFolderNames(row) {
546
+ return [row?.name, row?.content, row?.title, row?.username, row?.path, row?.folderPath]
547
+ .filter((value) => value !== undefined && value !== null && String(value).trim() !== '')
548
+ .map((value) => String(value).trim());
549
+ }
550
+ function fixedDocumentFolderSelector(value) {
551
+ if (isDynamicAssignment(value))
552
+ return null;
553
+ const raw = value && typeof value === 'object' && value.kind === 'fixed' ? value.value : value;
554
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw))
555
+ return null;
556
+ if (raw.type && raw.config && !raw.kind) {
557
+ const origin = Array.isArray(raw.config.originValue) ? raw.config.originValue[0] : raw.config.originValue;
558
+ return fixedDocumentFolderSelector(origin);
559
+ }
560
+ return {
561
+ id: String(raw.id ?? raw.folderId ?? raw.fileFolderId ?? raw.value ?? '').trim(),
562
+ name: String(raw.name ?? raw.content ?? raw.title ?? raw.username ?? raw.path ?? '').trim(),
563
+ };
564
+ }
565
+ function normalizeDocumentFolderBrowser(row) {
566
+ if (!row || typeof row !== 'object' || Array.isArray(row))
567
+ return row;
568
+ const normalized = { ...row };
569
+ if (normalized.name === undefined || normalized.name === null || String(normalized.name).trim() === '') {
570
+ const fallbackName = normalized.title ?? normalized.content ?? normalized.username ?? normalized.path ?? normalized.folderPath;
571
+ if (fallbackName !== undefined && fallbackName !== null && String(fallbackName).trim() !== '') {
572
+ normalized.name = String(fallbackName);
573
+ }
574
+ }
575
+ if (normalized.key && typeof normalized.key === 'object' && !Array.isArray(normalized.key)
576
+ && Object.keys(normalized.key).length === 0) {
577
+ delete normalized.key;
578
+ }
579
+ return normalized;
580
+ }
581
+ /**
582
+ * DocumentSave.fileFolder 必须来自当前租户的文档目录 Browser。
583
+ * 只补全固定值;动态 FormulaBean 和已经构造好的 FormulaBean 不做目录搜索。
584
+ */
585
+ export async function resolveFixedDocumentFolders(plan, client) {
586
+ const records = [];
587
+ const targets = [...walkPlanSteps(plan.actions || [])].filter((step) => {
588
+ if (String(step.type || '') !== 'DocumentSave')
589
+ return false;
590
+ const value = step.params?.fileFolder;
591
+ return value !== undefined && value !== null && value !== '' && !isDynamicAssignment(value)
592
+ && !(value && typeof value === 'object' && value.type && value.config && !value.kind);
593
+ });
594
+ if (!targets.length)
595
+ return records;
596
+ const rows = await documentSource.esbCreateFolderComponentFolder(client, '');
597
+ const folders = documentFolderRows(rows);
598
+ const cache = new Map();
599
+ for (const step of targets) {
600
+ const params = step.params || {};
601
+ const raw = params.fileFolder;
602
+ if (raw === undefined || raw === null || raw === '' || isDynamicAssignment(raw))
603
+ continue;
604
+ if (raw && typeof raw === 'object' && raw.type && raw.config && !raw.kind)
605
+ continue;
606
+ const selector = fixedDocumentFolderSelector(raw);
607
+ if (!selector || (!selector.id && !selector.name)) {
608
+ throw new Error('DocumentSave.fileFolder 固定值必须包含真实文件夹 id 或 name;不能凭空生成目录对象');
609
+ }
610
+ const cacheKey = `${selector.id}\u0000${selector.name}`;
611
+ let matches = cache.get(cacheKey);
612
+ if (!matches) {
613
+ matches = selector.id
614
+ ? folders.filter((folder) => documentFolderId(folder) === selector.id)
615
+ : folders.filter((folder) => documentFolderNames(folder).includes(selector.name));
616
+ cache.set(cacheKey, matches);
617
+ }
618
+ if (matches.length !== 1) {
619
+ const target = selector.id || selector.name;
620
+ throw new Error(`DocumentSave.fileFolder 未能从文档文件夹 Browser 唯一匹配 '${target}'(匹配数: ${matches.length})`);
621
+ }
622
+ params.fileFolder = normalizeDocumentFolderBrowser(matches[0]);
623
+ records.push({
624
+ path: `${step.type}.fileFolder`,
625
+ resourceType: 'document_folder_browser',
626
+ value: { id: documentFolderId(matches[0]), name: documentFolderNames(matches[0])[0] || selector.name },
627
+ reason: '新建文档目标文件夹已通过 esbCreateFolderComponentFolder 补全为当前租户真实 Browser 对象',
628
+ });
629
+ }
630
+ if (records.length)
631
+ (plan._autoResources ??= []).push(...records);
632
+ return records;
633
+ }
527
634
  function isDynamicAssignment(value) {
528
635
  const kind = String(value?.kind ?? value?.assignmentKind ?? '').toLowerCase();
529
636
  return ['context', 'reference', 'system_variable', 'variable', 'constant', 'function', 'formula', 'query_result', 'transform'].includes(kind);
@@ -1690,6 +1797,12 @@ export async function preflightContext(plan, appId, client) {
1690
1797
  }
1691
1798
  await fillRequiredTriggerOperator(plan, client);
1692
1799
  await resolveFixedPeople(plan, client);
1800
+ try {
1801
+ await resolveFixedDocumentFolders(plan, client);
1802
+ }
1803
+ catch (error) {
1804
+ errors.push(`DocumentSave 目标文件夹查询失败: ${String(error?.message || error)}`);
1805
+ }
1693
1806
  await resolveEntrustFields(plan, client, errors);
1694
1807
  await resolveHrmFieldAssignments(plan, client, errors);
1695
1808
  await resolveHrmAlterTypeFieldAssignments(plan, client, errors);
@@ -1914,11 +2027,20 @@ export async function preflightContext(plan, appId, client) {
1914
2027
  for (const f of v.fields || []) {
1915
2028
  if (!f || typeof f !== 'object')
1916
2029
  continue;
2030
+ const componentType = f.componentType || v.component;
2031
+ const tablePrimaryKey = resolveContextGroupRoot(f, v, componentType);
2032
+ const tableName = String(f.tableName || v.name || v.label || tablePrimaryKey).trim();
1917
2033
  if (f.showName && f.componentKey)
1918
2034
  eventFieldTypes[String(f.showName)] = String(f.componentKey);
1919
2035
  if (f.showName) {
1920
2036
  const pk = String(f.paramKey || '');
1921
- eventContextFields.push({ ...f, componentType: f.componentType || v.component });
2037
+ eventContextFields.push({
2038
+ ...f,
2039
+ componentType,
2040
+ tablePrimaryKey,
2041
+ tableName,
2042
+ contextGroup: tablePrimaryKey,
2043
+ });
1922
2044
  const idx = seenPk[String(f.showName)];
1923
2045
  if (idx === undefined) {
1924
2046
  seenPk[String(f.showName)] = eventSourceFields.length;
@@ -1928,7 +2050,10 @@ export async function preflightContext(plan, appId, client) {
1928
2050
  paramType: String(f.paramType || '').toLowerCase(),
1929
2051
  paramKey: pk,
1930
2052
  id: String(f.id || ''),
1931
- componentType: f.componentType || v.component,
2053
+ componentType,
2054
+ tablePrimaryKey,
2055
+ tableName,
2056
+ contextGroup: tablePrimaryKey,
1932
2057
  });
1933
2058
  }
1934
2059
  else if (pk.endsWith('[]') && !String(eventSourceFields[idx].paramKey).endsWith('[]')) {