@teleporthq/teleport-plugin-next-workflows 0.43.44 → 0.43.46

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 (33) hide show
  1. package/__tests__/_helpers/run-generated-middleware.ts +130 -0
  2. package/__tests__/form-submitted-trigger-context.test.ts +100 -0
  3. package/__tests__/middleware-guest-order-details.test.ts +258 -0
  4. package/__tests__/middleware-row-owned-pages.test.ts +32 -9
  5. package/dist/cjs/auth-generator.d.ts.map +1 -1
  6. package/dist/cjs/auth-generator.js +115 -11
  7. package/dist/cjs/auth-generator.js.map +1 -1
  8. package/dist/cjs/executor-generator.d.ts.map +1 -1
  9. package/dist/cjs/executor-generator.js +26 -1
  10. package/dist/cjs/executor-generator.js.map +1 -1
  11. package/dist/cjs/trigger-generator.js +7 -1
  12. package/dist/cjs/trigger-generator.js.map +1 -1
  13. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  14. package/dist/cjs/workflow-component-plugin.d.ts.map +1 -1
  15. package/dist/cjs/workflow-component-plugin.js +27 -2
  16. package/dist/cjs/workflow-component-plugin.js.map +1 -1
  17. package/dist/esm/auth-generator.d.ts.map +1 -1
  18. package/dist/esm/auth-generator.js +115 -11
  19. package/dist/esm/auth-generator.js.map +1 -1
  20. package/dist/esm/executor-generator.d.ts.map +1 -1
  21. package/dist/esm/executor-generator.js +26 -1
  22. package/dist/esm/executor-generator.js.map +1 -1
  23. package/dist/esm/trigger-generator.js +7 -1
  24. package/dist/esm/trigger-generator.js.map +1 -1
  25. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  26. package/dist/esm/workflow-component-plugin.d.ts.map +1 -1
  27. package/dist/esm/workflow-component-plugin.js +27 -2
  28. package/dist/esm/workflow-component-plugin.js.map +1 -1
  29. package/package.json +4 -4
  30. package/src/auth-generator.ts +129 -11
  31. package/src/executor-generator.ts +26 -1
  32. package/src/trigger-generator.ts +7 -1
  33. package/src/workflow-component-plugin.ts +31 -2
@@ -255,7 +255,20 @@ export const createNextWorkflowPlugin: ComponentPluginFactory<WorkflowPluginConf
255
255
  if (elementId) {
256
256
  elementTriggers.push({ workflow: wf, elementId, reactProp, triggerConfig })
257
257
  } else {
258
- lifecycleWorkflows.push(wf)
258
+ // An element-event trigger (click/change/submit/…) with NO bound
259
+ // element cannot fire — the author detached it or never wired it.
260
+ // It used to fall through to lifecycleWorkflows, where the trigger
261
+ // switch has no case for element events: the workflow never
262
+ // executed but its full __wfConfig_* blob still shipped in every
263
+ // page bundle (element scope with no selectedPages matches ALL
264
+ // pages). Skip it entirely — an unbound workflow stays a draft in
265
+ // the project without leaking into the generated app.
266
+ // eslint-disable-next-line no-console
267
+ console.warn(
268
+ `[workflow-plugin] Skipping workflow "${wf.name || wf.id}" on "${uidl.name}" — its ${
269
+ trigger.type
270
+ } trigger has no bound element.`
271
+ )
259
272
  }
260
273
  } else {
261
274
  lifecycleWorkflows.push(wf)
@@ -1760,13 +1773,29 @@ const generateElementHandler = (et: ElementTriggerInfo): string => {
1760
1773
 
1761
1774
  case 'event-form-submitted': {
1762
1775
  const preventDefault = config.preventDefault !== false
1776
+ // The submitted fields are spread FLAT onto the trigger context as well as
1777
+ // being available under `formData`.
1778
+ //
1779
+ // WHY: `params[0]` of a top-level custom-js node is the TRIGGER (the
1780
+ // executor writes `context[triggerNodeId]` first), and generated
1781
+ // validators read the form off it directly. Run 4b049fe6's Edit Guild did
1782
+ // `const form = params[0] || {}; … if (!form["name"]) return "Guild Name
1783
+ // is required"` — `params[0].name` was undefined because the fields lived
1784
+ // one level down, so saving a guild whose name was filled in reported the
1785
+ // name as missing. `general-extract-form-data` already returns its fields
1786
+ // flat for exactly this reason; the trigger now matches it, so both
1787
+ // `params[0].name` and `params[0].formData.name` resolve.
1788
+ //
1789
+ // The spread comes FIRST so a field literally named `formData`, `formId`,
1790
+ // `element` or `timestamp` can never shadow the reserved keys the runtime
1791
+ // and the workflow editor depend on.
1763
1792
  return (
1764
1793
  `async function(event) {\n` +
1765
1794
  (preventDefault ? ' event.preventDefault();\n' : '') +
1766
1795
  ` const formData = {};\n` +
1767
1796
  ` const fd = new FormData(event.target);\n` +
1768
1797
  ` fd.forEach(function(v, k) { formData[k] = v; });\n` +
1769
- ` const triggerContext = { formData: formData, formId: '${elementId}', triggerElement: event.target, element: event.target, timestamp: Date.now() };\n` +
1798
+ ` const triggerContext = Object.assign({}, formData, { fields: formData, formData: formData, formId: '${elementId}', triggerElement: event.target, element: event.target, timestamp: Date.now() });\n` +
1770
1799
  ` return __execWf(__wfConfig_${safeId}, triggerContext, __wfServerUrls_${safeId});\n` +
1771
1800
  ` }`
1772
1801
  )