@notmrabhi/flowforge 0.1.101 → 0.1.103

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 (40) hide show
  1. package/dist/{SchemaBuilderDrawer-CF4cJeXJ.js → SchemaBuilderDrawer-BTTVCnm_.js} +2 -2
  2. package/dist/{SchemaBuilderDrawer-CF4cJeXJ.js.map → SchemaBuilderDrawer-BTTVCnm_.js.map} +1 -1
  3. package/dist/{SchemaBuilderDrawer-CtT0j0WY.js → SchemaBuilderDrawer-BlZudF-G.js} +2 -2
  4. package/dist/{SchemaBuilderDrawer-CtT0j0WY.js.map → SchemaBuilderDrawer-BlZudF-G.js.map} +1 -1
  5. package/dist/{WorkflowExecutionHistory-6X5WPDN6.js → WorkflowExecutionHistory-BQ7W4WXX.js} +2 -2
  6. package/dist/{WorkflowExecutionHistory-6X5WPDN6.js.map → WorkflowExecutionHistory-BQ7W4WXX.js.map} +1 -1
  7. package/dist/{WorkflowExecutionHistory-jMlntXkG.js → WorkflowExecutionHistory-CmZHRJdi.js} +2 -2
  8. package/dist/{WorkflowExecutionHistory-jMlntXkG.js.map → WorkflowExecutionHistory-CmZHRJdi.js.map} +1 -1
  9. package/dist/buildBackendPayload-BKnT4KL8.js +2 -0
  10. package/dist/buildBackendPayload-BKnT4KL8.js.map +1 -0
  11. package/dist/{buildBackendPayload-TJ27pbpx.js → buildBackendPayload-BU4ZV563.js} +53 -51
  12. package/dist/buildBackendPayload-BU4ZV563.js.map +1 -0
  13. package/dist/canvas.cjs +1 -1
  14. package/dist/canvas.js +1 -1
  15. package/dist/core.cjs +1 -1
  16. package/dist/core.d.ts +7 -0
  17. package/dist/core.js +1 -1
  18. package/dist/form.cjs +1 -1
  19. package/dist/form.js +2 -2
  20. package/dist/{index-Dj-p10sr.js → index-1pRdFITB.js} +2 -2
  21. package/dist/{index-Dj-p10sr.js.map → index-1pRdFITB.js.map} +1 -1
  22. package/dist/{index-BW1ACtO5.js → index-BH3lAQXx.js} +6 -6
  23. package/dist/index-BH3lAQXx.js.map +1 -0
  24. package/dist/{index-DrduWLV7.js → index-D4LWy_bT.js} +2 -2
  25. package/dist/{index-DrduWLV7.js.map → index-D4LWy_bT.js.map} +1 -1
  26. package/dist/{index-DiT-JDHC.js → index-DfM3lQ0R.js} +2 -2
  27. package/dist/{index-DiT-JDHC.js.map → index-DfM3lQ0R.js.map} +1 -1
  28. package/dist/{index-DfJ_w7XO.js → index-DxnhBosZ.js} +241 -235
  29. package/dist/index-DxnhBosZ.js.map +1 -0
  30. package/dist/{index-CyHfUy0G.js → index-vtWDtEUr.js} +2 -2
  31. package/dist/{index-CyHfUy0G.js.map → index-vtWDtEUr.js.map} +1 -1
  32. package/dist/index.cjs +1 -1
  33. package/dist/index.d.ts +7 -0
  34. package/dist/index.js +4 -4
  35. package/package.json +1 -1
  36. package/dist/buildBackendPayload-GM9No65b.js +0 -2
  37. package/dist/buildBackendPayload-GM9No65b.js.map +0 -1
  38. package/dist/buildBackendPayload-TJ27pbpx.js.map +0 -1
  39. package/dist/index-BW1ACtO5.js.map +0 -1
  40. package/dist/index-DfJ_w7XO.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ "use strict";const j={triggerToCategory:{},schedulerEventTypes:[],conditionPathPrefix:"",defaultWorkflowCategory:"",endEventIds:{success:"endEventSuccess",failure:"endEventFailure",rejected:"endEventRejected"},endEventNames:{success:"Success",failure:"Failure",rejected:"Rejected"},startEventId:"startEvent",triggerConfigDefaults:{}};function S(e){if(!e||typeof e!="object")return{};const t={};return Object.keys(e).forEach(s=>{s.startsWith("_")||(t[s]=e[s])}),t}const k=new Set(["start","end","triggerFixed","addTrigger","addStep"]),K=e=>!!e&&!k.has(String(e.kind??""));function T(e,t){return e==null?"":String(e).replace(/\$\{(\w+)\}/g,(s,o)=>Object.prototype.hasOwnProperty.call(t,o)?String(t[o]):s)}function B(e,t){var n,E,u,l,g;if(!e||typeof e!="object")return"";const{from:s,key:o,value:r}=e;return s==="literal"?r===void 0?"":String(r):s==="task"?String(((n=t.task)==null?void 0:n[o??""])??""):s==="ctx"?String(((E=t.ctx)==null?void 0:E[o??""])??""):s==="slot"?String(((u=t.slot)==null?void 0:u[o??""])??""):s==="formData"?String(((g=(l=t.slot)==null?void 0:l.formData)==null?void 0:g[o??""])??""):""}function V(e,t){var o,r,n;const s=e==null?void 0:e.source;if(!s)return"";if(s.type==="literal")return typeof s.value=="string"?s.value:JSON.stringify(s.value??"");if(s.type==="json"||s.type==="taskConfig"){const E=s.shape||{},u={};return Object.keys(E).forEach(l=>{u[l]=B(E[l],t)}),JSON.stringify(u)}if(s.type==="formData"){if(s.passthrough){const E=new Set(s.exclude||[]),u={},l=((o=t.slot)==null?void 0:o.formData)??{};Object.keys(l).forEach(m=>{m.startsWith("_")||E.has(m)||(u[m]=l[m])});const g=s.wrapKey?{[s.wrapKey]:u}:u;return JSON.stringify(g)}return String(((n=(r=t.slot)==null?void 0:r.formData)==null?void 0:n[s.key??""])??"")}return""}function W(e,t){if(!(!e||typeof e!="object"||!t))return t.split(".").reduce((s,o)=>{if(!(s==null||typeof s!="object"))return s[o]},e)}function J(e,t,s){var v;const o=e.operatorMap||{},r=e.valuesField||"groups",n=i=>{const a=o[String((i==null?void 0:i.operator)??"")]??"==",p=`${s}.${(i==null?void 0:i.key)??(i==null?void 0:i.field)??""}`,y=`'${String((i==null?void 0:i.value)??"")}'`;return a.startsWith(".")?`${p}${a}(${y})`:a.startsWith("!.")?`!${p}${a.slice(1)}(${y})`:`${p} ${a} ${y}`},E=i=>{var d,h;const a=Array.isArray(i)?i:[];if(a.length===0)return null;const p=a.map(n),f=((d=a[0])==null?void 0:d.connector)==="or"||((h=a[0])==null?void 0:h.logicalOperator)==="OR"?"||":"&&";return p.join(` ${f} `)},u=[];let l=1;const g=(i,a)=>{u.push({id:`rule${l}`,inputEntries:[{id:`rule${l}InputEntry1`,text:i?`\${(${i})}`:""}],outputEntries:[{id:`rule${l}OutputEntry1`,text:`"${a}"`}]}),l+=1},m=Array.isArray((v=t==null?void 0:t.formData)==null?void 0:v.groupBlocks)?t.formData.groupBlocks:[];if(m.length>0)return m.forEach(i=>{const a=Array.isArray(i==null?void 0:i[r])?i[r]:[],p=E(i==null?void 0:i.conditions);a.forEach(y=>g(p,y))}),u;const $=(t==null?void 0:t.formData)??{},w=$._conditionConfig??$.conditionConfig,C=[];if(w&&typeof w=="object"&&Object.keys(w).forEach(i=>{const a=w[i],p=E(a);p&&C.push(p);const y=Object.prototype.hasOwnProperty.call($,i)?$[i]:W($,i);Array.isArray(y)?y.forEach(f=>{const d=typeof f=="object"&&f!==null?f.value??f.label??f:f;g(p,d)}):y!=null&&y!==""?g(p,y):p&&g(p,"")}),e.fallback==="negation"){const i=e.fallbackField||"fallback",a=$[i],p=Array.isArray(a)?a:a!=null&&a!==""?[a]:[];if(p.length>0){const y=C.length>0?`!(${C.map(f=>`(${f})`).join(" || ")})`:null;p.forEach(f=>{const d=typeof f=="object"&&f!==null?f.value??f.label??f:f;g(y,d)})}}return u}function G(e,t,s){return{mappings:[],name:e.tableName,decision:{id:e.tableName,name:e.tableName,decisionTable:{id:`decisionTable_${e.tableName}`,hitPolicy:e.hitPolicy||"FIRST",inputs:[{id:`input_${e.tableName}`,inputExpression:{id:`inputExpr_${e.tableName}`,typeRef:"string",text:e.inputExpr}}],outputs:(e.outputs||[]).map(o=>({id:o.id,label:o.label,typeRef:o.typeRef||"string",name:o.name})),rules:J(e,t,s)}}}}function M(e,t,s,o){var p,y,f;const r=(p=t==null?void 0:t.ui)==null?void 0:p.bpmnEmit;if(!r)return{serviceTasks:[{id:e.id,name:(t==null?void 0:t.name)||e.descriptorType,configuration:Array.isArray(t==null?void 0:t.configuration)?t.configuration:[],input:S(e.formData)}],gateways:[],callActivities:[],templateFlows:[],dmn:null,bpmnEntry:e.id,bpmnExit:e.id,outgoingConditions:{},endsNeeded:new Set};const n={id:e.id,endFailure:o.endEventIds.failure,endRejected:o.endEventIds.rejected,endSuccess:o.endEventIds.success},E={task:t,slot:e,ctx:s},u=(r.serviceTasks||[]).map(d=>({id:T(d.idTemplate,n),name:d.name,flowableClass:d.flowableClass,extensionElements:{fields:(d.extensionFields||[]).map(h=>({name:h.name,stringValue:V(h,E)}))}}));let l=null;const g=[];r.gateway&&(l=T(r.gateway.idTemplate,n),n.gateway=l,g.push({id:l,name:r.gateway.name}));const m=new Set,$=(r.templateFlows||[]).map(d=>{const h=T(d.from,n),b=T(d.to,n);return b===o.endEventIds.failure&&m.add(o.endEventIds.failure),b===o.endEventIds.rejected&&m.add(o.endEventIds.rejected),{id:d.idTemplate?T(d.idTemplate,n):`${h}-to-${b}`,sourceRef:h,targetRef:b,conditionExpression:d.condition?T(d.condition,n):null}}),w=[],C=r.dmnEmit?G(r.dmnEmit,e,o.conditionPathPrefix):null,v=((y=u[0])==null?void 0:y.id)??e.id,i=l??((f=u[u.length-1])==null?void 0:f.id)??e.id,a={};return Object.keys(r.outgoingConditions||{}).forEach(d=>{a[d]=T(r.outgoingConditions[d],n)}),{serviceTasks:u,gateways:g,callActivities:w,templateFlows:$,dmn:C,bpmnEntry:v,bpmnExit:i,outgoingConditions:a,endsNeeded:m}}function U(e){var N,A,R,F;const{state:t,tasksByKey:s,context:o,config:r}=e,n={...j,...r??{},triggerToCategory:{...j.triggerToCategory,...(r==null?void 0:r.triggerToCategory)??{}},schedulerEventTypes:(r==null?void 0:r.schedulerEventTypes)??j.schedulerEventTypes,endEventIds:{...j.endEventIds,...(r==null?void 0:r.endEventIds)??{}},endEventNames:{...j.endEventNames,...(r==null?void 0:r.endEventNames)??{}},triggerConfigDefaults:(r==null?void 0:r.triggerConfigDefaults)??j.triggerConfigDefaults},E=Array.isArray(t==null?void 0:t.slots)?t.slots:[],u=E.find(c=>c.kind==="triggerFixed"),l=(N=u==null?void 0:u.nodeData)==null?void 0:N.eventType,g=((A=u==null?void 0:u.nodeData)==null?void 0:A.type)||"event",m=(R=u==null?void 0:u.nodeData)==null?void 0:R.sources,$=Array.isArray(m)?m.map(c=>typeof c=="string"?c:(c==null?void 0:c.value)??(c==null?void 0:c.key)??"").filter(Boolean):[],w=n.triggerToCategory[l??""]??n.defaultWorkflowCategory,v=!!l&&n.schedulerEventTypes.includes(l)?["SCHEDULER"]:$,a=E.filter(K).map(c=>({slot:c,emit:M(c,s[c.descriptorType??""]??{},o,n)})),p=[],y=[],f=[],d=[],h=[],b=new Set;a.forEach(({emit:c})=>{p.push(...c.serviceTasks),y.push(...c.gateways),f.push(...c.callActivities),d.push(...c.templateFlows),c.dmn&&h.push(c.dmn),c.endsNeeded.forEach(I=>b.add(I))});const x=[];if(a.length>0){x.push({id:`${n.startEventId}-to-${a[0].emit.bpmnEntry}`,sourceRef:n.startEventId,targetRef:a[0].emit.bpmnEntry,conditionExpression:null});for(let I=0;I<a.length-1;I+=1){const D=a[I].emit,_=a[I+1].emit,L=D.outgoingConditions.success??D.outgoingConditions.pass??D.outgoingConditions.approved??null;x.push({id:`${D.bpmnExit}-to-${_.bpmnEntry}`,sourceRef:D.bpmnExit,targetRef:_.bpmnEntry,conditionExpression:L})}const c=a[a.length-1].emit;x.push({id:`${c.bpmnExit}-to-${n.endEventIds.success}`,sourceRef:c.bpmnExit,targetRef:n.endEventIds.success,conditionExpression:null})}else x.push({id:`${n.startEventId}-to-${n.endEventIds.success}`,sourceRef:n.startEventId,targetRef:n.endEventIds.success,conditionExpression:null});const O=[{id:n.endEventIds.success,name:n.endEventNames.success,executionListener:null},...b.has(n.endEventIds.failure)?[{id:n.endEventIds.failure,name:n.endEventNames.failure}]:[],...b.has(n.endEventIds.rejected)?[{id:n.endEventIds.rejected,name:n.endEventNames.rejected}]:[]],P={id:n.startEventId,name:"Start",...g==="event"?{messageEventDefinition:{messageRef:`msg_${(l||"EVENT").toLowerCase()}_${v.length>0?v.join("_").toLowerCase():"default"}_${o.customerKey}`}}:{}};return{canvasState:{slots:E,branches:(t==null?void 0:t.branches)??{}},bpmn:{customerId:`${o.customerKey}`,workflowCategory:w,sources:v,process:{name:o.workflowName,isExecutable:"true"},startEvent:P,endEvent:O,sequenceFlows:[...x,...d],exclusiveGateways:y,serviceTasks:p,callActivities:f},...g==="event"?{message:{id:`msg_${(l||"event").toLowerCase()}_${v.length>0?v.join("_").toLowerCase():"default"}_${o.customerKey}`,name:`msg_${(l||"event").toLowerCase()}_${v.length>0?v.join("_").toLowerCase():"default"}_${o.customerKey}`},dmns:h}:{eventConfig:[{eventType:g,config:{type:g,...n.triggerConfigDefaults[g]??{},...S((F=u==null?void 0:u.formData)==null?void 0:F[g])}}]}}}exports.buildBackendPayload=U;
2
+ //# sourceMappingURL=buildBackendPayload-BKnT4KL8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildBackendPayload-BKnT4KL8.js","sources":["../src/payload/buildBackendPayload.ts"],"sourcesContent":["/**\n * buildBackendPayload — generic BPMN/DMN/canvasState emitter driven by each\n * task's `ui.bpmnEmit` block. Consumer ships per-task bpmnEmit specs from\n * the backend; the package handles the walk.\n *\n * Originally lived in IAM as `flowforgeStateToBackendJson`. Moved into the\n * package so every consumer gets the same emitter — and so DMN/filter/\n * approval fixes ship once, to everyone.\n *\n * Consumer injects:\n * - canvasState — `{ slots, branches }` from the canvas\n * - tasksByKey — `{ [descriptorType]: ApplicationTask }` lookup\n * - context — host-specific scalars (customerKey, workflowName)\n * - config — IAM-shaped defaults (path prefix, end-event ids,\n * trigger→category map, scheduler events)\n *\n * Returns a JSON object ready to POST to the backend.\n */\n\n// ─── Types ──────────────────────────────────────────────────────────────────\n\nexport type CanvasSlot = {\n id: string;\n kind?: string;\n descriptorType?: string;\n nodeData?: Record<string, unknown>;\n formData?: Record<string, unknown>;\n [key: string]: unknown;\n};\n\nexport type CanvasState = {\n slots?: CanvasSlot[];\n branches?: Record<string, unknown>;\n};\n\nexport interface FieldRef {\n from: 'literal' | 'task' | 'ctx' | 'slot' | 'formData';\n key?: string;\n value?: unknown;\n}\n\nexport interface ExtensionFieldSpec {\n name: string;\n source?: {\n type: 'literal' | 'json' | 'taskConfig' | 'formData';\n value?: unknown;\n shape?: Record<string, FieldRef>;\n passthrough?: boolean;\n exclude?: string[];\n key?: string;\n /**\n * For a `formData` passthrough: wrap the resulting object under this key\n * before stringifying. e.g. `wrapKey: 'input'` turns\n * `{noOfDays, action}` into `{\"input\":{\"noOfDays\":…,\"action\":…}}` — the\n * shape the backend expects for `inputConfiguration`.\n */\n wrapKey?: string;\n };\n}\n\nexport interface ServiceTaskSpec {\n idTemplate: string;\n name?: string;\n flowableClass?: string;\n extensionFields?: ExtensionFieldSpec[];\n}\n\nexport interface GatewaySpec {\n idTemplate: string;\n name?: string;\n}\n\nexport interface TemplateFlowSpec {\n from: string;\n to: string;\n idTemplate?: string;\n condition?: string | null;\n}\n\nexport interface DmnOutputSpec {\n id: string;\n label?: string;\n name: string;\n typeRef?: string;\n}\n\nexport interface DmnEmitSpec {\n tableName: string;\n inputExpr: string;\n hitPolicy?: string;\n outputs?: DmnOutputSpec[];\n operatorMap?: Record<string, string>;\n valuesField?: string;\n /**\n * Fallback strategy. `'negation'` emits an extra rule that fires only when\n * NONE of the configured conditions match — its output is the value(s) of\n * the form's `fallback` field. The expression is `!((c1) || (c2) || …)`.\n */\n fallback?: 'negation' | string;\n /** Form field holding the fallback value(s). Defaults to `fallback`. */\n fallbackField?: string;\n}\n\nexport interface BpmnEmitSpec {\n kind: 'linear' | 'gated' | 'filter' | 'approval';\n serviceTasks?: ServiceTaskSpec[];\n gateway?: GatewaySpec;\n templateFlows?: TemplateFlowSpec[];\n outgoingConditions?: Record<string, string>;\n dmnEmit?: DmnEmitSpec;\n callActivity?: Record<string, unknown>;\n}\n\nexport interface ApplicationTaskLike {\n name?: string;\n taskKey?: string;\n applicationUuid?: string;\n configuration?: unknown[];\n ui?: { bpmnEmit?: BpmnEmitSpec; [key: string]: unknown };\n [key: string]: unknown;\n}\n\nexport interface BuildPayloadContext {\n customerKey: string;\n workflowName: string;\n /** Anything else the host wants exposed via `from: 'ctx', key: '...'`. */\n [key: string]: unknown;\n}\n\nexport interface BuildPayloadConfig {\n /**\n * Map of trigger eventType → workflowCategory string. Defaults to a small\n * IAM-shaped fallback; consumers should pass the full map they use.\n */\n triggerToCategory?: Record<string, string>;\n /** eventType values that should set `sources: ['SCHEDULER']` and skip the message block. */\n schedulerEventTypes?: string[];\n /** DMN LHS prefix for condition expressions (default IAM-style). */\n conditionPathPrefix?: string;\n /** Fallback workflowCategory when eventType isn't mapped. */\n defaultWorkflowCategory?: string;\n /** End-event ids — override per backend convention. */\n endEventIds?: { success: string; failure: string; rejected: string };\n /** Names rendered on end events. */\n endEventNames?: { success: string; failure: string; rejected: string };\n /** Start event id used in the outer chain. */\n startEventId?: string;\n /**\n * Canonical default shape for a non-event trigger's `eventConfig.config`,\n * keyed by trigger `type` (e.g. `scheduler`). The backend expects the FULL\n * config object (all keys present, even when the user only set a few). The\n * package can't know a host's scheduler field names, so the host supplies\n * the neutral defaults here; the trigger slot's saved formData is merged on\n * top. Example:\n * { scheduler: { triggerFrequency: null, startDateTime: null, interval: 1,\n * timings: [], dateTime: null, daysOfMonth: [],\n * daysOfWeek: [], expression: null, timeZone: null } }\n */\n triggerConfigDefaults?: Record<string, Record<string, unknown>>;\n}\n\nexport interface BuildPayloadOptions {\n state: CanvasState;\n tasksByKey: Record<string, ApplicationTaskLike>;\n context: BuildPayloadContext;\n config?: BuildPayloadConfig;\n}\n\n// ─── Defaults ──────────────────────────────────────────────────────────────\n\n// Package defaults are deliberately neutral — anything tenant- or\n// product-specific (trigger event types, default category, the DMN LHS\n// prefix) MUST come from the consumer's `config`. We only ship defaults\n// for engine-neutral BPMN scalars (start/end ids and end-event names).\nconst DEFAULTS: Required<BuildPayloadConfig> = {\n triggerToCategory: {},\n schedulerEventTypes: [],\n conditionPathPrefix: '',\n defaultWorkflowCategory: '',\n endEventIds: {\n success: 'endEventSuccess',\n failure: 'endEventFailure',\n rejected: 'endEventRejected',\n },\n endEventNames: {\n success: 'Success',\n failure: 'Failure',\n rejected: 'Rejected',\n },\n startEventId: 'startEvent',\n triggerConfigDefaults: {},\n};\n\n/**\n * Strip FlowForge-internal, display-only keys (anything starting with `_`,\n * e.g. `_optionLabels`, `_conditionConfig`) from an object before it goes to\n * the backend. Returns a shallow copy.\n */\nfunction stripInternalKeys(obj: unknown): Record<string, unknown> {\n if (!obj || typeof obj !== 'object') return {};\n const out: Record<string, unknown> = {};\n Object.keys(obj as Record<string, unknown>).forEach((k) => {\n if (!k.startsWith('_')) out[k] = (obj as Record<string, unknown>)[k];\n });\n return out;\n}\n\nconst NON_TASK_KINDS = new Set([\n 'start',\n 'end',\n 'triggerFixed',\n 'addTrigger',\n 'addStep',\n]);\nconst isTaskSlot = (slot: CanvasSlot): boolean =>\n !!slot && !NON_TASK_KINDS.has(String(slot.kind ?? ''));\n\n// ─── Helpers ───────────────────────────────────────────────────────────────\n\nfunction interpolate(tpl: string | null | undefined, ctx: Record<string, unknown>): string {\n if (tpl == null) return '';\n return String(tpl).replace(/\\$\\{(\\w+)\\}/g, (m, k) =>\n Object.prototype.hasOwnProperty.call(ctx, k) ? String(ctx[k]) : m\n );\n}\n\ninterface ResolveCtx {\n task: ApplicationTaskLike;\n slot: CanvasSlot;\n ctx: BuildPayloadContext;\n}\n\nfunction resolveFieldRef(ref: FieldRef | undefined, ctx: ResolveCtx): string {\n if (!ref || typeof ref !== 'object') return '';\n const { from, key, value } = ref;\n if (from === 'literal') return value === undefined ? '' : String(value);\n if (from === 'task') return String((ctx.task as Record<string, unknown>)?.[key ?? ''] ?? '');\n if (from === 'ctx') return String((ctx.ctx as Record<string, unknown>)?.[key ?? ''] ?? '');\n if (from === 'slot') return String((ctx.slot as Record<string, unknown>)?.[key ?? ''] ?? '');\n if (from === 'formData') return String(ctx.slot?.formData?.[key ?? ''] ?? '');\n return '';\n}\n\nfunction buildExtensionStringValue(field: ExtensionFieldSpec, ctx: ResolveCtx): string {\n const source = field?.source;\n if (!source) return '';\n if (source.type === 'literal') {\n return typeof source.value === 'string'\n ? source.value\n : JSON.stringify(source.value ?? '');\n }\n if (source.type === 'json' || source.type === 'taskConfig') {\n const shape = source.shape || {};\n const out: Record<string, string> = {};\n Object.keys(shape).forEach((k) => {\n out[k] = resolveFieldRef(shape[k], ctx);\n });\n return JSON.stringify(out);\n }\n if (source.type === 'formData') {\n if (source.passthrough) {\n const exclude = new Set(source.exclude || []);\n const out: Record<string, unknown> = {};\n const fd = ctx.slot?.formData ?? {};\n Object.keys(fd).forEach((k) => {\n // Drop FlowForge-internal display keys (_optionLabels, _conditionConfig)\n // and any host-excluded keys — the backend wants the clean input only.\n if (k.startsWith('_')) return;\n if (!exclude.has(k)) out[k] = fd[k];\n });\n const wrapped = source.wrapKey ? { [source.wrapKey]: out } : out;\n return JSON.stringify(wrapped);\n }\n return String(ctx.slot?.formData?.[source.key ?? ''] ?? '');\n }\n return '';\n}\n\n/** Walk a dotted path against a plain object. Returns undefined on miss. */\nfunction getValueByPath(obj: unknown, path: string): unknown {\n if (!obj || typeof obj !== 'object' || !path) return undefined;\n return path.split('.').reduce<unknown>((acc, key) => {\n if (acc == null || typeof acc !== 'object') return undefined;\n return (acc as Record<string, unknown>)[key];\n }, obj);\n}\n\n// ─── DMN rule builder ──────────────────────────────────────────────────────\n\ninterface ConditionEntry {\n field?: string;\n fieldLabel?: string;\n key?: string;\n operator?: string;\n value?: string | number | boolean | null;\n connector?: 'and' | 'or';\n logicalOperator?: 'AND' | 'OR';\n}\n\nfunction buildDmnRules(\n dmnSpec: DmnEmitSpec,\n slot: CanvasSlot,\n pathPrefix: string\n): Array<{\n id: string;\n inputEntries: Array<{ id: string; text: string }>;\n outputEntries: Array<{ id: string; text: string }>;\n}> {\n const opMap = dmnSpec.operatorMap || {};\n const valuesField = dmnSpec.valuesField || 'groups';\n\n const toJuel = (cond: ConditionEntry): string => {\n const op = opMap[String(cond?.operator ?? '')] ?? '==';\n const lhs = `${pathPrefix}.${cond?.key ?? cond?.field ?? ''}`;\n const rhs = `'${String(cond?.value ?? '')}'`;\n if (op.startsWith('.')) return `${lhs}${op}(${rhs})`;\n if (op.startsWith('!.')) return `!${lhs}${op.slice(1)}(${rhs})`;\n return `${lhs} ${op} ${rhs}`;\n };\n\n const entriesToExpression = (entries: ConditionEntry[] | undefined): string | null => {\n const list = Array.isArray(entries) ? entries : [];\n if (list.length === 0) return null;\n const parts = list.map(toJuel);\n const isOr = list[0]?.connector === 'or' || list[0]?.logicalOperator === 'OR';\n const logical = isOr ? '||' : '&&';\n return parts.join(` ${logical} `);\n };\n\n const rules: Array<{\n id: string;\n inputEntries: Array<{ id: string; text: string }>;\n outputEntries: Array<{ id: string; text: string }>;\n }> = [];\n let ruleNum = 1;\n const pushRule = (expression: string | null, outputValue: unknown) => {\n rules.push({\n id: `rule${ruleNum}`,\n inputEntries: [\n {\n id: `rule${ruleNum}InputEntry1`,\n text: expression ? `\\${(${expression})}` : '',\n },\n ],\n outputEntries: [\n {\n id: `rule${ruleNum}OutputEntry1`,\n text: `\"${outputValue}\"`,\n },\n ],\n });\n ruleNum += 1;\n };\n\n // Shape A — IAM-legacy groupBlocks[].\n const blocks = Array.isArray(slot?.formData?.groupBlocks)\n ? (slot.formData!.groupBlocks as Array<{\n conditions?: ConditionEntry[];\n [k: string]: unknown;\n }>)\n : [];\n if (blocks.length > 0) {\n blocks.forEach((block) => {\n const values = Array.isArray(block?.[valuesField])\n ? (block[valuesField] as unknown[])\n : [];\n const expression = entriesToExpression(block?.conditions);\n values.forEach((v) => pushRule(expression, v));\n });\n return rules;\n }\n\n // Shape B — FlowForm When-builder.\n const fd = (slot?.formData ?? {}) as Record<string, unknown>;\n // eslint-disable-next-line no-underscore-dangle\n const condCfg = (fd._conditionConfig ?? fd.conditionConfig) as\n | Record<string, ConditionEntry[]>\n | undefined;\n // Collect every condition expression so a `negation` fallback can be the\n // negation of their union (fires only when none match).\n const allExpressions: string[] = [];\n if (condCfg && typeof condCfg === 'object') {\n Object.keys(condCfg).forEach((fieldKey) => {\n const conditions = condCfg[fieldKey];\n const expression = entriesToExpression(conditions);\n if (expression) allExpressions.push(expression);\n // The conditionConfig key can be either a plain field name OR a dotted\n // formik path (e.g. `attributeMapping.rules.0.targetField`). Resolve\n // both shapes — first try direct, then walk the path.\n const fieldValue =\n Object.prototype.hasOwnProperty.call(fd, fieldKey)\n ? fd[fieldKey]\n : getValueByPath(fd, fieldKey);\n if (Array.isArray(fieldValue)) {\n fieldValue.forEach((v) => {\n const out =\n typeof v === 'object' && v !== null\n ? (v as { value?: unknown; label?: unknown }).value ??\n (v as { label?: unknown }).label ??\n v\n : v;\n pushRule(expression, out);\n });\n } else if (\n fieldValue !== undefined &&\n fieldValue !== null &&\n fieldValue !== ''\n ) {\n pushRule(expression, fieldValue);\n } else if (expression) {\n pushRule(expression, '');\n }\n });\n }\n\n // ── Fallback rule (negation) — fires only when NONE of the conditions match.\n // Output = the form's `fallback` field value(s). With no conditions present,\n // there's nothing to negate, so the fallback becomes an always-true rule.\n if (dmnSpec.fallback === 'negation') {\n const fallbackKey = dmnSpec.fallbackField || 'fallback';\n const rawFallback = fd[fallbackKey];\n const fallbackValues = Array.isArray(rawFallback)\n ? rawFallback\n : rawFallback != null && rawFallback !== ''\n ? [rawFallback]\n : [];\n if (fallbackValues.length > 0) {\n const negation = allExpressions.length > 0\n ? `!(${allExpressions.map((e) => `(${e})`).join(' || ')})`\n : null;\n fallbackValues.forEach((v) => {\n const out =\n typeof v === 'object' && v !== null\n ? (v as { value?: unknown; label?: unknown }).value ??\n (v as { label?: unknown }).label ??\n v\n : v;\n pushRule(negation, out);\n });\n }\n }\n return rules;\n}\n\nfunction buildDmn(dmnSpec: DmnEmitSpec, slot: CanvasSlot, pathPrefix: string) {\n return {\n mappings: [],\n name: dmnSpec.tableName,\n decision: {\n id: dmnSpec.tableName,\n name: dmnSpec.tableName,\n decisionTable: {\n id: `decisionTable_${dmnSpec.tableName}`,\n hitPolicy: dmnSpec.hitPolicy || 'FIRST',\n inputs: [\n {\n id: `input_${dmnSpec.tableName}`,\n inputExpression: {\n id: `inputExpr_${dmnSpec.tableName}`,\n typeRef: 'string',\n text: dmnSpec.inputExpr,\n },\n },\n ],\n outputs: (dmnSpec.outputs || []).map((o) => ({\n id: o.id,\n label: o.label,\n typeRef: o.typeRef || 'string',\n name: o.name,\n })),\n rules: buildDmnRules(dmnSpec, slot, pathPrefix),\n },\n },\n };\n}\n\n// ─── Task emitter ──────────────────────────────────────────────────────────\n\ninterface Emission {\n serviceTasks: unknown[];\n gateways: Array<{ id: string; name?: string }>;\n callActivities: unknown[];\n templateFlows: Array<{\n id: string;\n sourceRef: string;\n targetRef: string;\n conditionExpression: string | null;\n }>;\n dmn: ReturnType<typeof buildDmn> | null;\n bpmnEntry: string;\n bpmnExit: string;\n outgoingConditions: Record<string, string>;\n endsNeeded: Set<string>;\n}\n\nfunction emitTask(\n slot: CanvasSlot,\n task: ApplicationTaskLike,\n saveCtx: BuildPayloadContext,\n cfg: Required<BuildPayloadConfig>\n): Emission {\n const spec = task?.ui?.bpmnEmit;\n if (!spec) {\n return {\n serviceTasks: [\n {\n id: slot.id,\n name: task?.name || slot.descriptorType,\n configuration: Array.isArray(task?.configuration) ? task.configuration : [],\n // Strip display-only keys (_optionLabels, _conditionConfig) — the\n // backend wants the clean task input only.\n input: stripInternalKeys(slot.formData),\n },\n ],\n gateways: [],\n callActivities: [],\n templateFlows: [],\n dmn: null,\n bpmnEntry: slot.id,\n bpmnExit: slot.id,\n outgoingConditions: {},\n endsNeeded: new Set(),\n };\n }\n\n const interpCtx: Record<string, unknown> = {\n id: slot.id,\n endFailure: cfg.endEventIds.failure,\n endRejected: cfg.endEventIds.rejected,\n endSuccess: cfg.endEventIds.success,\n };\n\n const ctx: ResolveCtx = { task, slot, ctx: saveCtx };\n\n const serviceTasks = (spec.serviceTasks || []).map((st) => ({\n id: interpolate(st.idTemplate, interpCtx),\n name: st.name,\n flowableClass: st.flowableClass,\n extensionElements: {\n fields: (st.extensionFields || []).map((f) => ({\n name: f.name,\n stringValue: buildExtensionStringValue(f, ctx),\n })),\n },\n }));\n\n let gatewayId: string | null = null;\n const gateways: Array<{ id: string; name?: string }> = [];\n if (spec.gateway) {\n gatewayId = interpolate(spec.gateway.idTemplate, interpCtx);\n interpCtx.gateway = gatewayId;\n gateways.push({ id: gatewayId, name: spec.gateway.name });\n }\n\n const endsNeeded = new Set<string>();\n const templateFlows = (spec.templateFlows || []).map((f) => {\n const source = interpolate(f.from, interpCtx);\n const target = interpolate(f.to, interpCtx);\n if (target === cfg.endEventIds.failure) endsNeeded.add(cfg.endEventIds.failure);\n if (target === cfg.endEventIds.rejected) endsNeeded.add(cfg.endEventIds.rejected);\n const id = f.idTemplate\n ? interpolate(f.idTemplate, interpCtx)\n : `${source}-to-${target}`;\n return {\n id,\n sourceRef: source,\n targetRef: target,\n conditionExpression: f.condition ? interpolate(f.condition, interpCtx) : null,\n };\n });\n\n const callActivities: unknown[] = [];\n const dmn = spec.dmnEmit ? buildDmn(spec.dmnEmit, slot, cfg.conditionPathPrefix) : null;\n\n const bpmnEntry = (serviceTasks[0] as { id?: string })?.id ?? slot.id;\n const bpmnExit =\n gatewayId ??\n (serviceTasks[serviceTasks.length - 1] as { id?: string })?.id ??\n slot.id;\n\n const outgoingConditions: Record<string, string> = {};\n Object.keys(spec.outgoingConditions || {}).forEach((branch) => {\n outgoingConditions[branch] = interpolate(\n spec.outgoingConditions![branch],\n interpCtx\n );\n });\n\n return {\n serviceTasks,\n gateways,\n callActivities,\n templateFlows,\n dmn,\n bpmnEntry,\n bpmnExit,\n outgoingConditions,\n endsNeeded,\n };\n}\n\n// ─── Main entry point ──────────────────────────────────────────────────────\n\n/**\n * Generate a backend-ready payload from canvas state + task definitions.\n *\n * @example\n * const payload = buildBackendPayload({\n * state: { slots, branches },\n * tasksByKey: { USER_CREATION: {...}, USER_GROUP_ASSIGNMENT: {...} },\n * context: { customerKey: '51995', workflowName: 'My WF' },\n * config: { triggerToCategory: { CUSTOM_TRIGGER: 'CUSTOM_CATEGORY' } },\n * });\n * await api.post('/process', payload);\n */\nexport function buildBackendPayload(opts: BuildPayloadOptions): Record<string, unknown> {\n const { state, tasksByKey, context, config } = opts;\n const cfg: Required<BuildPayloadConfig> = {\n ...DEFAULTS,\n ...(config ?? {}),\n triggerToCategory: { ...DEFAULTS.triggerToCategory, ...(config?.triggerToCategory ?? {}) },\n schedulerEventTypes: config?.schedulerEventTypes ?? DEFAULTS.schedulerEventTypes,\n endEventIds: { ...DEFAULTS.endEventIds, ...(config?.endEventIds ?? {}) },\n endEventNames: { ...DEFAULTS.endEventNames, ...(config?.endEventNames ?? {}) },\n triggerConfigDefaults: config?.triggerConfigDefaults ?? DEFAULTS.triggerConfigDefaults,\n };\n\n const slots = Array.isArray(state?.slots) ? state.slots! : [];\n\n // 1. Trigger metadata\n const triggerSlot = slots.find((s) => s.kind === 'triggerFixed');\n const eventType = (triggerSlot?.nodeData as { eventType?: string } | undefined)?.eventType;\n const triggerType =\n (triggerSlot?.nodeData as { type?: string } | undefined)?.type || 'event';\n const sourcesData = (triggerSlot?.nodeData as { sources?: unknown[] } | undefined)?.sources;\n const pickedSources = Array.isArray(sourcesData)\n ? sourcesData\n .map((s) =>\n typeof s === 'string'\n ? s\n : (s as { value?: string; key?: string })?.value ??\n (s as { value?: string; key?: string })?.key ??\n ''\n )\n .filter(Boolean)\n : [];\n const workflowCategory =\n cfg.triggerToCategory[eventType ?? ''] ?? cfg.defaultWorkflowCategory;\n const isSchedulerEvent =\n !!eventType && cfg.schedulerEventTypes.includes(eventType);\n const sources = isSchedulerEvent ? ['SCHEDULER'] : pickedSources;\n\n // 2. Walk each task slot through the emitter\n const taskSlots = slots.filter(isTaskSlot);\n const emissions = taskSlots.map((slot) => ({\n slot,\n emit: emitTask(slot, tasksByKey[slot.descriptorType ?? ''] ?? {}, context, cfg),\n }));\n\n // 3. Collect emitted parts\n const allServiceTasks: unknown[] = [];\n const allGateways: Array<{ id: string; name?: string }> = [];\n const allCallActivities: unknown[] = [];\n const allTemplateFlows: Array<{\n id: string;\n sourceRef: string;\n targetRef: string;\n conditionExpression: string | null;\n }> = [];\n const allDmns: unknown[] = [];\n const endsNeeded = new Set<string>();\n\n emissions.forEach(({ emit }) => {\n allServiceTasks.push(...emit.serviceTasks);\n allGateways.push(...emit.gateways);\n allCallActivities.push(...emit.callActivities);\n allTemplateFlows.push(...emit.templateFlows);\n if (emit.dmn) allDmns.push(emit.dmn);\n emit.endsNeeded.forEach((e) => endsNeeded.add(e));\n });\n\n // 4. Outer chain — link each task's exit to the next task's entry\n const outerFlows: Array<{\n id: string;\n sourceRef: string;\n targetRef: string;\n conditionExpression: string | null;\n }> = [];\n\n if (emissions.length > 0) {\n outerFlows.push({\n id: `${cfg.startEventId}-to-${emissions[0].emit.bpmnEntry}`,\n sourceRef: cfg.startEventId,\n targetRef: emissions[0].emit.bpmnEntry,\n conditionExpression: null,\n });\n\n for (let i = 0; i < emissions.length - 1; i += 1) {\n const cur = emissions[i].emit;\n const next = emissions[i + 1].emit;\n const condition =\n cur.outgoingConditions.success ??\n cur.outgoingConditions.pass ??\n cur.outgoingConditions.approved ??\n null;\n outerFlows.push({\n id: `${cur.bpmnExit}-to-${next.bpmnEntry}`,\n sourceRef: cur.bpmnExit,\n targetRef: next.bpmnEntry,\n conditionExpression: condition,\n });\n }\n\n const last = emissions[emissions.length - 1].emit;\n outerFlows.push({\n id: `${last.bpmnExit}-to-${cfg.endEventIds.success}`,\n sourceRef: last.bpmnExit,\n targetRef: cfg.endEventIds.success,\n conditionExpression: null,\n });\n } else {\n outerFlows.push({\n id: `${cfg.startEventId}-to-${cfg.endEventIds.success}`,\n sourceRef: cfg.startEventId,\n targetRef: cfg.endEventIds.success,\n conditionExpression: null,\n });\n }\n\n // 5. End events\n const endEvent: Array<{ id: string; name: string; executionListener?: null }> = [\n {\n id: cfg.endEventIds.success,\n name: cfg.endEventNames.success,\n executionListener: null,\n },\n ...(endsNeeded.has(cfg.endEventIds.failure)\n ? [{ id: cfg.endEventIds.failure, name: cfg.endEventNames.failure }]\n : []),\n ...(endsNeeded.has(cfg.endEventIds.rejected)\n ? [{ id: cfg.endEventIds.rejected, name: cfg.endEventNames.rejected }]\n : []),\n ];\n\n // 6. Start event\n const startEvent: Record<string, unknown> = {\n id: cfg.startEventId,\n name: 'Start',\n ...(triggerType === 'event'\n ? {\n messageEventDefinition: {\n messageRef: `msg_${(eventType || 'EVENT').toLowerCase()}_${\n sources.length > 0 ? sources.join('_').toLowerCase() : 'default'\n }_${context.customerKey}`,\n },\n }\n : {}),\n };\n\n // 7. Final payload\n const json: Record<string, unknown> = {\n canvasState: {\n slots,\n branches: state?.branches ?? {},\n },\n bpmn: {\n customerId: `${context.customerKey}`,\n workflowCategory,\n sources,\n process: {\n name: context.workflowName,\n isExecutable: 'true',\n },\n startEvent,\n endEvent,\n sequenceFlows: [...outerFlows, ...allTemplateFlows],\n exclusiveGateways: allGateways,\n serviceTasks: allServiceTasks,\n callActivities: allCallActivities,\n },\n ...(triggerType === 'event'\n ? {\n message: {\n id: `msg_${(eventType || 'event').toLowerCase()}_${\n sources.length > 0 ? sources.join('_').toLowerCase() : 'default'\n }_${context.customerKey}`,\n name: `msg_${(eventType || 'event').toLowerCase()}_${\n sources.length > 0 ? sources.join('_').toLowerCase() : 'default'\n }_${context.customerKey}`,\n },\n dmns: allDmns,\n }\n : {\n // Non-event trigger (e.g. scheduler). The saved config lives in the\n // trigger slot's formData under the trigger TYPE key — dotted field\n // ids like `scheduler.timeZone` get nested under `scheduler` on save.\n // eventType/`type` is the trigger TYPE ('scheduler'), NOT the workflow\n // category. Host-supplied defaults fill the canonical shape; saved\n // values override; internal `_*` keys are stripped.\n eventConfig: [\n {\n eventType: triggerType,\n config: {\n type: triggerType,\n ...(cfg.triggerConfigDefaults[triggerType] ?? {}),\n ...stripInternalKeys(\n (triggerSlot?.formData as Record<string, unknown> | undefined)?.[triggerType]\n ),\n },\n },\n ],\n }),\n };\n\n return json;\n}\n"],"names":["DEFAULTS","stripInternalKeys","obj","out","k","NON_TASK_KINDS","isTaskSlot","slot","interpolate","tpl","ctx","m","resolveFieldRef","ref","from","key","value","_a","_b","_c","_e","_d","buildExtensionStringValue","field","source","shape","exclude","fd","wrapped","getValueByPath","path","acc","buildDmnRules","dmnSpec","pathPrefix","opMap","valuesField","toJuel","cond","op","lhs","rhs","entriesToExpression","entries","list","parts","logical","rules","ruleNum","pushRule","expression","outputValue","blocks","block","values","v","condCfg","allExpressions","fieldKey","conditions","fieldValue","fallbackKey","rawFallback","fallbackValues","negation","e","buildDmn","emitTask","task","saveCtx","cfg","spec","interpCtx","serviceTasks","st","f","gatewayId","gateways","endsNeeded","templateFlows","target","callActivities","dmn","bpmnEntry","bpmnExit","outgoingConditions","branch","buildBackendPayload","opts","state","tasksByKey","context","config","slots","triggerSlot","s","eventType","triggerType","sourcesData","pickedSources","workflowCategory","sources","emissions","allServiceTasks","allGateways","allCallActivities","allTemplateFlows","allDmns","emit","outerFlows","i","cur","next","condition","last","endEvent","startEvent"],"mappings":"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"}
@@ -16,27 +16,27 @@ const j = {
16
16
  startEventId: "startEvent",
17
17
  triggerConfigDefaults: {}
18
18
  };
19
- function _(e) {
19
+ function S(e) {
20
20
  if (!e || typeof e != "object") return {};
21
21
  const t = {};
22
22
  return Object.keys(e).forEach((s) => {
23
23
  s.startsWith("_") || (t[s] = e[s]);
24
24
  }), t;
25
25
  }
26
- const k = /* @__PURE__ */ new Set([
26
+ const K = /* @__PURE__ */ new Set([
27
27
  "start",
28
28
  "end",
29
29
  "triggerFixed",
30
30
  "addTrigger",
31
31
  "addStep"
32
- ]), B = (e) => !!e && !k.has(String(e.kind ?? ""));
32
+ ]), k = (e) => !!e && !K.has(String(e.kind ?? ""));
33
33
  function T(e, t) {
34
34
  return e == null ? "" : String(e).replace(
35
35
  /\$\{(\w+)\}/g,
36
36
  (s, o) => Object.prototype.hasOwnProperty.call(t, o) ? String(t[o]) : s
37
37
  );
38
38
  }
39
- function K(e, t) {
39
+ function B(e, t) {
40
40
  var n, E, u, l, g;
41
41
  if (!e || typeof e != "object") return "";
42
42
  const { from: s, key: o, value: r } = e;
@@ -51,15 +51,17 @@ function V(e, t) {
51
51
  if (s.type === "json" || s.type === "taskConfig") {
52
52
  const E = s.shape || {}, u = {};
53
53
  return Object.keys(E).forEach((l) => {
54
- u[l] = K(E[l], t);
54
+ u[l] = B(E[l], t);
55
55
  }), JSON.stringify(u);
56
56
  }
57
57
  if (s.type === "formData") {
58
58
  if (s.passthrough) {
59
59
  const E = new Set(s.exclude || []), u = {}, l = ((o = t.slot) == null ? void 0 : o.formData) ?? {};
60
- return Object.keys(l).forEach((g) => {
61
- E.has(g) || (u[g] = l[g]);
62
- }), JSON.stringify(u);
60
+ Object.keys(l).forEach((m) => {
61
+ m.startsWith("_") || E.has(m) || (u[m] = l[m]);
62
+ });
63
+ const g = s.wrapKey ? { [s.wrapKey]: u } : u;
64
+ return JSON.stringify(g);
63
65
  }
64
66
  return String(((n = (r = t.slot) == null ? void 0 : r.formData) == null ? void 0 : n[s.key ?? ""]) ?? "");
65
67
  }
@@ -73,15 +75,15 @@ function W(e, t) {
73
75
  }, e);
74
76
  }
75
77
  function J(e, t, s) {
76
- var m;
78
+ var v;
77
79
  const o = e.operatorMap || {}, r = e.valuesField || "groups", n = (i) => {
78
80
  const a = o[String((i == null ? void 0 : i.operator) ?? "")] ?? "==", p = `${s}.${(i == null ? void 0 : i.key) ?? (i == null ? void 0 : i.field) ?? ""}`, y = `'${String((i == null ? void 0 : i.value) ?? "")}'`;
79
81
  return a.startsWith(".") ? `${p}${a}(${y})` : a.startsWith("!.") ? `!${p}${a.slice(1)}(${y})` : `${p} ${a} ${y}`;
80
82
  }, E = (i) => {
81
- var d, v;
83
+ var d, h;
82
84
  const a = Array.isArray(i) ? i : [];
83
85
  if (a.length === 0) return null;
84
- const p = a.map(n), f = ((d = a[0]) == null ? void 0 : d.connector) === "or" || ((v = a[0]) == null ? void 0 : v.logicalOperator) === "OR" ? "||" : "&&";
86
+ const p = a.map(n), f = ((d = a[0]) == null ? void 0 : d.connector) === "or" || ((h = a[0]) == null ? void 0 : h.logicalOperator) === "OR" ? "||" : "&&";
85
87
  return p.join(` ${f} `);
86
88
  }, u = [];
87
89
  let l = 1;
@@ -101,23 +103,23 @@ function J(e, t, s) {
101
103
  }
102
104
  ]
103
105
  }), l += 1;
104
- }, $ = Array.isArray((m = t == null ? void 0 : t.formData) == null ? void 0 : m.groupBlocks) ? t.formData.groupBlocks : [];
105
- if ($.length > 0)
106
- return $.forEach((i) => {
106
+ }, m = Array.isArray((v = t == null ? void 0 : t.formData) == null ? void 0 : v.groupBlocks) ? t.formData.groupBlocks : [];
107
+ if (m.length > 0)
108
+ return m.forEach((i) => {
107
109
  const a = Array.isArray(i == null ? void 0 : i[r]) ? i[r] : [], p = E(i == null ? void 0 : i.conditions);
108
110
  a.forEach((y) => g(p, y));
109
111
  }), u;
110
- const h = (t == null ? void 0 : t.formData) ?? {}, b = h._conditionConfig ?? h.conditionConfig, C = [];
111
- if (b && typeof b == "object" && Object.keys(b).forEach((i) => {
112
- const a = b[i], p = E(a);
112
+ const $ = (t == null ? void 0 : t.formData) ?? {}, w = $._conditionConfig ?? $.conditionConfig, C = [];
113
+ if (w && typeof w == "object" && Object.keys(w).forEach((i) => {
114
+ const a = w[i], p = E(a);
113
115
  p && C.push(p);
114
- const y = Object.prototype.hasOwnProperty.call(h, i) ? h[i] : W(h, i);
116
+ const y = Object.prototype.hasOwnProperty.call($, i) ? $[i] : W($, i);
115
117
  Array.isArray(y) ? y.forEach((f) => {
116
118
  const d = typeof f == "object" && f !== null ? f.value ?? f.label ?? f : f;
117
119
  g(p, d);
118
120
  }) : y != null && y !== "" ? g(p, y) : p && g(p, "");
119
121
  }), e.fallback === "negation") {
120
- const i = e.fallbackField || "fallback", a = h[i], p = Array.isArray(a) ? a : a != null && a !== "" ? [a] : [];
122
+ const i = e.fallbackField || "fallback", a = $[i], p = Array.isArray(a) ? a : a != null && a !== "" ? [a] : [];
121
123
  if (p.length > 0) {
122
124
  const y = C.length > 0 ? `!(${C.map((f) => `(${f})`).join(" || ")})` : null;
123
125
  p.forEach((f) => {
@@ -171,7 +173,7 @@ function M(e, t, s, o) {
171
173
  configuration: Array.isArray(t == null ? void 0 : t.configuration) ? t.configuration : [],
172
174
  // Strip display-only keys (_optionLabels, _conditionConfig) — the
173
175
  // backend wants the clean task input only.
174
- input: _(e.formData)
176
+ input: S(e.formData)
175
177
  }
176
178
  ],
177
179
  gateways: [],
@@ -193,24 +195,24 @@ function M(e, t, s, o) {
193
195
  name: d.name,
194
196
  flowableClass: d.flowableClass,
195
197
  extensionElements: {
196
- fields: (d.extensionFields || []).map((v) => ({
197
- name: v.name,
198
- stringValue: V(v, E)
198
+ fields: (d.extensionFields || []).map((h) => ({
199
+ name: h.name,
200
+ stringValue: V(h, E)
199
201
  }))
200
202
  }
201
203
  }));
202
204
  let l = null;
203
205
  const g = [];
204
206
  r.gateway && (l = T(r.gateway.idTemplate, n), n.gateway = l, g.push({ id: l, name: r.gateway.name }));
205
- const $ = /* @__PURE__ */ new Set(), h = (r.templateFlows || []).map((d) => {
206
- const v = T(d.from, n), w = T(d.to, n);
207
- return w === o.endEventIds.failure && $.add(o.endEventIds.failure), w === o.endEventIds.rejected && $.add(o.endEventIds.rejected), {
208
- id: d.idTemplate ? T(d.idTemplate, n) : `${v}-to-${w}`,
209
- sourceRef: v,
210
- targetRef: w,
207
+ const m = /* @__PURE__ */ new Set(), $ = (r.templateFlows || []).map((d) => {
208
+ const h = T(d.from, n), b = T(d.to, n);
209
+ return b === o.endEventIds.failure && m.add(o.endEventIds.failure), b === o.endEventIds.rejected && m.add(o.endEventIds.rejected), {
210
+ id: d.idTemplate ? T(d.idTemplate, n) : `${h}-to-${b}`,
211
+ sourceRef: h,
212
+ targetRef: b,
211
213
  conditionExpression: d.condition ? T(d.condition, n) : null
212
214
  };
213
- }), b = [], C = r.dmnEmit ? G(r.dmnEmit, e, o.conditionPathPrefix) : null, m = ((y = u[0]) == null ? void 0 : y.id) ?? e.id, i = l ?? ((f = u[u.length - 1]) == null ? void 0 : f.id) ?? e.id, a = {};
215
+ }), w = [], C = r.dmnEmit ? G(r.dmnEmit, e, o.conditionPathPrefix) : null, v = ((y = u[0]) == null ? void 0 : y.id) ?? e.id, i = l ?? ((f = u[u.length - 1]) == null ? void 0 : f.id) ?? e.id, a = {};
214
216
  return Object.keys(r.outgoingConditions || {}).forEach((d) => {
215
217
  a[d] = T(
216
218
  r.outgoingConditions[d],
@@ -219,13 +221,13 @@ function M(e, t, s, o) {
219
221
  }), {
220
222
  serviceTasks: u,
221
223
  gateways: g,
222
- callActivities: b,
223
- templateFlows: h,
224
+ callActivities: w,
225
+ templateFlows: $,
224
226
  dmn: C,
225
- bpmnEntry: m,
227
+ bpmnEntry: v,
226
228
  bpmnExit: i,
227
229
  outgoingConditions: a,
228
- endsNeeded: $
230
+ endsNeeded: m
229
231
  };
230
232
  }
231
233
  function q(e) {
@@ -238,14 +240,14 @@ function q(e) {
238
240
  endEventIds: { ...j.endEventIds, ...(r == null ? void 0 : r.endEventIds) ?? {} },
239
241
  endEventNames: { ...j.endEventNames, ...(r == null ? void 0 : r.endEventNames) ?? {} },
240
242
  triggerConfigDefaults: (r == null ? void 0 : r.triggerConfigDefaults) ?? j.triggerConfigDefaults
241
- }, E = Array.isArray(t == null ? void 0 : t.slots) ? t.slots : [], u = E.find((c) => c.kind === "triggerFixed"), l = (N = u == null ? void 0 : u.nodeData) == null ? void 0 : N.eventType, g = ((A = u == null ? void 0 : u.nodeData) == null ? void 0 : A.type) || "event", $ = (R = u == null ? void 0 : u.nodeData) == null ? void 0 : R.sources, h = Array.isArray($) ? $.map(
243
+ }, E = Array.isArray(t == null ? void 0 : t.slots) ? t.slots : [], u = E.find((c) => c.kind === "triggerFixed"), l = (N = u == null ? void 0 : u.nodeData) == null ? void 0 : N.eventType, g = ((A = u == null ? void 0 : u.nodeData) == null ? void 0 : A.type) || "event", m = (R = u == null ? void 0 : u.nodeData) == null ? void 0 : R.sources, $ = Array.isArray(m) ? m.map(
242
244
  (c) => typeof c == "string" ? c : (c == null ? void 0 : c.value) ?? (c == null ? void 0 : c.key) ?? ""
243
- ).filter(Boolean) : [], b = n.triggerToCategory[l ?? ""] ?? n.defaultWorkflowCategory, m = !!l && n.schedulerEventTypes.includes(l) ? ["SCHEDULER"] : h, a = E.filter(B).map((c) => ({
245
+ ).filter(Boolean) : [], w = n.triggerToCategory[l ?? ""] ?? n.defaultWorkflowCategory, v = !!l && n.schedulerEventTypes.includes(l) ? ["SCHEDULER"] : $, a = E.filter(k).map((c) => ({
244
246
  slot: c,
245
247
  emit: M(c, s[c.descriptorType ?? ""] ?? {}, o, n)
246
- })), p = [], y = [], f = [], d = [], v = [], w = /* @__PURE__ */ new Set();
248
+ })), p = [], y = [], f = [], d = [], h = [], b = /* @__PURE__ */ new Set();
247
249
  a.forEach(({ emit: c }) => {
248
- p.push(...c.serviceTasks), y.push(...c.gateways), f.push(...c.callActivities), d.push(...c.templateFlows), c.dmn && v.push(c.dmn), c.endsNeeded.forEach((I) => w.add(I));
250
+ p.push(...c.serviceTasks), y.push(...c.gateways), f.push(...c.callActivities), d.push(...c.templateFlows), c.dmn && h.push(c.dmn), c.endsNeeded.forEach((I) => b.add(I));
249
251
  });
250
252
  const x = [];
251
253
  if (a.length > 0) {
@@ -256,11 +258,11 @@ function q(e) {
256
258
  conditionExpression: null
257
259
  });
258
260
  for (let I = 0; I < a.length - 1; I += 1) {
259
- const D = a[I].emit, S = a[I + 1].emit, L = D.outgoingConditions.success ?? D.outgoingConditions.pass ?? D.outgoingConditions.approved ?? null;
261
+ const D = a[I].emit, _ = a[I + 1].emit, L = D.outgoingConditions.success ?? D.outgoingConditions.pass ?? D.outgoingConditions.approved ?? null;
260
262
  x.push({
261
- id: `${D.bpmnExit}-to-${S.bpmnEntry}`,
263
+ id: `${D.bpmnExit}-to-${_.bpmnEntry}`,
262
264
  sourceRef: D.bpmnExit,
263
- targetRef: S.bpmnEntry,
265
+ targetRef: _.bpmnEntry,
264
266
  conditionExpression: L
265
267
  });
266
268
  }
@@ -284,14 +286,14 @@ function q(e) {
284
286
  name: n.endEventNames.success,
285
287
  executionListener: null
286
288
  },
287
- ...w.has(n.endEventIds.failure) ? [{ id: n.endEventIds.failure, name: n.endEventNames.failure }] : [],
288
- ...w.has(n.endEventIds.rejected) ? [{ id: n.endEventIds.rejected, name: n.endEventNames.rejected }] : []
289
+ ...b.has(n.endEventIds.failure) ? [{ id: n.endEventIds.failure, name: n.endEventNames.failure }] : [],
290
+ ...b.has(n.endEventIds.rejected) ? [{ id: n.endEventIds.rejected, name: n.endEventNames.rejected }] : []
289
291
  ], P = {
290
292
  id: n.startEventId,
291
293
  name: "Start",
292
294
  ...g === "event" ? {
293
295
  messageEventDefinition: {
294
- messageRef: `msg_${(l || "EVENT").toLowerCase()}_${m.length > 0 ? m.join("_").toLowerCase() : "default"}_${o.customerKey}`
296
+ messageRef: `msg_${(l || "EVENT").toLowerCase()}_${v.length > 0 ? v.join("_").toLowerCase() : "default"}_${o.customerKey}`
295
297
  }
296
298
  } : {}
297
299
  };
@@ -302,8 +304,8 @@ function q(e) {
302
304
  },
303
305
  bpmn: {
304
306
  customerId: `${o.customerKey}`,
305
- workflowCategory: b,
306
- sources: m,
307
+ workflowCategory: w,
308
+ sources: v,
307
309
  process: {
308
310
  name: o.workflowName,
309
311
  isExecutable: "true"
@@ -317,10 +319,10 @@ function q(e) {
317
319
  },
318
320
  ...g === "event" ? {
319
321
  message: {
320
- id: `msg_${(l || "event").toLowerCase()}_${m.length > 0 ? m.join("_").toLowerCase() : "default"}_${o.customerKey}`,
321
- name: `msg_${(l || "event").toLowerCase()}_${m.length > 0 ? m.join("_").toLowerCase() : "default"}_${o.customerKey}`
322
+ id: `msg_${(l || "event").toLowerCase()}_${v.length > 0 ? v.join("_").toLowerCase() : "default"}_${o.customerKey}`,
323
+ name: `msg_${(l || "event").toLowerCase()}_${v.length > 0 ? v.join("_").toLowerCase() : "default"}_${o.customerKey}`
322
324
  },
323
- dmns: v
325
+ dmns: h
324
326
  } : {
325
327
  // Non-event trigger (e.g. scheduler). The saved config lives in the
326
328
  // trigger slot's formData under the trigger TYPE key — dotted field
@@ -334,7 +336,7 @@ function q(e) {
334
336
  config: {
335
337
  type: g,
336
338
  ...n.triggerConfigDefaults[g] ?? {},
337
- ..._(
339
+ ...S(
338
340
  (F = u == null ? void 0 : u.formData) == null ? void 0 : F[g]
339
341
  )
340
342
  }
@@ -346,4 +348,4 @@ function q(e) {
346
348
  export {
347
349
  q as b
348
350
  };
349
- //# sourceMappingURL=buildBackendPayload-TJ27pbpx.js.map
351
+ //# sourceMappingURL=buildBackendPayload-BU4ZV563.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildBackendPayload-BU4ZV563.js","sources":["../src/payload/buildBackendPayload.ts"],"sourcesContent":["/**\n * buildBackendPayload — generic BPMN/DMN/canvasState emitter driven by each\n * task's `ui.bpmnEmit` block. Consumer ships per-task bpmnEmit specs from\n * the backend; the package handles the walk.\n *\n * Originally lived in IAM as `flowforgeStateToBackendJson`. Moved into the\n * package so every consumer gets the same emitter — and so DMN/filter/\n * approval fixes ship once, to everyone.\n *\n * Consumer injects:\n * - canvasState — `{ slots, branches }` from the canvas\n * - tasksByKey — `{ [descriptorType]: ApplicationTask }` lookup\n * - context — host-specific scalars (customerKey, workflowName)\n * - config — IAM-shaped defaults (path prefix, end-event ids,\n * trigger→category map, scheduler events)\n *\n * Returns a JSON object ready to POST to the backend.\n */\n\n// ─── Types ──────────────────────────────────────────────────────────────────\n\nexport type CanvasSlot = {\n id: string;\n kind?: string;\n descriptorType?: string;\n nodeData?: Record<string, unknown>;\n formData?: Record<string, unknown>;\n [key: string]: unknown;\n};\n\nexport type CanvasState = {\n slots?: CanvasSlot[];\n branches?: Record<string, unknown>;\n};\n\nexport interface FieldRef {\n from: 'literal' | 'task' | 'ctx' | 'slot' | 'formData';\n key?: string;\n value?: unknown;\n}\n\nexport interface ExtensionFieldSpec {\n name: string;\n source?: {\n type: 'literal' | 'json' | 'taskConfig' | 'formData';\n value?: unknown;\n shape?: Record<string, FieldRef>;\n passthrough?: boolean;\n exclude?: string[];\n key?: string;\n /**\n * For a `formData` passthrough: wrap the resulting object under this key\n * before stringifying. e.g. `wrapKey: 'input'` turns\n * `{noOfDays, action}` into `{\"input\":{\"noOfDays\":…,\"action\":…}}` — the\n * shape the backend expects for `inputConfiguration`.\n */\n wrapKey?: string;\n };\n}\n\nexport interface ServiceTaskSpec {\n idTemplate: string;\n name?: string;\n flowableClass?: string;\n extensionFields?: ExtensionFieldSpec[];\n}\n\nexport interface GatewaySpec {\n idTemplate: string;\n name?: string;\n}\n\nexport interface TemplateFlowSpec {\n from: string;\n to: string;\n idTemplate?: string;\n condition?: string | null;\n}\n\nexport interface DmnOutputSpec {\n id: string;\n label?: string;\n name: string;\n typeRef?: string;\n}\n\nexport interface DmnEmitSpec {\n tableName: string;\n inputExpr: string;\n hitPolicy?: string;\n outputs?: DmnOutputSpec[];\n operatorMap?: Record<string, string>;\n valuesField?: string;\n /**\n * Fallback strategy. `'negation'` emits an extra rule that fires only when\n * NONE of the configured conditions match — its output is the value(s) of\n * the form's `fallback` field. The expression is `!((c1) || (c2) || …)`.\n */\n fallback?: 'negation' | string;\n /** Form field holding the fallback value(s). Defaults to `fallback`. */\n fallbackField?: string;\n}\n\nexport interface BpmnEmitSpec {\n kind: 'linear' | 'gated' | 'filter' | 'approval';\n serviceTasks?: ServiceTaskSpec[];\n gateway?: GatewaySpec;\n templateFlows?: TemplateFlowSpec[];\n outgoingConditions?: Record<string, string>;\n dmnEmit?: DmnEmitSpec;\n callActivity?: Record<string, unknown>;\n}\n\nexport interface ApplicationTaskLike {\n name?: string;\n taskKey?: string;\n applicationUuid?: string;\n configuration?: unknown[];\n ui?: { bpmnEmit?: BpmnEmitSpec; [key: string]: unknown };\n [key: string]: unknown;\n}\n\nexport interface BuildPayloadContext {\n customerKey: string;\n workflowName: string;\n /** Anything else the host wants exposed via `from: 'ctx', key: '...'`. */\n [key: string]: unknown;\n}\n\nexport interface BuildPayloadConfig {\n /**\n * Map of trigger eventType → workflowCategory string. Defaults to a small\n * IAM-shaped fallback; consumers should pass the full map they use.\n */\n triggerToCategory?: Record<string, string>;\n /** eventType values that should set `sources: ['SCHEDULER']` and skip the message block. */\n schedulerEventTypes?: string[];\n /** DMN LHS prefix for condition expressions (default IAM-style). */\n conditionPathPrefix?: string;\n /** Fallback workflowCategory when eventType isn't mapped. */\n defaultWorkflowCategory?: string;\n /** End-event ids — override per backend convention. */\n endEventIds?: { success: string; failure: string; rejected: string };\n /** Names rendered on end events. */\n endEventNames?: { success: string; failure: string; rejected: string };\n /** Start event id used in the outer chain. */\n startEventId?: string;\n /**\n * Canonical default shape for a non-event trigger's `eventConfig.config`,\n * keyed by trigger `type` (e.g. `scheduler`). The backend expects the FULL\n * config object (all keys present, even when the user only set a few). The\n * package can't know a host's scheduler field names, so the host supplies\n * the neutral defaults here; the trigger slot's saved formData is merged on\n * top. Example:\n * { scheduler: { triggerFrequency: null, startDateTime: null, interval: 1,\n * timings: [], dateTime: null, daysOfMonth: [],\n * daysOfWeek: [], expression: null, timeZone: null } }\n */\n triggerConfigDefaults?: Record<string, Record<string, unknown>>;\n}\n\nexport interface BuildPayloadOptions {\n state: CanvasState;\n tasksByKey: Record<string, ApplicationTaskLike>;\n context: BuildPayloadContext;\n config?: BuildPayloadConfig;\n}\n\n// ─── Defaults ──────────────────────────────────────────────────────────────\n\n// Package defaults are deliberately neutral — anything tenant- or\n// product-specific (trigger event types, default category, the DMN LHS\n// prefix) MUST come from the consumer's `config`. We only ship defaults\n// for engine-neutral BPMN scalars (start/end ids and end-event names).\nconst DEFAULTS: Required<BuildPayloadConfig> = {\n triggerToCategory: {},\n schedulerEventTypes: [],\n conditionPathPrefix: '',\n defaultWorkflowCategory: '',\n endEventIds: {\n success: 'endEventSuccess',\n failure: 'endEventFailure',\n rejected: 'endEventRejected',\n },\n endEventNames: {\n success: 'Success',\n failure: 'Failure',\n rejected: 'Rejected',\n },\n startEventId: 'startEvent',\n triggerConfigDefaults: {},\n};\n\n/**\n * Strip FlowForge-internal, display-only keys (anything starting with `_`,\n * e.g. `_optionLabels`, `_conditionConfig`) from an object before it goes to\n * the backend. Returns a shallow copy.\n */\nfunction stripInternalKeys(obj: unknown): Record<string, unknown> {\n if (!obj || typeof obj !== 'object') return {};\n const out: Record<string, unknown> = {};\n Object.keys(obj as Record<string, unknown>).forEach((k) => {\n if (!k.startsWith('_')) out[k] = (obj as Record<string, unknown>)[k];\n });\n return out;\n}\n\nconst NON_TASK_KINDS = new Set([\n 'start',\n 'end',\n 'triggerFixed',\n 'addTrigger',\n 'addStep',\n]);\nconst isTaskSlot = (slot: CanvasSlot): boolean =>\n !!slot && !NON_TASK_KINDS.has(String(slot.kind ?? ''));\n\n// ─── Helpers ───────────────────────────────────────────────────────────────\n\nfunction interpolate(tpl: string | null | undefined, ctx: Record<string, unknown>): string {\n if (tpl == null) return '';\n return String(tpl).replace(/\\$\\{(\\w+)\\}/g, (m, k) =>\n Object.prototype.hasOwnProperty.call(ctx, k) ? String(ctx[k]) : m\n );\n}\n\ninterface ResolveCtx {\n task: ApplicationTaskLike;\n slot: CanvasSlot;\n ctx: BuildPayloadContext;\n}\n\nfunction resolveFieldRef(ref: FieldRef | undefined, ctx: ResolveCtx): string {\n if (!ref || typeof ref !== 'object') return '';\n const { from, key, value } = ref;\n if (from === 'literal') return value === undefined ? '' : String(value);\n if (from === 'task') return String((ctx.task as Record<string, unknown>)?.[key ?? ''] ?? '');\n if (from === 'ctx') return String((ctx.ctx as Record<string, unknown>)?.[key ?? ''] ?? '');\n if (from === 'slot') return String((ctx.slot as Record<string, unknown>)?.[key ?? ''] ?? '');\n if (from === 'formData') return String(ctx.slot?.formData?.[key ?? ''] ?? '');\n return '';\n}\n\nfunction buildExtensionStringValue(field: ExtensionFieldSpec, ctx: ResolveCtx): string {\n const source = field?.source;\n if (!source) return '';\n if (source.type === 'literal') {\n return typeof source.value === 'string'\n ? source.value\n : JSON.stringify(source.value ?? '');\n }\n if (source.type === 'json' || source.type === 'taskConfig') {\n const shape = source.shape || {};\n const out: Record<string, string> = {};\n Object.keys(shape).forEach((k) => {\n out[k] = resolveFieldRef(shape[k], ctx);\n });\n return JSON.stringify(out);\n }\n if (source.type === 'formData') {\n if (source.passthrough) {\n const exclude = new Set(source.exclude || []);\n const out: Record<string, unknown> = {};\n const fd = ctx.slot?.formData ?? {};\n Object.keys(fd).forEach((k) => {\n // Drop FlowForge-internal display keys (_optionLabels, _conditionConfig)\n // and any host-excluded keys — the backend wants the clean input only.\n if (k.startsWith('_')) return;\n if (!exclude.has(k)) out[k] = fd[k];\n });\n const wrapped = source.wrapKey ? { [source.wrapKey]: out } : out;\n return JSON.stringify(wrapped);\n }\n return String(ctx.slot?.formData?.[source.key ?? ''] ?? '');\n }\n return '';\n}\n\n/** Walk a dotted path against a plain object. Returns undefined on miss. */\nfunction getValueByPath(obj: unknown, path: string): unknown {\n if (!obj || typeof obj !== 'object' || !path) return undefined;\n return path.split('.').reduce<unknown>((acc, key) => {\n if (acc == null || typeof acc !== 'object') return undefined;\n return (acc as Record<string, unknown>)[key];\n }, obj);\n}\n\n// ─── DMN rule builder ──────────────────────────────────────────────────────\n\ninterface ConditionEntry {\n field?: string;\n fieldLabel?: string;\n key?: string;\n operator?: string;\n value?: string | number | boolean | null;\n connector?: 'and' | 'or';\n logicalOperator?: 'AND' | 'OR';\n}\n\nfunction buildDmnRules(\n dmnSpec: DmnEmitSpec,\n slot: CanvasSlot,\n pathPrefix: string\n): Array<{\n id: string;\n inputEntries: Array<{ id: string; text: string }>;\n outputEntries: Array<{ id: string; text: string }>;\n}> {\n const opMap = dmnSpec.operatorMap || {};\n const valuesField = dmnSpec.valuesField || 'groups';\n\n const toJuel = (cond: ConditionEntry): string => {\n const op = opMap[String(cond?.operator ?? '')] ?? '==';\n const lhs = `${pathPrefix}.${cond?.key ?? cond?.field ?? ''}`;\n const rhs = `'${String(cond?.value ?? '')}'`;\n if (op.startsWith('.')) return `${lhs}${op}(${rhs})`;\n if (op.startsWith('!.')) return `!${lhs}${op.slice(1)}(${rhs})`;\n return `${lhs} ${op} ${rhs}`;\n };\n\n const entriesToExpression = (entries: ConditionEntry[] | undefined): string | null => {\n const list = Array.isArray(entries) ? entries : [];\n if (list.length === 0) return null;\n const parts = list.map(toJuel);\n const isOr = list[0]?.connector === 'or' || list[0]?.logicalOperator === 'OR';\n const logical = isOr ? '||' : '&&';\n return parts.join(` ${logical} `);\n };\n\n const rules: Array<{\n id: string;\n inputEntries: Array<{ id: string; text: string }>;\n outputEntries: Array<{ id: string; text: string }>;\n }> = [];\n let ruleNum = 1;\n const pushRule = (expression: string | null, outputValue: unknown) => {\n rules.push({\n id: `rule${ruleNum}`,\n inputEntries: [\n {\n id: `rule${ruleNum}InputEntry1`,\n text: expression ? `\\${(${expression})}` : '',\n },\n ],\n outputEntries: [\n {\n id: `rule${ruleNum}OutputEntry1`,\n text: `\"${outputValue}\"`,\n },\n ],\n });\n ruleNum += 1;\n };\n\n // Shape A — IAM-legacy groupBlocks[].\n const blocks = Array.isArray(slot?.formData?.groupBlocks)\n ? (slot.formData!.groupBlocks as Array<{\n conditions?: ConditionEntry[];\n [k: string]: unknown;\n }>)\n : [];\n if (blocks.length > 0) {\n blocks.forEach((block) => {\n const values = Array.isArray(block?.[valuesField])\n ? (block[valuesField] as unknown[])\n : [];\n const expression = entriesToExpression(block?.conditions);\n values.forEach((v) => pushRule(expression, v));\n });\n return rules;\n }\n\n // Shape B — FlowForm When-builder.\n const fd = (slot?.formData ?? {}) as Record<string, unknown>;\n // eslint-disable-next-line no-underscore-dangle\n const condCfg = (fd._conditionConfig ?? fd.conditionConfig) as\n | Record<string, ConditionEntry[]>\n | undefined;\n // Collect every condition expression so a `negation` fallback can be the\n // negation of their union (fires only when none match).\n const allExpressions: string[] = [];\n if (condCfg && typeof condCfg === 'object') {\n Object.keys(condCfg).forEach((fieldKey) => {\n const conditions = condCfg[fieldKey];\n const expression = entriesToExpression(conditions);\n if (expression) allExpressions.push(expression);\n // The conditionConfig key can be either a plain field name OR a dotted\n // formik path (e.g. `attributeMapping.rules.0.targetField`). Resolve\n // both shapes — first try direct, then walk the path.\n const fieldValue =\n Object.prototype.hasOwnProperty.call(fd, fieldKey)\n ? fd[fieldKey]\n : getValueByPath(fd, fieldKey);\n if (Array.isArray(fieldValue)) {\n fieldValue.forEach((v) => {\n const out =\n typeof v === 'object' && v !== null\n ? (v as { value?: unknown; label?: unknown }).value ??\n (v as { label?: unknown }).label ??\n v\n : v;\n pushRule(expression, out);\n });\n } else if (\n fieldValue !== undefined &&\n fieldValue !== null &&\n fieldValue !== ''\n ) {\n pushRule(expression, fieldValue);\n } else if (expression) {\n pushRule(expression, '');\n }\n });\n }\n\n // ── Fallback rule (negation) — fires only when NONE of the conditions match.\n // Output = the form's `fallback` field value(s). With no conditions present,\n // there's nothing to negate, so the fallback becomes an always-true rule.\n if (dmnSpec.fallback === 'negation') {\n const fallbackKey = dmnSpec.fallbackField || 'fallback';\n const rawFallback = fd[fallbackKey];\n const fallbackValues = Array.isArray(rawFallback)\n ? rawFallback\n : rawFallback != null && rawFallback !== ''\n ? [rawFallback]\n : [];\n if (fallbackValues.length > 0) {\n const negation = allExpressions.length > 0\n ? `!(${allExpressions.map((e) => `(${e})`).join(' || ')})`\n : null;\n fallbackValues.forEach((v) => {\n const out =\n typeof v === 'object' && v !== null\n ? (v as { value?: unknown; label?: unknown }).value ??\n (v as { label?: unknown }).label ??\n v\n : v;\n pushRule(negation, out);\n });\n }\n }\n return rules;\n}\n\nfunction buildDmn(dmnSpec: DmnEmitSpec, slot: CanvasSlot, pathPrefix: string) {\n return {\n mappings: [],\n name: dmnSpec.tableName,\n decision: {\n id: dmnSpec.tableName,\n name: dmnSpec.tableName,\n decisionTable: {\n id: `decisionTable_${dmnSpec.tableName}`,\n hitPolicy: dmnSpec.hitPolicy || 'FIRST',\n inputs: [\n {\n id: `input_${dmnSpec.tableName}`,\n inputExpression: {\n id: `inputExpr_${dmnSpec.tableName}`,\n typeRef: 'string',\n text: dmnSpec.inputExpr,\n },\n },\n ],\n outputs: (dmnSpec.outputs || []).map((o) => ({\n id: o.id,\n label: o.label,\n typeRef: o.typeRef || 'string',\n name: o.name,\n })),\n rules: buildDmnRules(dmnSpec, slot, pathPrefix),\n },\n },\n };\n}\n\n// ─── Task emitter ──────────────────────────────────────────────────────────\n\ninterface Emission {\n serviceTasks: unknown[];\n gateways: Array<{ id: string; name?: string }>;\n callActivities: unknown[];\n templateFlows: Array<{\n id: string;\n sourceRef: string;\n targetRef: string;\n conditionExpression: string | null;\n }>;\n dmn: ReturnType<typeof buildDmn> | null;\n bpmnEntry: string;\n bpmnExit: string;\n outgoingConditions: Record<string, string>;\n endsNeeded: Set<string>;\n}\n\nfunction emitTask(\n slot: CanvasSlot,\n task: ApplicationTaskLike,\n saveCtx: BuildPayloadContext,\n cfg: Required<BuildPayloadConfig>\n): Emission {\n const spec = task?.ui?.bpmnEmit;\n if (!spec) {\n return {\n serviceTasks: [\n {\n id: slot.id,\n name: task?.name || slot.descriptorType,\n configuration: Array.isArray(task?.configuration) ? task.configuration : [],\n // Strip display-only keys (_optionLabels, _conditionConfig) — the\n // backend wants the clean task input only.\n input: stripInternalKeys(slot.formData),\n },\n ],\n gateways: [],\n callActivities: [],\n templateFlows: [],\n dmn: null,\n bpmnEntry: slot.id,\n bpmnExit: slot.id,\n outgoingConditions: {},\n endsNeeded: new Set(),\n };\n }\n\n const interpCtx: Record<string, unknown> = {\n id: slot.id,\n endFailure: cfg.endEventIds.failure,\n endRejected: cfg.endEventIds.rejected,\n endSuccess: cfg.endEventIds.success,\n };\n\n const ctx: ResolveCtx = { task, slot, ctx: saveCtx };\n\n const serviceTasks = (spec.serviceTasks || []).map((st) => ({\n id: interpolate(st.idTemplate, interpCtx),\n name: st.name,\n flowableClass: st.flowableClass,\n extensionElements: {\n fields: (st.extensionFields || []).map((f) => ({\n name: f.name,\n stringValue: buildExtensionStringValue(f, ctx),\n })),\n },\n }));\n\n let gatewayId: string | null = null;\n const gateways: Array<{ id: string; name?: string }> = [];\n if (spec.gateway) {\n gatewayId = interpolate(spec.gateway.idTemplate, interpCtx);\n interpCtx.gateway = gatewayId;\n gateways.push({ id: gatewayId, name: spec.gateway.name });\n }\n\n const endsNeeded = new Set<string>();\n const templateFlows = (spec.templateFlows || []).map((f) => {\n const source = interpolate(f.from, interpCtx);\n const target = interpolate(f.to, interpCtx);\n if (target === cfg.endEventIds.failure) endsNeeded.add(cfg.endEventIds.failure);\n if (target === cfg.endEventIds.rejected) endsNeeded.add(cfg.endEventIds.rejected);\n const id = f.idTemplate\n ? interpolate(f.idTemplate, interpCtx)\n : `${source}-to-${target}`;\n return {\n id,\n sourceRef: source,\n targetRef: target,\n conditionExpression: f.condition ? interpolate(f.condition, interpCtx) : null,\n };\n });\n\n const callActivities: unknown[] = [];\n const dmn = spec.dmnEmit ? buildDmn(spec.dmnEmit, slot, cfg.conditionPathPrefix) : null;\n\n const bpmnEntry = (serviceTasks[0] as { id?: string })?.id ?? slot.id;\n const bpmnExit =\n gatewayId ??\n (serviceTasks[serviceTasks.length - 1] as { id?: string })?.id ??\n slot.id;\n\n const outgoingConditions: Record<string, string> = {};\n Object.keys(spec.outgoingConditions || {}).forEach((branch) => {\n outgoingConditions[branch] = interpolate(\n spec.outgoingConditions![branch],\n interpCtx\n );\n });\n\n return {\n serviceTasks,\n gateways,\n callActivities,\n templateFlows,\n dmn,\n bpmnEntry,\n bpmnExit,\n outgoingConditions,\n endsNeeded,\n };\n}\n\n// ─── Main entry point ──────────────────────────────────────────────────────\n\n/**\n * Generate a backend-ready payload from canvas state + task definitions.\n *\n * @example\n * const payload = buildBackendPayload({\n * state: { slots, branches },\n * tasksByKey: { USER_CREATION: {...}, USER_GROUP_ASSIGNMENT: {...} },\n * context: { customerKey: '51995', workflowName: 'My WF' },\n * config: { triggerToCategory: { CUSTOM_TRIGGER: 'CUSTOM_CATEGORY' } },\n * });\n * await api.post('/process', payload);\n */\nexport function buildBackendPayload(opts: BuildPayloadOptions): Record<string, unknown> {\n const { state, tasksByKey, context, config } = opts;\n const cfg: Required<BuildPayloadConfig> = {\n ...DEFAULTS,\n ...(config ?? {}),\n triggerToCategory: { ...DEFAULTS.triggerToCategory, ...(config?.triggerToCategory ?? {}) },\n schedulerEventTypes: config?.schedulerEventTypes ?? DEFAULTS.schedulerEventTypes,\n endEventIds: { ...DEFAULTS.endEventIds, ...(config?.endEventIds ?? {}) },\n endEventNames: { ...DEFAULTS.endEventNames, ...(config?.endEventNames ?? {}) },\n triggerConfigDefaults: config?.triggerConfigDefaults ?? DEFAULTS.triggerConfigDefaults,\n };\n\n const slots = Array.isArray(state?.slots) ? state.slots! : [];\n\n // 1. Trigger metadata\n const triggerSlot = slots.find((s) => s.kind === 'triggerFixed');\n const eventType = (triggerSlot?.nodeData as { eventType?: string } | undefined)?.eventType;\n const triggerType =\n (triggerSlot?.nodeData as { type?: string } | undefined)?.type || 'event';\n const sourcesData = (triggerSlot?.nodeData as { sources?: unknown[] } | undefined)?.sources;\n const pickedSources = Array.isArray(sourcesData)\n ? sourcesData\n .map((s) =>\n typeof s === 'string'\n ? s\n : (s as { value?: string; key?: string })?.value ??\n (s as { value?: string; key?: string })?.key ??\n ''\n )\n .filter(Boolean)\n : [];\n const workflowCategory =\n cfg.triggerToCategory[eventType ?? ''] ?? cfg.defaultWorkflowCategory;\n const isSchedulerEvent =\n !!eventType && cfg.schedulerEventTypes.includes(eventType);\n const sources = isSchedulerEvent ? ['SCHEDULER'] : pickedSources;\n\n // 2. Walk each task slot through the emitter\n const taskSlots = slots.filter(isTaskSlot);\n const emissions = taskSlots.map((slot) => ({\n slot,\n emit: emitTask(slot, tasksByKey[slot.descriptorType ?? ''] ?? {}, context, cfg),\n }));\n\n // 3. Collect emitted parts\n const allServiceTasks: unknown[] = [];\n const allGateways: Array<{ id: string; name?: string }> = [];\n const allCallActivities: unknown[] = [];\n const allTemplateFlows: Array<{\n id: string;\n sourceRef: string;\n targetRef: string;\n conditionExpression: string | null;\n }> = [];\n const allDmns: unknown[] = [];\n const endsNeeded = new Set<string>();\n\n emissions.forEach(({ emit }) => {\n allServiceTasks.push(...emit.serviceTasks);\n allGateways.push(...emit.gateways);\n allCallActivities.push(...emit.callActivities);\n allTemplateFlows.push(...emit.templateFlows);\n if (emit.dmn) allDmns.push(emit.dmn);\n emit.endsNeeded.forEach((e) => endsNeeded.add(e));\n });\n\n // 4. Outer chain — link each task's exit to the next task's entry\n const outerFlows: Array<{\n id: string;\n sourceRef: string;\n targetRef: string;\n conditionExpression: string | null;\n }> = [];\n\n if (emissions.length > 0) {\n outerFlows.push({\n id: `${cfg.startEventId}-to-${emissions[0].emit.bpmnEntry}`,\n sourceRef: cfg.startEventId,\n targetRef: emissions[0].emit.bpmnEntry,\n conditionExpression: null,\n });\n\n for (let i = 0; i < emissions.length - 1; i += 1) {\n const cur = emissions[i].emit;\n const next = emissions[i + 1].emit;\n const condition =\n cur.outgoingConditions.success ??\n cur.outgoingConditions.pass ??\n cur.outgoingConditions.approved ??\n null;\n outerFlows.push({\n id: `${cur.bpmnExit}-to-${next.bpmnEntry}`,\n sourceRef: cur.bpmnExit,\n targetRef: next.bpmnEntry,\n conditionExpression: condition,\n });\n }\n\n const last = emissions[emissions.length - 1].emit;\n outerFlows.push({\n id: `${last.bpmnExit}-to-${cfg.endEventIds.success}`,\n sourceRef: last.bpmnExit,\n targetRef: cfg.endEventIds.success,\n conditionExpression: null,\n });\n } else {\n outerFlows.push({\n id: `${cfg.startEventId}-to-${cfg.endEventIds.success}`,\n sourceRef: cfg.startEventId,\n targetRef: cfg.endEventIds.success,\n conditionExpression: null,\n });\n }\n\n // 5. End events\n const endEvent: Array<{ id: string; name: string; executionListener?: null }> = [\n {\n id: cfg.endEventIds.success,\n name: cfg.endEventNames.success,\n executionListener: null,\n },\n ...(endsNeeded.has(cfg.endEventIds.failure)\n ? [{ id: cfg.endEventIds.failure, name: cfg.endEventNames.failure }]\n : []),\n ...(endsNeeded.has(cfg.endEventIds.rejected)\n ? [{ id: cfg.endEventIds.rejected, name: cfg.endEventNames.rejected }]\n : []),\n ];\n\n // 6. Start event\n const startEvent: Record<string, unknown> = {\n id: cfg.startEventId,\n name: 'Start',\n ...(triggerType === 'event'\n ? {\n messageEventDefinition: {\n messageRef: `msg_${(eventType || 'EVENT').toLowerCase()}_${\n sources.length > 0 ? sources.join('_').toLowerCase() : 'default'\n }_${context.customerKey}`,\n },\n }\n : {}),\n };\n\n // 7. Final payload\n const json: Record<string, unknown> = {\n canvasState: {\n slots,\n branches: state?.branches ?? {},\n },\n bpmn: {\n customerId: `${context.customerKey}`,\n workflowCategory,\n sources,\n process: {\n name: context.workflowName,\n isExecutable: 'true',\n },\n startEvent,\n endEvent,\n sequenceFlows: [...outerFlows, ...allTemplateFlows],\n exclusiveGateways: allGateways,\n serviceTasks: allServiceTasks,\n callActivities: allCallActivities,\n },\n ...(triggerType === 'event'\n ? {\n message: {\n id: `msg_${(eventType || 'event').toLowerCase()}_${\n sources.length > 0 ? sources.join('_').toLowerCase() : 'default'\n }_${context.customerKey}`,\n name: `msg_${(eventType || 'event').toLowerCase()}_${\n sources.length > 0 ? sources.join('_').toLowerCase() : 'default'\n }_${context.customerKey}`,\n },\n dmns: allDmns,\n }\n : {\n // Non-event trigger (e.g. scheduler). The saved config lives in the\n // trigger slot's formData under the trigger TYPE key — dotted field\n // ids like `scheduler.timeZone` get nested under `scheduler` on save.\n // eventType/`type` is the trigger TYPE ('scheduler'), NOT the workflow\n // category. Host-supplied defaults fill the canonical shape; saved\n // values override; internal `_*` keys are stripped.\n eventConfig: [\n {\n eventType: triggerType,\n config: {\n type: triggerType,\n ...(cfg.triggerConfigDefaults[triggerType] ?? {}),\n ...stripInternalKeys(\n (triggerSlot?.formData as Record<string, unknown> | undefined)?.[triggerType]\n ),\n },\n },\n ],\n }),\n };\n\n return json;\n}\n"],"names":["DEFAULTS","stripInternalKeys","obj","out","k","NON_TASK_KINDS","isTaskSlot","slot","interpolate","tpl","ctx","m","resolveFieldRef","ref","_a","_b","_c","_d","_e","from","key","value","buildExtensionStringValue","field","source","shape","exclude","fd","wrapped","getValueByPath","path","acc","buildDmnRules","dmnSpec","pathPrefix","opMap","valuesField","toJuel","cond","op","lhs","rhs","entriesToExpression","entries","list","parts","logical","rules","ruleNum","pushRule","expression","outputValue","blocks","block","values","v","condCfg","allExpressions","fieldKey","conditions","fieldValue","fallbackKey","rawFallback","fallbackValues","negation","e","buildDmn","emitTask","task","saveCtx","cfg","spec","interpCtx","serviceTasks","st","f","gatewayId","gateways","endsNeeded","templateFlows","target","callActivities","dmn","bpmnEntry","bpmnExit","outgoingConditions","branch","buildBackendPayload","opts","state","tasksByKey","context","config","slots","triggerSlot","s","eventType","triggerType","sourcesData","pickedSources","workflowCategory","sources","emissions","allServiceTasks","allGateways","allCallActivities","allTemplateFlows","allDmns","emit","outerFlows","i","cur","next","condition","last","endEvent","startEvent"],"mappings":"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"}
package/dist/canvas.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./WorkflowExecutionHistory-6X5WPDN6.js"),l=require("./messages-Bg7b9RbI.js"),r=require("./bpmn-CcuE2X_Q.js"),e=require("./GatewayBranchEdge-hUano0YJ.js");exports.FlowForgeCanvas=o.FlowForgeCanvas;exports.FlowForgeHeader=o.FlowForgeHeader;exports.SubWorkflowPreviewDrawer=o.SubWorkflowPreviewDrawer;exports.WorkflowCanvas=o.FlowForgeCanvas;exports.WorkflowExecutionHistory=o.WorkflowExecutionHistory;exports.WorkflowTemplateLibrary=o.WorkflowTemplateLibrary;exports.defaultFlowForgeMessages=l.defaultFlowForgeMessages;exports.loadWorkflowFromBpmn=r.loadWorkflowFromBpmn;exports.saveWorkflowToBpmn=r.saveWorkflowToBpmn;exports.ActionNode=e.ActionNode;exports.ApprovalNode=e.ApprovalNode;exports.EdgeWithPlusLabel=e.EdgeWithPlusLabel;exports.EndNode=e.EndNode;exports.FilterNode=e.FilterNode;exports.NodeBody=e.NodeBody;exports.RestApiNode=e.RestApiNode;exports.StartNode=e.StartNode;exports.TriggerNode=e.TriggerNode;exports.WebhookTriggerNode=e.WebhookTriggerNode;exports.builtInNodeTypes=e.builtInNodeTypes;exports.deriveRows=e.deriveRows;exports.resolveNodeRows=e.resolveNodeRows;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./WorkflowExecutionHistory-BQ7W4WXX.js"),l=require("./messages-Bg7b9RbI.js"),r=require("./bpmn-CcuE2X_Q.js"),e=require("./GatewayBranchEdge-hUano0YJ.js");exports.FlowForgeCanvas=o.FlowForgeCanvas;exports.FlowForgeHeader=o.FlowForgeHeader;exports.SubWorkflowPreviewDrawer=o.SubWorkflowPreviewDrawer;exports.WorkflowCanvas=o.FlowForgeCanvas;exports.WorkflowExecutionHistory=o.WorkflowExecutionHistory;exports.WorkflowTemplateLibrary=o.WorkflowTemplateLibrary;exports.defaultFlowForgeMessages=l.defaultFlowForgeMessages;exports.loadWorkflowFromBpmn=r.loadWorkflowFromBpmn;exports.saveWorkflowToBpmn=r.saveWorkflowToBpmn;exports.ActionNode=e.ActionNode;exports.ApprovalNode=e.ApprovalNode;exports.EdgeWithPlusLabel=e.EdgeWithPlusLabel;exports.EndNode=e.EndNode;exports.FilterNode=e.FilterNode;exports.NodeBody=e.NodeBody;exports.RestApiNode=e.RestApiNode;exports.StartNode=e.StartNode;exports.TriggerNode=e.TriggerNode;exports.WebhookTriggerNode=e.WebhookTriggerNode;exports.builtInNodeTypes=e.builtInNodeTypes;exports.deriveRows=e.deriveRows;exports.resolveNodeRows=e.resolveNodeRows;
2
2
  //# sourceMappingURL=canvas.cjs.map
package/dist/canvas.js CHANGED
@@ -1,4 +1,4 @@
1
- import { F as a, a as s, S as r, F as d, W as l, b as t } from "./WorkflowExecutionHistory-jMlntXkG.js";
1
+ import { F as a, a as s, S as r, F as d, W as l, b as t } from "./WorkflowExecutionHistory-CmZHRJdi.js";
2
2
  import { d as f } from "./messages-CRZgWFU-.js";
3
3
  import { l as p, s as F } from "./bpmn-CtfWDaOY.js";
4
4
  import { A as g, b as W, E as m, c as n, F as b, f as k, R as v, S as T, T as u, W as x, e as y, g as A, r as E } from "./GatewayBranchEdge-BsPsPmnx.js";
package/dist/core.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./nodeRegistry.cjs"),r=require("./templateRegistry.cjs"),t=require("./messages-Bg7b9RbI.js"),o=require("./bpmn-CcuE2X_Q.js"),i=require("./buildBackendPayload-GM9No65b.js");exports.NodeTypeRegistry=e.NodeTypeRegistry;exports.baseNodeDefaults=e.baseNodeDefaults;exports.conditionBranchDescriptor=e.conditionBranchDescriptor;exports.defineNode=e.defineNode;exports.endEventDescriptor=e.endEventDescriptor;exports.makeSubWorkflowDescriptor=e.makeSubWorkflowDescriptor;exports.nodeTypeRegistry=e.nodeTypeRegistry;exports.notificationDescriptor=e.notificationDescriptor;exports.restApiDescriptor=e.restApiDescriptor;exports.startEventDescriptor=e.startEventDescriptor;exports.subWorkflowDescriptor=e.subWorkflowDescriptor;exports.webhookTriggerDescriptor=e.webhookTriggerDescriptor;exports.webhookTriggerTemplate=e.webhookTriggerTemplate;exports.TemplateRegistry=r.TemplateRegistry;exports.templateRegistry=r.templateRegistry;exports.defaultFlowForgeMessages=t.defaultFlowForgeMessages;exports.loadWorkflowFromBpmn=o.loadWorkflowFromBpmn;exports.saveWorkflowToBpmn=o.saveWorkflowToBpmn;exports.buildBackendPayload=i.buildBackendPayload;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./nodeRegistry.cjs"),r=require("./templateRegistry.cjs"),t=require("./messages-Bg7b9RbI.js"),o=require("./bpmn-CcuE2X_Q.js"),i=require("./buildBackendPayload-BKnT4KL8.js");exports.NodeTypeRegistry=e.NodeTypeRegistry;exports.baseNodeDefaults=e.baseNodeDefaults;exports.conditionBranchDescriptor=e.conditionBranchDescriptor;exports.defineNode=e.defineNode;exports.endEventDescriptor=e.endEventDescriptor;exports.makeSubWorkflowDescriptor=e.makeSubWorkflowDescriptor;exports.nodeTypeRegistry=e.nodeTypeRegistry;exports.notificationDescriptor=e.notificationDescriptor;exports.restApiDescriptor=e.restApiDescriptor;exports.startEventDescriptor=e.startEventDescriptor;exports.subWorkflowDescriptor=e.subWorkflowDescriptor;exports.webhookTriggerDescriptor=e.webhookTriggerDescriptor;exports.webhookTriggerTemplate=e.webhookTriggerTemplate;exports.TemplateRegistry=r.TemplateRegistry;exports.templateRegistry=r.templateRegistry;exports.defaultFlowForgeMessages=t.defaultFlowForgeMessages;exports.loadWorkflowFromBpmn=o.loadWorkflowFromBpmn;exports.saveWorkflowToBpmn=o.saveWorkflowToBpmn;exports.buildBackendPayload=i.buildBackendPayload;
2
2
  //# sourceMappingURL=core.cjs.map
package/dist/core.d.ts CHANGED
@@ -279,6 +279,13 @@ export declare interface ExtensionFieldSpec {
279
279
  passthrough?: boolean;
280
280
  exclude?: string[];
281
281
  key?: string;
282
+ /**
283
+ * For a `formData` passthrough: wrap the resulting object under this key
284
+ * before stringifying. e.g. `wrapKey: 'input'` turns
285
+ * `{noOfDays, action}` into `{"input":{"noOfDays":…,"action":…}}` — the
286
+ * shape the backend expects for `inputConfiguration`.
287
+ */
288
+ wrapKey?: string;
282
289
  };
283
290
  }
284
291
 
package/dist/core.js CHANGED
@@ -2,7 +2,7 @@ import { NodeTypeRegistry as r, baseNodeDefaults as t, conditionBranchDescriptor
2
2
  import { TemplateRegistry as k, templateRegistry as b } from "./templateRegistry.js";
3
3
  import { d as y } from "./messages-CRZgWFU-.js";
4
4
  import { l as u, s as x } from "./bpmn-CtfWDaOY.js";
5
- import { b as R } from "./buildBackendPayload-TJ27pbpx.js";
5
+ import { b as R } from "./buildBackendPayload-BU4ZV563.js";
6
6
  export {
7
7
  r as NodeTypeRegistry,
8
8
  k as TemplateRegistry,
package/dist/form.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-BW1ACtO5.js"),i=require("./SchemaBuilderDrawer-CtT0j0WY.js");require("react/jsx-runtime");require("react");require("@mui/material");require("react-icons/md");exports.DRAG_DATA_KEY=e.DRAG_DATA_KEY;exports.DynamicFormRenderer=e.DynamicFormRenderer;exports.FF=e.FF;exports.FlowForgeRegistry=e.FlowForgeRegistry;exports.FlowForm=e.FlowForm;exports.FormulaInput=e.FormulaInput;exports.InfiniteSelectField=e.InfiniteSelectField;exports.OptionsResolversProvider=e.OptionsResolversProvider;exports.TablePickerField=e.TablePickerField;exports.VariablePicker=e.VariablePicker;exports.VariablePickerProvider=e.VariablePickerProvider;exports.astHasRefs=e.astHasRefs;exports.astToTokens=e.astToTokens;exports.buildEvaluationPayload=e.buildEvaluationPayload;exports.buildFieldConfig=e.buildFieldConfig;exports.buildFormulaPath=e.buildFormulaPath;exports.buildSelectStyles=e.buildSelectStyles;exports.buildValidationSchema=e.buildValidationSchema;exports.conditionConfigToRulePayload=e.conditionConfigToRulePayload;exports.conditionNodesToRuleTree=e.conditionNodesToRuleTree;exports.errorTextStyle=e.errorTextStyle;exports.extractLabel=e.extractLabel;exports.fieldRegistry=e.fieldRegistry;exports.hasFormulaTokens=e.hasFormulaTokens;exports.helperTextStyle=e.helperTextStyle;exports.inputStyle=e.inputStyle;exports.isFormula=e.isFormula;exports.leafReference=e.leafReference;exports.parseToAST=e.parseToAST;exports.ruleConditionsToNodes=e.ruleConditionsToNodes;exports.rulePayloadToConditionConfig=e.rulePayloadToConditionConfig;exports.serializeAST=e.serializeAST;exports.serializeASTAsConfig=e.serializeASTAsConfig;exports.serializeConditionExpressions=e.serializeConditionExpressions;exports.stripFormulaTokens=e.stripFormulaTokens;exports.tokenize=e.tokenize;exports.unwrapFormula=e.unwrapFormula;exports.useDynamicOptions=e.useDynamicOptions;exports.useOptionsResolvers=e.useOptionsResolvers;exports.useVariablePickerContext=e.useVariablePickerContext;exports.variableSubtreeToValue=e.variableSubtreeToValue;exports.wrapFormula=e.wrapFormula;exports.FIELD_TYPE_OPTIONS=i.FIELD_TYPE_OPTIONS;exports.SchemaBuilder=i.SchemaBuilder;exports.SchemaBuilderDrawer=i.SchemaBuilderDrawer;exports.useFlowForm=i.useFlowForm;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-BH3lAQXx.js"),i=require("./SchemaBuilderDrawer-BlZudF-G.js");require("react/jsx-runtime");require("react");require("@mui/material");require("react-icons/md");exports.DRAG_DATA_KEY=e.DRAG_DATA_KEY;exports.DynamicFormRenderer=e.DynamicFormRenderer;exports.FF=e.FF;exports.FlowForgeRegistry=e.FlowForgeRegistry;exports.FlowForm=e.FlowForm;exports.FormulaInput=e.FormulaInput;exports.InfiniteSelectField=e.InfiniteSelectField;exports.OptionsResolversProvider=e.OptionsResolversProvider;exports.TablePickerField=e.TablePickerField;exports.VariablePicker=e.VariablePicker;exports.VariablePickerProvider=e.VariablePickerProvider;exports.astHasRefs=e.astHasRefs;exports.astToTokens=e.astToTokens;exports.buildEvaluationPayload=e.buildEvaluationPayload;exports.buildFieldConfig=e.buildFieldConfig;exports.buildFormulaPath=e.buildFormulaPath;exports.buildSelectStyles=e.buildSelectStyles;exports.buildValidationSchema=e.buildValidationSchema;exports.conditionConfigToRulePayload=e.conditionConfigToRulePayload;exports.conditionNodesToRuleTree=e.conditionNodesToRuleTree;exports.errorTextStyle=e.errorTextStyle;exports.extractLabel=e.extractLabel;exports.fieldRegistry=e.fieldRegistry;exports.hasFormulaTokens=e.hasFormulaTokens;exports.helperTextStyle=e.helperTextStyle;exports.inputStyle=e.inputStyle;exports.isFormula=e.isFormula;exports.leafReference=e.leafReference;exports.parseToAST=e.parseToAST;exports.ruleConditionsToNodes=e.ruleConditionsToNodes;exports.rulePayloadToConditionConfig=e.rulePayloadToConditionConfig;exports.serializeAST=e.serializeAST;exports.serializeASTAsConfig=e.serializeASTAsConfig;exports.serializeConditionExpressions=e.serializeConditionExpressions;exports.stripFormulaTokens=e.stripFormulaTokens;exports.tokenize=e.tokenize;exports.unwrapFormula=e.unwrapFormula;exports.useDynamicOptions=e.useDynamicOptions;exports.useOptionsResolvers=e.useOptionsResolvers;exports.useVariablePickerContext=e.useVariablePickerContext;exports.variableSubtreeToValue=e.variableSubtreeToValue;exports.wrapFormula=e.wrapFormula;exports.FIELD_TYPE_OPTIONS=i.FIELD_TYPE_OPTIONS;exports.SchemaBuilder=i.SchemaBuilder;exports.SchemaBuilderDrawer=i.SchemaBuilderDrawer;exports.useFlowForm=i.useFlowForm;
2
2
  //# sourceMappingURL=form.cjs.map
package/dist/form.js CHANGED
@@ -1,5 +1,5 @@
1
- import { D as l, a as t, F as n, b as u, c as d, d as m, I as F, O as T, T as p, V as c, e as S, f as b, g as f, h as y, i as P, j as R, k, l as C, m as g, n as x, o as A, p as h, q as v, r as w, s as D, t as E, u as O, v as V, w as z, x as I, y as _, z as B, A as L, B as N, C as G, E as H, G as K, H as Y, J as j, K as q, L as J, M } from "./index-DfJ_w7XO.js";
2
- import { F as U, S as W, a as X, u as Z } from "./SchemaBuilderDrawer-CF4cJeXJ.js";
1
+ import { D as l, a as t, F as n, b as u, c as d, d as m, I as F, O as T, T as p, V as c, e as S, f as b, g as f, h as y, i as P, j as R, k, l as C, m as g, n as x, o as A, p as h, q as v, r as w, s as D, t as E, u as O, v as V, w as z, x as I, y as _, z as B, A as L, B as N, C as G, E as H, G as K, H as Y, J as j, K as q, L as J, M } from "./index-DxnhBosZ.js";
2
+ import { F as U, S as W, a as X, u as Z } from "./SchemaBuilderDrawer-BTTVCnm_.js";
3
3
  import "react/jsx-runtime";
4
4
  import "react";
5
5
  import "@mui/material";