@upstash/workflow 0.1.1 → 0.1.2-canary-astro

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/nextjs.js CHANGED
@@ -600,15 +600,16 @@ ${atob(callbackMessage.body)}`
600
600
  failureUrl,
601
601
  retries
602
602
  );
603
+ const callResponse = {
604
+ status: callbackMessage.status,
605
+ body: atob(callbackMessage.body),
606
+ header: callbackMessage.header
607
+ };
603
608
  const callResultStep = {
604
609
  stepId: Number(stepIdString),
605
610
  stepName,
606
611
  stepType,
607
- out: {
608
- status: callbackMessage.status,
609
- body: atob(callbackMessage.body),
610
- header: callbackMessage.header
611
- },
612
+ out: JSON.stringify(callResponse),
612
613
  concurrent: Number(concurrentString)
613
614
  };
614
615
  await debug?.log("SUBMIT", "SUBMIT_THIRD_PARTY_RESULT", {
@@ -642,10 +643,11 @@ var getHeaders = (initHeaderValue, workflowRunId, workflowUrl, userHeaders, step
642
643
  const baseHeaders = {
643
644
  [WORKFLOW_INIT_HEADER]: initHeaderValue,
644
645
  [WORKFLOW_ID_HEADER]: workflowRunId,
645
- [WORKFLOW_URL_HEADER]: workflowUrl,
646
- [WORKFLOW_FEATURE_HEADER]: "WF_NoDelete",
647
- [`Upstash-Forward-${WORKFLOW_PROTOCOL_VERSION_HEADER}`]: WORKFLOW_PROTOCOL_VERSION
646
+ [WORKFLOW_URL_HEADER]: workflowUrl
648
647
  };
648
+ if (!step?.callUrl) {
649
+ baseHeaders[`Upstash-Forward-${WORKFLOW_PROTOCOL_VERSION_HEADER}`] = WORKFLOW_PROTOCOL_VERSION;
650
+ }
649
651
  if (failureUrl) {
650
652
  if (!step?.callUrl) {
651
653
  baseHeaders[`Upstash-Failure-Callback-Forward-${WORKFLOW_FAILURE_HEADER}`] = "true";
@@ -654,6 +656,7 @@ var getHeaders = (initHeaderValue, workflowRunId, workflowUrl, userHeaders, step
654
656
  }
655
657
  if (step?.callUrl) {
656
658
  baseHeaders["Upstash-Retries"] = "0";
659
+ baseHeaders[WORKFLOW_FEATURE_HEADER] = "WF_NoDelete";
657
660
  if (retries) {
658
661
  baseHeaders["Upstash-Callback-Retries"] = retries.toString();
659
662
  baseHeaders["Upstash-Failure-Callback-Retries"] = retries.toString();
@@ -1017,6 +1020,7 @@ var AutoExecutor = class _AutoExecutor {
1017
1020
  this.context.retries
1018
1021
  );
1019
1022
  const willWait = singleStep.concurrent === NO_CONCURRENCY || singleStep.stepId === 0;
1023
+ singleStep.out = JSON.stringify(singleStep.out);
1020
1024
  return singleStep.callUrl ? (
1021
1025
  // if the step is a third party call, we call the third party
1022
1026
  // url (singleStep.callUrl) and pass information about the workflow
@@ -1722,7 +1726,7 @@ var getPayload = async (request) => {
1722
1726
  return;
1723
1727
  }
1724
1728
  };
1725
- var parsePayload = (rawPayload) => {
1729
+ var parsePayload = async (rawPayload, debug) => {
1726
1730
  const [encodedInitialPayload, ...encodedSteps] = JSON.parse(rawPayload);
1727
1731
  const rawInitialPayload = decodeBase64(encodedInitialPayload.body);
1728
1732
  const initialStep = {
@@ -1733,17 +1737,27 @@ var parsePayload = (rawPayload) => {
1733
1737
  concurrent: NO_CONCURRENCY
1734
1738
  };
1735
1739
  const stepsToDecode = encodedSteps.filter((step) => step.callType === "step");
1736
- const otherSteps = stepsToDecode.map((rawStep) => {
1737
- const step = JSON.parse(decodeBase64(rawStep.body));
1738
- if (step.waitEventId) {
1739
- const newOut = {
1740
- eventData: step.out,
1741
- timeout: step.waitTimeout ?? false
1742
- };
1743
- step.out = newOut;
1744
- }
1745
- return step;
1746
- });
1740
+ const otherSteps = await Promise.all(
1741
+ stepsToDecode.map(async (rawStep) => {
1742
+ const step = JSON.parse(decodeBase64(rawStep.body));
1743
+ try {
1744
+ step.out = JSON.parse(step.out);
1745
+ } catch {
1746
+ await debug?.log("WARN", "ENDPOINT_START", {
1747
+ message: "failed while parsing out field of step",
1748
+ step
1749
+ });
1750
+ }
1751
+ if (step.waitEventId) {
1752
+ const newOut = {
1753
+ eventData: step.out ? decodeBase64(step.out) : void 0,
1754
+ timeout: step.waitTimeout ?? false
1755
+ };
1756
+ step.out = newOut;
1757
+ }
1758
+ return step;
1759
+ })
1760
+ );
1747
1761
  const steps = [initialStep, ...otherSteps];
1748
1762
  return {
1749
1763
  rawInitialPayload,
@@ -1815,7 +1829,7 @@ var parseRequest = async (requestPayload, isFirstInvocation, debug) => {
1815
1829
  if (!requestPayload) {
1816
1830
  throw new QStashWorkflowError("Only first call can have an empty body");
1817
1831
  }
1818
- const { rawInitialPayload, steps } = parsePayload(requestPayload);
1832
+ const { rawInitialPayload, steps } = await parsePayload(requestPayload, debug);
1819
1833
  const isLastDuplicate = await checkIfLastOneIsDuplicate(steps, debug);
1820
1834
  const deduplicatedSteps = deduplicateSteps(steps);
1821
1835
  return {
package/nextjs.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  serve
3
- } from "./chunk-XPMFG3Q4.mjs";
3
+ } from "./chunk-EKVRVBHL.mjs";
4
4
 
5
5
  // platforms/nextjs.ts
6
6
  var serve2 = (routeFunction, options) => {
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@upstash/workflow","version":"v0.1.1","description":"Durable, Reliable and Performant Serverless Functions","main":"./index.js","module":"./index.mjs","types":"./index.d.ts","files":["./*"],"exports":{".":{"import":"./index.mjs","require":"./index.js"},"./dist/nextjs":{"import":"./nextjs.mjs","require":"./nextjs.js"},"./nextjs":{"import":"./nextjs.mjs","require":"./nextjs.js"},"./h3":{"import":"./h3.mjs","require":"./h3.js"},"./svelte":{"import":"./svelte.mjs","require":"./svelte.js"},"./solidjs":{"import":"./solidjs.mjs","require":"./solidjs.js"},"./workflow":{"import":"./workflow.mjs","require":"./workflow.js"},"./hono":{"import":"./hono.mjs","require":"./hono.js"},"./cloudflare":{"import":"./cloudflare.mjs","require":"./cloudflare.js"}},"scripts":{"build":"tsup && cp README.md ./dist/ && cp package.json ./dist/ && cp LICENSE ./dist/","test":"bun test src","fmt":"prettier --write .","lint":"tsc && eslint \"{src,platforms}/**/*.{js,ts,tsx}\" --quiet --fix","check-exports":"bun run build && cd dist && attw -P"},"repository":{"type":"git","url":"git+https://github.com/upstash/workflow-ts.git"},"keywords":["upstash","qstash","workflow","serverless"],"author":"Cahid Arda Oz","license":"MIT","bugs":{"url":"https://github.com/upstash/workflow-ts/issues"},"homepage":"https://github.com/upstash/workflow-ts#readme","devDependencies":{"@commitlint/cli":"^19.5.0","@commitlint/config-conventional":"^19.5.0","@eslint/js":"^9.11.1","@solidjs/start":"^1.0.8","@sveltejs/kit":"^2.6.1","@types/bun":"^1.1.10","eslint":"^9.11.1","eslint-plugin-unicorn":"^55.0.0","globals":"^15.10.0","h3":"^1.12.0","hono":"^4.6.3","husky":"^9.1.6","next":"^14.2.14","prettier":"3.3.3","tsc":"^2.0.4","tsup":"^8.3.0","typescript":"5.4.5","typescript-eslint":"^8.8.0"},"dependencies":{"@upstash/qstash":"^2.7.12"},"directories":{"example":"examples"}}
1
+ {"name":"@upstash/workflow","version":"v0.1.2-canary-astro","description":"Durable, Reliable and Performant Serverless Functions","main":"./index.js","module":"./index.mjs","types":"./index.d.ts","files":["./*"],"exports":{".":{"import":"./index.mjs","require":"./index.js"},"./dist/nextjs":{"import":"./nextjs.mjs","require":"./nextjs.js"},"./nextjs":{"import":"./nextjs.mjs","require":"./nextjs.js"},"./h3":{"import":"./h3.mjs","require":"./h3.js"},"./svelte":{"import":"./svelte.mjs","require":"./svelte.js"},"./solidjs":{"import":"./solidjs.mjs","require":"./solidjs.js"},"./workflow":{"import":"./workflow.mjs","require":"./workflow.js"},"./hono":{"import":"./hono.mjs","require":"./hono.js"},"./cloudflare":{"import":"./cloudflare.mjs","require":"./cloudflare.js"},"./astro":{"import":"./astro.mjs","require":"./astro.js"}},"scripts":{"build":"tsup && cp README.md ./dist/ && cp package.json ./dist/ && cp LICENSE ./dist/","test":"bun test src","fmt":"prettier --write .","lint":"tsc && eslint \"{src,platforms}/**/*.{js,ts,tsx}\" --quiet --fix","check-exports":"bun run build && cd dist && attw -P"},"repository":{"type":"git","url":"git+https://github.com/upstash/workflow-ts.git"},"keywords":["upstash","qstash","workflow","serverless"],"author":"Cahid Arda Oz","license":"MIT","bugs":{"url":"https://github.com/upstash/workflow-ts/issues"},"homepage":"https://github.com/upstash/workflow-ts#readme","devDependencies":{"@commitlint/cli":"^19.5.0","@commitlint/config-conventional":"^19.5.0","@eslint/js":"^9.11.1","@solidjs/start":"^1.0.8","@sveltejs/kit":"^2.6.1","@types/bun":"^1.1.10","astro":"^4.16.7","eslint":"^9.11.1","eslint-plugin-unicorn":"^55.0.0","globals":"^15.10.0","h3":"^1.12.0","hono":"^4.6.3","husky":"^9.1.6","next":"^14.2.14","prettier":"3.3.3","tsc":"^2.0.4","tsup":"^8.3.0","typescript":"5.4.5","typescript-eslint":"^8.8.0"},"dependencies":{"@upstash/qstash":"^2.7.12"},"directories":{"example":"examples"}}
package/solidjs.js CHANGED
@@ -599,15 +599,16 @@ ${atob(callbackMessage.body)}`
599
599
  failureUrl,
600
600
  retries
601
601
  );
602
+ const callResponse = {
603
+ status: callbackMessage.status,
604
+ body: atob(callbackMessage.body),
605
+ header: callbackMessage.header
606
+ };
602
607
  const callResultStep = {
603
608
  stepId: Number(stepIdString),
604
609
  stepName,
605
610
  stepType,
606
- out: {
607
- status: callbackMessage.status,
608
- body: atob(callbackMessage.body),
609
- header: callbackMessage.header
610
- },
611
+ out: JSON.stringify(callResponse),
611
612
  concurrent: Number(concurrentString)
612
613
  };
613
614
  await debug?.log("SUBMIT", "SUBMIT_THIRD_PARTY_RESULT", {
@@ -641,10 +642,11 @@ var getHeaders = (initHeaderValue, workflowRunId, workflowUrl, userHeaders, step
641
642
  const baseHeaders = {
642
643
  [WORKFLOW_INIT_HEADER]: initHeaderValue,
643
644
  [WORKFLOW_ID_HEADER]: workflowRunId,
644
- [WORKFLOW_URL_HEADER]: workflowUrl,
645
- [WORKFLOW_FEATURE_HEADER]: "WF_NoDelete",
646
- [`Upstash-Forward-${WORKFLOW_PROTOCOL_VERSION_HEADER}`]: WORKFLOW_PROTOCOL_VERSION
645
+ [WORKFLOW_URL_HEADER]: workflowUrl
647
646
  };
647
+ if (!step?.callUrl) {
648
+ baseHeaders[`Upstash-Forward-${WORKFLOW_PROTOCOL_VERSION_HEADER}`] = WORKFLOW_PROTOCOL_VERSION;
649
+ }
648
650
  if (failureUrl) {
649
651
  if (!step?.callUrl) {
650
652
  baseHeaders[`Upstash-Failure-Callback-Forward-${WORKFLOW_FAILURE_HEADER}`] = "true";
@@ -653,6 +655,7 @@ var getHeaders = (initHeaderValue, workflowRunId, workflowUrl, userHeaders, step
653
655
  }
654
656
  if (step?.callUrl) {
655
657
  baseHeaders["Upstash-Retries"] = "0";
658
+ baseHeaders[WORKFLOW_FEATURE_HEADER] = "WF_NoDelete";
656
659
  if (retries) {
657
660
  baseHeaders["Upstash-Callback-Retries"] = retries.toString();
658
661
  baseHeaders["Upstash-Failure-Callback-Retries"] = retries.toString();
@@ -1016,6 +1019,7 @@ var AutoExecutor = class _AutoExecutor {
1016
1019
  this.context.retries
1017
1020
  );
1018
1021
  const willWait = singleStep.concurrent === NO_CONCURRENCY || singleStep.stepId === 0;
1022
+ singleStep.out = JSON.stringify(singleStep.out);
1019
1023
  return singleStep.callUrl ? (
1020
1024
  // if the step is a third party call, we call the third party
1021
1025
  // url (singleStep.callUrl) and pass information about the workflow
@@ -1721,7 +1725,7 @@ var getPayload = async (request) => {
1721
1725
  return;
1722
1726
  }
1723
1727
  };
1724
- var parsePayload = (rawPayload) => {
1728
+ var parsePayload = async (rawPayload, debug) => {
1725
1729
  const [encodedInitialPayload, ...encodedSteps] = JSON.parse(rawPayload);
1726
1730
  const rawInitialPayload = decodeBase64(encodedInitialPayload.body);
1727
1731
  const initialStep = {
@@ -1732,17 +1736,27 @@ var parsePayload = (rawPayload) => {
1732
1736
  concurrent: NO_CONCURRENCY
1733
1737
  };
1734
1738
  const stepsToDecode = encodedSteps.filter((step) => step.callType === "step");
1735
- const otherSteps = stepsToDecode.map((rawStep) => {
1736
- const step = JSON.parse(decodeBase64(rawStep.body));
1737
- if (step.waitEventId) {
1738
- const newOut = {
1739
- eventData: step.out,
1740
- timeout: step.waitTimeout ?? false
1741
- };
1742
- step.out = newOut;
1743
- }
1744
- return step;
1745
- });
1739
+ const otherSteps = await Promise.all(
1740
+ stepsToDecode.map(async (rawStep) => {
1741
+ const step = JSON.parse(decodeBase64(rawStep.body));
1742
+ try {
1743
+ step.out = JSON.parse(step.out);
1744
+ } catch {
1745
+ await debug?.log("WARN", "ENDPOINT_START", {
1746
+ message: "failed while parsing out field of step",
1747
+ step
1748
+ });
1749
+ }
1750
+ if (step.waitEventId) {
1751
+ const newOut = {
1752
+ eventData: step.out ? decodeBase64(step.out) : void 0,
1753
+ timeout: step.waitTimeout ?? false
1754
+ };
1755
+ step.out = newOut;
1756
+ }
1757
+ return step;
1758
+ })
1759
+ );
1746
1760
  const steps = [initialStep, ...otherSteps];
1747
1761
  return {
1748
1762
  rawInitialPayload,
@@ -1814,7 +1828,7 @@ var parseRequest = async (requestPayload, isFirstInvocation, debug) => {
1814
1828
  if (!requestPayload) {
1815
1829
  throw new QStashWorkflowError("Only first call can have an empty body");
1816
1830
  }
1817
- const { rawInitialPayload, steps } = parsePayload(requestPayload);
1831
+ const { rawInitialPayload, steps } = await parsePayload(requestPayload, debug);
1818
1832
  const isLastDuplicate = await checkIfLastOneIsDuplicate(steps, debug);
1819
1833
  const deduplicatedSteps = deduplicateSteps(steps);
1820
1834
  return {
package/solidjs.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  serve
3
- } from "./chunk-XPMFG3Q4.mjs";
3
+ } from "./chunk-EKVRVBHL.mjs";
4
4
 
5
5
  // platforms/solidjs.ts
6
6
  var serve2 = (routeFunction, options) => {
package/svelte.js CHANGED
@@ -599,15 +599,16 @@ ${atob(callbackMessage.body)}`
599
599
  failureUrl,
600
600
  retries
601
601
  );
602
+ const callResponse = {
603
+ status: callbackMessage.status,
604
+ body: atob(callbackMessage.body),
605
+ header: callbackMessage.header
606
+ };
602
607
  const callResultStep = {
603
608
  stepId: Number(stepIdString),
604
609
  stepName,
605
610
  stepType,
606
- out: {
607
- status: callbackMessage.status,
608
- body: atob(callbackMessage.body),
609
- header: callbackMessage.header
610
- },
611
+ out: JSON.stringify(callResponse),
611
612
  concurrent: Number(concurrentString)
612
613
  };
613
614
  await debug?.log("SUBMIT", "SUBMIT_THIRD_PARTY_RESULT", {
@@ -641,10 +642,11 @@ var getHeaders = (initHeaderValue, workflowRunId, workflowUrl, userHeaders, step
641
642
  const baseHeaders = {
642
643
  [WORKFLOW_INIT_HEADER]: initHeaderValue,
643
644
  [WORKFLOW_ID_HEADER]: workflowRunId,
644
- [WORKFLOW_URL_HEADER]: workflowUrl,
645
- [WORKFLOW_FEATURE_HEADER]: "WF_NoDelete",
646
- [`Upstash-Forward-${WORKFLOW_PROTOCOL_VERSION_HEADER}`]: WORKFLOW_PROTOCOL_VERSION
645
+ [WORKFLOW_URL_HEADER]: workflowUrl
647
646
  };
647
+ if (!step?.callUrl) {
648
+ baseHeaders[`Upstash-Forward-${WORKFLOW_PROTOCOL_VERSION_HEADER}`] = WORKFLOW_PROTOCOL_VERSION;
649
+ }
648
650
  if (failureUrl) {
649
651
  if (!step?.callUrl) {
650
652
  baseHeaders[`Upstash-Failure-Callback-Forward-${WORKFLOW_FAILURE_HEADER}`] = "true";
@@ -653,6 +655,7 @@ var getHeaders = (initHeaderValue, workflowRunId, workflowUrl, userHeaders, step
653
655
  }
654
656
  if (step?.callUrl) {
655
657
  baseHeaders["Upstash-Retries"] = "0";
658
+ baseHeaders[WORKFLOW_FEATURE_HEADER] = "WF_NoDelete";
656
659
  if (retries) {
657
660
  baseHeaders["Upstash-Callback-Retries"] = retries.toString();
658
661
  baseHeaders["Upstash-Failure-Callback-Retries"] = retries.toString();
@@ -1016,6 +1019,7 @@ var AutoExecutor = class _AutoExecutor {
1016
1019
  this.context.retries
1017
1020
  );
1018
1021
  const willWait = singleStep.concurrent === NO_CONCURRENCY || singleStep.stepId === 0;
1022
+ singleStep.out = JSON.stringify(singleStep.out);
1019
1023
  return singleStep.callUrl ? (
1020
1024
  // if the step is a third party call, we call the third party
1021
1025
  // url (singleStep.callUrl) and pass information about the workflow
@@ -1721,7 +1725,7 @@ var getPayload = async (request) => {
1721
1725
  return;
1722
1726
  }
1723
1727
  };
1724
- var parsePayload = (rawPayload) => {
1728
+ var parsePayload = async (rawPayload, debug) => {
1725
1729
  const [encodedInitialPayload, ...encodedSteps] = JSON.parse(rawPayload);
1726
1730
  const rawInitialPayload = decodeBase64(encodedInitialPayload.body);
1727
1731
  const initialStep = {
@@ -1732,17 +1736,27 @@ var parsePayload = (rawPayload) => {
1732
1736
  concurrent: NO_CONCURRENCY
1733
1737
  };
1734
1738
  const stepsToDecode = encodedSteps.filter((step) => step.callType === "step");
1735
- const otherSteps = stepsToDecode.map((rawStep) => {
1736
- const step = JSON.parse(decodeBase64(rawStep.body));
1737
- if (step.waitEventId) {
1738
- const newOut = {
1739
- eventData: step.out,
1740
- timeout: step.waitTimeout ?? false
1741
- };
1742
- step.out = newOut;
1743
- }
1744
- return step;
1745
- });
1739
+ const otherSteps = await Promise.all(
1740
+ stepsToDecode.map(async (rawStep) => {
1741
+ const step = JSON.parse(decodeBase64(rawStep.body));
1742
+ try {
1743
+ step.out = JSON.parse(step.out);
1744
+ } catch {
1745
+ await debug?.log("WARN", "ENDPOINT_START", {
1746
+ message: "failed while parsing out field of step",
1747
+ step
1748
+ });
1749
+ }
1750
+ if (step.waitEventId) {
1751
+ const newOut = {
1752
+ eventData: step.out ? decodeBase64(step.out) : void 0,
1753
+ timeout: step.waitTimeout ?? false
1754
+ };
1755
+ step.out = newOut;
1756
+ }
1757
+ return step;
1758
+ })
1759
+ );
1746
1760
  const steps = [initialStep, ...otherSteps];
1747
1761
  return {
1748
1762
  rawInitialPayload,
@@ -1814,7 +1828,7 @@ var parseRequest = async (requestPayload, isFirstInvocation, debug) => {
1814
1828
  if (!requestPayload) {
1815
1829
  throw new QStashWorkflowError("Only first call can have an empty body");
1816
1830
  }
1817
- const { rawInitialPayload, steps } = parsePayload(requestPayload);
1831
+ const { rawInitialPayload, steps } = await parsePayload(requestPayload, debug);
1818
1832
  const isLastDuplicate = await checkIfLastOneIsDuplicate(steps, debug);
1819
1833
  const deduplicatedSteps = deduplicateSteps(steps);
1820
1834
  return {
package/svelte.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  serve
3
- } from "./chunk-XPMFG3Q4.mjs";
3
+ } from "./chunk-EKVRVBHL.mjs";
4
4
 
5
5
  // platforms/svelte.ts
6
6
  var serve2 = (routeFunction, options) => {