@upstash/qstash 2.9.1-rc.1 → 2.10.0

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
@@ -242,6 +242,14 @@ var QstashDailyRatelimitError = class extends QstashError {
242
242
  this.reset = args.reset;
243
243
  }
244
244
  };
245
+ var QstashEmptyArrayError = class extends QstashError {
246
+ constructor(parameterName) {
247
+ super(
248
+ `Empty array provided for query parameter "${parameterName}". This would result in no filter being applied, which could affect all resources.`
249
+ );
250
+ this.name = "QstashEmptyArrayError";
251
+ }
252
+ };
245
253
  var QStashWorkflowError = class extends QstashError {
246
254
  constructor(message) {
247
255
  super(message);
@@ -271,6 +279,7 @@ var formatWorkflowError = (error) => {
271
279
  };
272
280
 
273
281
  // src/client/utils.ts
282
+ var DEFAULT_BULK_COUNT = 100;
274
283
  var isIgnoredHeader = (header) => {
275
284
  const lowerCaseHeader = header.toLowerCase();
276
285
  return lowerCaseHeader.startsWith("content-type") || lowerCaseHeader.startsWith("upstash-");
@@ -357,6 +366,24 @@ function processHeaders(request) {
357
366
  if (request.label !== void 0) {
358
367
  headers.set("Upstash-Label", request.label);
359
368
  }
369
+ if (request.redact !== void 0) {
370
+ const redactParts = [];
371
+ if (request.redact.body) {
372
+ redactParts.push("body");
373
+ }
374
+ if (request.redact.header !== void 0) {
375
+ if (request.redact.header === true) {
376
+ redactParts.push("header");
377
+ } else if (Array.isArray(request.redact.header) && request.redact.header.length > 0) {
378
+ for (const headerName of request.redact.header) {
379
+ redactParts.push(`header[${headerName}]`);
380
+ }
381
+ }
382
+ }
383
+ if (redactParts.length > 0) {
384
+ headers.set("Upstash-Redact-Fields", redactParts.join(","));
385
+ }
386
+ }
360
387
  return headers;
361
388
  }
362
389
  function getRequestPath(request) {
@@ -396,38 +423,39 @@ function decodeBase64(base64) {
396
423
  }
397
424
  }
398
425
  }
399
- function buildBulkActionFilterPayload(request, options) {
400
- const hasDlqIds = "dlqIds" in request && request.dlqIds !== void 0;
401
- const hasAll = "all" in request && Boolean(request.all);
402
- const filterKeys = Object.keys(request).filter((k) => k !== "dlqIds" && k !== "all");
403
- const hasFilters = filterKeys.length > 0;
404
- if (hasDlqIds && hasAll) {
405
- throw new QstashError("dlqIds and all: true are mutually exclusive.");
406
- }
407
- if (hasDlqIds && hasFilters) {
408
- throw new QstashError(
409
- `dlqIds cannot be combined with filter fields: ${filterKeys.join(", ")}.`
410
- );
426
+ function buildBulkActionFilterPayload(request) {
427
+ const cursor = "cursor" in request ? request.cursor : void 0;
428
+ if ("all" in request) {
429
+ const count2 = "count" in request ? request.count ?? DEFAULT_BULK_COUNT : DEFAULT_BULK_COUNT;
430
+ return { count: count2, cursor };
431
+ }
432
+ if ("dlqIds" in request) {
433
+ const ids = request.dlqIds;
434
+ if (Array.isArray(ids) && ids.length === 0) {
435
+ throw new QstashError(
436
+ "Empty dlqIds array provided. If you intend to target all DLQ messages, use { all: true } explicitly."
437
+ );
438
+ }
439
+ return { dlqIds: ids, cursor };
411
440
  }
412
- if (hasAll && hasFilters) {
413
- throw new QstashError(
414
- `all: true cannot be combined with filter fields: ${filterKeys.join(", ")}.`
415
- );
441
+ if ("messageIds" in request && request.messageIds) {
442
+ if (request.messageIds.length === 0) {
443
+ throw new QstashError(
444
+ "Empty messageIds array provided. If you intend to target all messages, use { all: true } explicitly."
445
+ );
446
+ }
447
+ return { messageIds: request.messageIds, cursor };
416
448
  }
417
- if (hasAll)
418
- return {};
419
- const { urlGroup, callerIp, ...rest } = request;
420
- const payload = {
421
- ...rest,
422
- ...urlGroup === void 0 || typeof urlGroup !== "string" ? {} : { topicName: urlGroup },
423
- ...callerIp === void 0 || typeof callerIp !== "string" ? {} : options?.callerIpCasing ? { callerIP: callerIp } : { callerIp }
449
+ const count = "count" in request ? request.count ?? DEFAULT_BULK_COUNT : DEFAULT_BULK_COUNT;
450
+ return {
451
+ ...renameUrlGroup(request.filter),
452
+ count,
453
+ cursor
424
454
  };
425
- if (Object.keys(payload).length === 0) {
426
- throw new QstashError(
427
- "No filters provided. Pass { all: true } to explicitly target all messages."
428
- );
429
- }
430
- return payload;
455
+ }
456
+ function renameUrlGroup(filter) {
457
+ const { urlGroup, api, ...rest } = filter;
458
+ return { ...rest, ...urlGroup === void 0 ? {} : { topicName: urlGroup } };
431
459
  }
432
460
  function normalizeCursor(response) {
433
461
  const cursor = response.cursor;
@@ -661,23 +689,21 @@ var DLQ = class {
661
689
  }
662
690
  /**
663
691
  * List messages in the dlq
692
+ *
693
+ * Can be called with:
694
+ * - Filters: `listMessages({ filter: { url: "https://example.com" } })`
695
+ * - DLQ IDs: `listMessages({ dlqIds: ["id1", "id2"] })`
696
+ * - No filter (list all): `listMessages()`
664
697
  */
665
698
  async listMessages(options = {}) {
666
- const { urlGroup, ...restFilter } = options.filter ?? {};
667
- const filterPayload = {
668
- ...restFilter,
669
- ...urlGroup === void 0 ? {} : { topicName: urlGroup }
699
+ const query = {
700
+ count: options.count,
701
+ ..."dlqIds" in options ? { dlqIds: options.dlqIds } : { ...renameUrlGroup(options.filter ?? {}), cursor: options.cursor }
670
702
  };
671
703
  const messagesPayload = await this.http.request({
672
704
  method: "GET",
673
705
  path: ["v2", "dlq"],
674
- query: {
675
- cursor: options.cursor,
676
- count: options.count,
677
- order: options.order,
678
- trimBody: options.trimBody,
679
- ...filterPayload
680
- }
706
+ query
681
707
  });
682
708
  return {
683
709
  messages: messagesPayload.messages.map((message) => {
@@ -697,10 +723,19 @@ var DLQ = class {
697
723
  * - A single dlqId: `delete("id")`
698
724
  * - An array of dlqIds: `delete(["id1", "id2"])`
699
725
  * - An object with dlqIds: `delete({ dlqIds: ["id1", "id2"] })`
700
- * - A filter object: `delete({ url: "https://example.com", label: "label" })`
726
+ * - A filter object: `delete({ filter: { url: "https://example.com", label: "label" } })`
701
727
  * - All messages: `delete({ all: true })`
702
728
  *
703
- * Note: passing an empty array returns `{ deleted: 0 }` without making a request.
729
+ * Pass `count` to limit the number of messages processed per call (defaults to 100).
730
+ * Call in a loop until cursor is undefined:
731
+ *
732
+ * ```ts
733
+ * let cursor: string | undefined;
734
+ * do {
735
+ * const result = await dlq.delete({ all: true, count: 100, cursor });
736
+ * cursor = result.cursor;
737
+ * } while (cursor);
738
+ * ```
704
739
  */
705
740
  async delete(request) {
706
741
  if (typeof request === "string") {
@@ -714,13 +749,11 @@ var DLQ = class {
714
749
  if (Array.isArray(request) && request.length === 0)
715
750
  return { deleted: 0 };
716
751
  const filters = Array.isArray(request) ? { dlqIds: request } : request;
717
- return normalizeCursor(
718
- await this.http.request({
719
- method: "DELETE",
720
- path: ["v2", "dlq"],
721
- query: buildBulkActionFilterPayload(filters)
722
- })
723
- );
752
+ return await this.http.request({
753
+ method: "DELETE",
754
+ path: ["v2", "dlq"],
755
+ query: buildBulkActionFilterPayload(filters)
756
+ });
724
757
  }
725
758
  /**
726
759
  * Remove multiple messages from the dlq using their `dlqId`s
@@ -737,10 +770,19 @@ var DLQ = class {
737
770
  * - A single dlqId: `retry("id")`
738
771
  * - An array of dlqIds: `retry(["id1", "id2"])`
739
772
  * - An object with dlqIds: `retry({ dlqIds: ["id1", "id2"] })`
740
- * - A filter object: `retry({ url: "https://example.com", label: "label" })`
773
+ * - A filter object: `retry({ filter: { url: "https://example.com", label: "label" } })`
741
774
  * - All messages: `retry({ all: true })`
742
775
  *
743
- * Note: passing an empty array returns `{ responses: [] }` without making a request.
776
+ * Pass `count` to limit the number of messages processed per call (defaults to 100).
777
+ * Call in a loop until cursor is undefined:
778
+ *
779
+ * ```ts
780
+ * let cursor: string | undefined;
781
+ * do {
782
+ * const result = await dlq.retry({ all: true, count: 100, cursor });
783
+ * cursor = result.cursor;
784
+ * } while (cursor);
785
+ * ```
744
786
  */
745
787
  async retry(request) {
746
788
  if (typeof request === "string")
@@ -758,6 +800,107 @@ var DLQ = class {
758
800
  }
759
801
  };
760
802
 
803
+ // src/client/flow-control.ts
804
+ var FlowControlApi = class {
805
+ http;
806
+ constructor(http) {
807
+ this.http = http;
808
+ }
809
+ /**
810
+ * Get a single flow control by key.
811
+ */
812
+ async get(flowControlKey) {
813
+ return await this.http.request({
814
+ method: "GET",
815
+ path: ["v2", "flowControl", flowControlKey]
816
+ });
817
+ }
818
+ /**
819
+ * Get the global parallelism info.
820
+ */
821
+ async getGlobalParallelism() {
822
+ const response = await this.http.request({
823
+ method: "GET",
824
+ path: ["v2", "globalParallelism"]
825
+ });
826
+ return {
827
+ parallelismMax: response.parallelismMax ?? 0,
828
+ parallelismCount: response.parallelismCount ?? 0
829
+ };
830
+ }
831
+ /**
832
+ * Pause message delivery for a flow-control key.
833
+ *
834
+ * Messages already in the waitlist will remain there.
835
+ * New incoming messages will be added directly to the waitlist.
836
+ */
837
+ async pause(flowControlKey) {
838
+ await this.http.request({
839
+ method: "POST",
840
+ path: ["v2", "flowControl", flowControlKey, "pause"],
841
+ parseResponseAsJson: false
842
+ });
843
+ }
844
+ /**
845
+ * Resume message delivery for a flow-control key.
846
+ */
847
+ async resume(flowControlKey) {
848
+ await this.http.request({
849
+ method: "POST",
850
+ path: ["v2", "flowControl", flowControlKey, "resume"],
851
+ parseResponseAsJson: false
852
+ });
853
+ }
854
+ /**
855
+ * Pin a processing configuration for a flow-control key.
856
+ *
857
+ * While pinned, the system ignores configurations provided by incoming
858
+ * messages and uses the pinned configuration instead.
859
+ */
860
+ async pin(flowControlKey, options) {
861
+ await this.http.request({
862
+ method: "POST",
863
+ path: ["v2", "flowControl", flowControlKey, "pin"],
864
+ query: {
865
+ parallelism: options.parallelism,
866
+ rate: options.rate,
867
+ period: options.period
868
+ },
869
+ parseResponseAsJson: false
870
+ });
871
+ }
872
+ /**
873
+ * Remove the pinned configuration for a flow-control key.
874
+ *
875
+ * After unpinning, the system resumes updating the configuration
876
+ * based on incoming messages.
877
+ */
878
+ async unpin(flowControlKey, options) {
879
+ await this.http.request({
880
+ method: "POST",
881
+ path: ["v2", "flowControl", flowControlKey, "unpin"],
882
+ query: {
883
+ parallelism: options.parallelism,
884
+ rate: options.rate
885
+ },
886
+ parseResponseAsJson: false
887
+ });
888
+ }
889
+ /**
890
+ * Reset the rate configuration state for a flow-control key.
891
+ *
892
+ * Clears the current rate count and immediately ends the current period.
893
+ * The current timestamp becomes the start of the new rate period.
894
+ */
895
+ async resetRate(flowControlKey) {
896
+ await this.http.request({
897
+ method: "POST",
898
+ path: ["v2", "flowControl", flowControlKey, "resetRate"],
899
+ parseResponseAsJson: false
900
+ });
901
+ }
902
+ };
903
+
761
904
  // src/client/http.ts
762
905
  var HttpClient = class {
763
906
  baseUrl;
@@ -858,6 +1001,9 @@ var HttpClient = class {
858
1001
  if (value === void 0)
859
1002
  continue;
860
1003
  if (Array.isArray(value)) {
1004
+ if (value.length === 0) {
1005
+ throw new QstashEmptyArrayError(key);
1006
+ }
861
1007
  for (const item of value) {
862
1008
  url.searchParams.append(key, item);
863
1009
  }
@@ -1099,8 +1245,19 @@ var Messages = class {
1099
1245
  * Can be called with:
1100
1246
  * - A single messageId: `cancel("id")`
1101
1247
  * - An array of messageIds: `cancel(["id1", "id2"])`
1102
- * - A filter object: `cancel({ flowControlKey: "key", label: "label" })`
1248
+ * - A filter object: `cancel({ filter: { flowControlKey: "key", label: "label" } })`
1103
1249
  * - All messages: `cancel({ all: true })`
1250
+ *
1251
+ * Pass `count` to limit the number of messages processed per call (defaults to 100).
1252
+ * Call in a loop until `cancelled` is 0:
1253
+ *
1254
+ * ```ts
1255
+ * let cancelled: number;
1256
+ * do {
1257
+ * const result = await messages.cancel({ all: true, count: 100 });
1258
+ * cancelled = result.cancelled;
1259
+ * } while (cancelled > 0);
1260
+ * ```
1104
1261
  */
1105
1262
  async cancel(request) {
1106
1263
  if (typeof request === "string") {
@@ -1115,7 +1272,7 @@ var Messages = class {
1115
1272
  return await this.http.request({
1116
1273
  method: "DELETE",
1117
1274
  path: ["v2", "messages"],
1118
- query: buildBulkActionFilterPayload(filters, { callerIpCasing: true })
1275
+ query: buildBulkActionFilterPayload(filters)
1119
1276
  });
1120
1277
  }
1121
1278
  /**
@@ -1349,6 +1506,24 @@ var Schedules = class {
1349
1506
  if (request.label !== void 0) {
1350
1507
  headers.set("Upstash-Label", request.label);
1351
1508
  }
1509
+ if (request.redact !== void 0) {
1510
+ const redactParts = [];
1511
+ if (request.redact.body) {
1512
+ redactParts.push("body");
1513
+ }
1514
+ if (request.redact.header !== void 0) {
1515
+ if (request.redact.header === true) {
1516
+ redactParts.push("header");
1517
+ } else if (Array.isArray(request.redact.header) && request.redact.header.length > 0) {
1518
+ for (const headerName of request.redact.header) {
1519
+ redactParts.push(`header[${headerName}]`);
1520
+ }
1521
+ }
1522
+ }
1523
+ if (redactParts.length > 0) {
1524
+ headers.set("Upstash-Redact-Fields", redactParts.join(","));
1525
+ }
1526
+ }
1352
1527
  return await this.http.request({
1353
1528
  method: "POST",
1354
1529
  headers: wrapWithGlobalHeaders(headers, this.http.headers, this.http.telemetryHeaders),
@@ -1478,7 +1653,7 @@ var UrlGroups = class {
1478
1653
  };
1479
1654
 
1480
1655
  // version.ts
1481
- var VERSION = "v2.9.1-rc.1";
1656
+ var VERSION = "2.10.0";
1482
1657
 
1483
1658
  // src/client/client.ts
1484
1659
  var Client = class {
@@ -1549,6 +1724,14 @@ var Client = class {
1549
1724
  get schedules() {
1550
1725
  return new Schedules(this.http);
1551
1726
  }
1727
+ /**
1728
+ * Access the flow control API.
1729
+ *
1730
+ * List, get, or reset flow controls.
1731
+ */
1732
+ get flowControl() {
1733
+ return new FlowControlApi(this.http);
1734
+ }
1552
1735
  /**
1553
1736
  * Access the workflow API.
1554
1737
  *
@@ -1674,38 +1857,9 @@ var Client = class {
1674
1857
  * ```
1675
1858
  */
1676
1859
  async logs(request = {}) {
1677
- const {
1678
- urlGroup,
1679
- // eslint-disable-next-line @typescript-eslint/no-deprecated
1680
- topicName,
1681
- fromDate,
1682
- toDate,
1683
- callerIp,
1684
- messageIds,
1685
- // eslint-disable-next-line @typescript-eslint/no-deprecated
1686
- count: filterCount,
1687
- ...restFilter
1688
- } = request.filter ?? {};
1689
- const filterPayload = {
1690
- ...restFilter,
1691
- topicName: urlGroup ?? topicName,
1692
- fromDate,
1693
- toDate,
1694
- callerIp
1695
- };
1696
- let cursorString;
1697
- if (typeof request.cursor === "number" && request.cursor > 0) {
1698
- cursorString = request.cursor.toString();
1699
- } else if (typeof request.cursor === "string" && request.cursor !== "") {
1700
- cursorString = request.cursor;
1701
- }
1702
1860
  const query = {
1703
- cursor: cursorString,
1704
- count: request.count ?? filterCount,
1705
- order: request.order,
1706
- trimBody: request.trimBody,
1707
- messageIds,
1708
- ...filterPayload
1861
+ count: request.count,
1862
+ ..."messageIds" in request ? { messageIds: request.messageIds } : { ...renameUrlGroup(request.filter ?? {}), cursor: request.cursor }
1709
1863
  };
1710
1864
  const responsePayload = await this.http.request({
1711
1865
  path: ["v2", "events"],
package/nextjs.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Receiver,
3
3
  serve
4
- } from "./chunk-RUCOF5QZ.mjs";
4
+ } from "./chunk-X3MMU3BQ.mjs";
5
5
 
6
6
  // platforms/nextjs.ts
7
7
  var BAD_REQUEST = 400;
package/nuxt.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  verifySignatureH3
3
- } from "./chunk-STWPT5EV.mjs";
4
- import "./chunk-SN6OPGRS.mjs";
5
- import "./chunk-RUCOF5QZ.mjs";
3
+ } from "./chunk-FE7GQ4RU.mjs";
4
+ import "./chunk-FAMFGAMR.mjs";
5
+ import "./chunk-X3MMU3BQ.mjs";
6
6
 
7
7
  // platforms/nuxt.ts
8
8
  var verifySignatureNuxt = verifySignatureH3;
package/package.json CHANGED
@@ -1 +1 @@
1
- {"version":"v2.9.1-rc.1","name":"@upstash/qstash","description":"Official Typescript client for QStash","author":"Andreas Thomas <dev@chronark.com>","license":"MIT","homepage":"https://github.com/upstash/qstash-js#readme","repository":{"type":"git","url":"git+https://github.com/upstash/qstash-js.git"},"bugs":{"url":"https://github.com/upstash/qstash-js/issues"},"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"},"./nuxt":{"import":"./nuxt.mjs","require":"./nuxt.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"}},"keywords":["qstash","queue","events","serverless","upstash"],"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"},"devDependencies":{"@commitlint/cli":"^19.2.2","@commitlint/config-conventional":"^19.2.2","@eslint/eslintrc":"^3.1.0","@eslint/js":"^9.10.0","@solidjs/start":"^1.0.6","@sveltejs/kit":"^2.5.18","@types/bun":"^1.1.1","@types/crypto-js":"^4.2.0","@typescript-eslint/eslint-plugin":"^8.4.0","@typescript-eslint/parser":"^8.4.0","bun-types":"^1.1.7","eslint":"^9.10.0","eslint-plugin-unicorn":"^51.0.1","h3":"^1.12.0","hono":"^4.5.8","husky":"^9.0.10","next":"^14.0.2","prettier":"^3.2.5","tsup":"latest","typescript":"^5.4.5","undici-types":"^6.16.0","vitest":"latest"},"dependencies":{"crypto-js":">=4.2.0","jose":"^5.2.3","neverthrow":"^7.0.1"}}
1
+ {"version":"2.10.0","name":"@upstash/qstash","description":"Official Typescript client for QStash","author":"Andreas Thomas <dev@chronark.com>","license":"MIT","homepage":"https://github.com/upstash/qstash-js#readme","repository":{"type":"git","url":"git+https://github.com/upstash/qstash-js.git"},"bugs":{"url":"https://github.com/upstash/qstash-js/issues"},"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"},"./nuxt":{"import":"./nuxt.mjs","require":"./nuxt.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"}},"keywords":["qstash","queue","events","serverless","upstash"],"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"},"devDependencies":{"@commitlint/cli":"^19.2.2","@commitlint/config-conventional":"^19.2.2","@eslint/eslintrc":"^3.1.0","@eslint/js":"^9.10.0","@solidjs/start":"^1.0.6","@sveltejs/kit":"^2.5.18","@types/bun":"^1.1.1","@types/crypto-js":"^4.2.0","@typescript-eslint/eslint-plugin":"^8.4.0","@typescript-eslint/parser":"^8.4.0","bun-types":"^1.1.7","eslint":"^9.10.0","eslint-plugin-unicorn":"^51.0.1","h3":"^1.12.0","hono":"^4.5.8","husky":"^9.0.10","next":"^14.0.2","prettier":"^3.2.5","tsup":"latest","typescript":"^5.4.5","undici-types":"^6.16.0","vitest":"latest"},"dependencies":{"crypto-js":">=4.2.0","jose":"^5.2.3","neverthrow":"^7.0.1"}}
package/solidjs.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { APIHandler, APIEvent } from '@solidjs/start/server';
2
- import { aa as RouteFunction, ab as WorkflowServeOptions } from './client-Gv4WRTxB.mjs';
2
+ import { ae as RouteFunction, af as WorkflowServeOptions } from './client-CsM1dTnz.mjs';
3
3
  import 'neverthrow';
4
4
 
5
5
  type VerifySignatureConfig = {
package/solidjs.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { APIHandler, APIEvent } from '@solidjs/start/server';
2
- import { aa as RouteFunction, ab as WorkflowServeOptions } from './client-Gv4WRTxB.js';
2
+ import { ae as RouteFunction, af as WorkflowServeOptions } from './client-CsM1dTnz.js';
3
3
  import 'neverthrow';
4
4
 
5
5
  type VerifySignatureConfig = {