@upstash/qstash 2.7.17 → 2.7.19

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.
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Receiver,
3
3
  serve
4
- } from "./chunk-2V6WQVIN.mjs";
4
+ } from "./chunk-S5ODGXCI.mjs";
5
5
 
6
6
  // node_modules/defu/dist/defu.mjs
7
7
  function isPlainObject(value) {
@@ -1,11 +1,12 @@
1
1
  import {
2
2
  BaseProvider
3
- } from "./chunk-2V6WQVIN.mjs";
3
+ } from "./chunk-S5ODGXCI.mjs";
4
4
 
5
5
  // src/client/api/email.ts
6
6
  var EmailProvider = class extends BaseProvider {
7
7
  apiKind = "email";
8
8
  batch;
9
+ method = "POST";
9
10
  constructor(baseUrl, token, owner, batch) {
10
11
  super(baseUrl, token, owner);
11
12
  this.batch = batch;
@@ -15,7 +16,7 @@ var EmailProvider = class extends BaseProvider {
15
16
  }
16
17
  getHeaders(_options) {
17
18
  return {
18
- "upstash-forward-authorization": `Bearer ${this.token}`
19
+ authorization: `Bearer ${this.token}`
19
20
  };
20
21
  }
21
22
  onFinish(providerInfo, _options) {
@@ -201,6 +201,7 @@ var HttpClient = class {
201
201
  authorization;
202
202
  options;
203
203
  retry;
204
+ headers;
204
205
  constructor(config) {
205
206
  this.baseUrl = config.baseUrl.replace(/\/$/, "");
206
207
  this.authorization = config.authorization;
@@ -212,6 +213,7 @@ var HttpClient = class {
212
213
  attempts: config.retry?.retries ?? 5,
213
214
  backoff: config.retry?.backoff ?? ((retryCount) => Math.exp(retryCount) * 50)
214
215
  };
216
+ this.headers = config.headers;
215
217
  }
216
218
  async request(request) {
217
219
  const { response } = await this.requestWithBackoff(request);
@@ -564,6 +566,7 @@ var BaseProvider = class {
564
566
  var LLMProvider = class extends BaseProvider {
565
567
  apiKind = "llm";
566
568
  organization;
569
+ method = "POST";
567
570
  constructor(baseUrl, token, owner, organization) {
568
571
  super(baseUrl, token, owner);
569
572
  this.organization = organization;
@@ -640,15 +643,24 @@ var getProviderInfo = (api, upstashToken) => {
640
643
  baseUrl: finalProvider.baseUrl,
641
644
  route: finalProvider.getRoute(),
642
645
  appendHeaders: finalProvider.getHeaders(parameters),
643
- owner: finalProvider.owner
646
+ owner: finalProvider.owner,
647
+ method: finalProvider.method
644
648
  };
645
649
  return finalProvider.onFinish(providerInfo, parameters);
646
650
  };
647
- var processApi = (request, upstashToken) => {
651
+ var safeJoinHeaders = (headers, record) => {
652
+ const joinedHeaders = new Headers(record);
653
+ for (const [header, value] of headers.entries()) {
654
+ joinedHeaders.set(header, value);
655
+ }
656
+ return joinedHeaders;
657
+ };
658
+ var processApi = (request, headers, upstashToken) => {
648
659
  if (!request.api) {
660
+ request.headers = headers;
649
661
  return request;
650
662
  }
651
- const { url, appendHeaders, owner } = getProviderInfo(request.api, upstashToken);
663
+ const { url, appendHeaders, owner, method } = getProviderInfo(request.api, upstashToken);
652
664
  if (request.api.name === "llm") {
653
665
  const callback = request.callback;
654
666
  if (!callback) {
@@ -656,21 +668,15 @@ var processApi = (request, upstashToken) => {
656
668
  }
657
669
  return {
658
670
  ...request,
659
- // @ts-expect-error undici header conflict
660
- headers: new Headers({
661
- ...request.headers,
662
- ...appendHeaders
663
- }),
671
+ method: request.method ?? method,
672
+ headers: safeJoinHeaders(headers, appendHeaders),
664
673
  ...owner === "upstash" && !request.api.analytics ? { api: { name: "llm" }, url: void 0, callback } : { url, api: void 0 }
665
674
  };
666
675
  } else {
667
676
  return {
668
677
  ...request,
669
- // @ts-expect-error undici header conflict
670
- headers: new Headers({
671
- ...request.headers,
672
- ...appendHeaders
673
- }),
678
+ method: request.method ?? method,
679
+ headers: safeJoinHeaders(headers, appendHeaders),
674
680
  url,
675
681
  api: void 0
676
682
  };
@@ -718,6 +724,16 @@ function prefixHeaders(headers) {
718
724
  }
719
725
  return headers;
720
726
  }
727
+ function wrapWithGlobalHeaders(headers, globalHeaders) {
728
+ if (!globalHeaders) {
729
+ return headers;
730
+ }
731
+ const finalHeaders = new Headers(globalHeaders);
732
+ headers.forEach((value, key) => {
733
+ finalHeaders.set(key, value);
734
+ });
735
+ return finalHeaders;
736
+ }
721
737
  function processHeaders(request) {
722
738
  const headers = prefixHeaders(new Headers(request.headers));
723
739
  headers.set("Upstash-Method", request.method ?? "POST");
@@ -864,7 +880,10 @@ var Queue = class {
864
880
  if (!this.queueName) {
865
881
  throw new Error("Please provide a queue name to the Queue constructor");
866
882
  }
867
- const headers = processHeaders(request);
883
+ const headers = wrapWithGlobalHeaders(
884
+ processHeaders(request),
885
+ this.http.headers
886
+ );
868
887
  const destination = getRequestPath(request);
869
888
  const response = await this.http.request({
870
889
  path: ["v2", "enqueue", this.queueName, destination],
@@ -880,13 +899,11 @@ var Queue = class {
880
899
  async enqueueJSON(request) {
881
900
  const headers = prefixHeaders(new Headers(request.headers));
882
901
  headers.set("Content-Type", "application/json");
883
- request.headers = headers;
884
902
  const upstashToken = String(this.http.authorization).split("Bearer ")[1];
885
- const nonApiRequest = processApi(request, upstashToken);
903
+ const nonApiRequest = processApi(request, headers, upstashToken);
886
904
  const response = await this.enqueue({
887
905
  ...nonApiRequest,
888
- body: JSON.stringify(nonApiRequest.body),
889
- headers
906
+ body: JSON.stringify(nonApiRequest.body)
890
907
  });
891
908
  return response;
892
909
  }
@@ -970,7 +987,7 @@ var Schedules = class {
970
987
  }
971
988
  return await this.http.request({
972
989
  method: "POST",
973
- headers,
990
+ headers: wrapWithGlobalHeaders(headers, this.http.headers),
974
991
  path: ["v2", "schedules", request.destination],
975
992
  body: request.body
976
993
  });
@@ -1096,7 +1113,9 @@ var Client = class {
1096
1113
  this.http = new HttpClient({
1097
1114
  retry: config.retry,
1098
1115
  baseUrl: config.baseUrl ? config.baseUrl.replace(/\/$/, "") : "https://qstash.upstash.io",
1099
- authorization: `Bearer ${config.token}`
1116
+ authorization: `Bearer ${config.token}`,
1117
+ //@ts-expect-error caused by undici and bunjs type overlap
1118
+ headers: prefixHeaders(new Headers(config.headers))
1100
1119
  });
1101
1120
  this.token = config.token;
1102
1121
  }
@@ -1171,7 +1190,10 @@ var Client = class {
1171
1190
  return new Chat(this.http, this.token);
1172
1191
  }
1173
1192
  async publish(request) {
1174
- const headers = processHeaders(request);
1193
+ const headers = wrapWithGlobalHeaders(
1194
+ processHeaders(request),
1195
+ this.http.headers
1196
+ );
1175
1197
  const response = await this.http.request({
1176
1198
  path: ["v2", "publish", getRequestPath(request)],
1177
1199
  body: request.body,
@@ -1187,9 +1209,8 @@ var Client = class {
1187
1209
  async publishJSON(request) {
1188
1210
  const headers = prefixHeaders(new Headers(request.headers));
1189
1211
  headers.set("Content-Type", "application/json");
1190
- request.headers = headers;
1191
1212
  const upstashToken = String(this.http.authorization).split("Bearer ")[1];
1192
- const nonApiRequest = processApi(request, upstashToken);
1213
+ const nonApiRequest = processApi(request, headers, upstashToken);
1193
1214
  const response = await this.publish({
1194
1215
  ...nonApiRequest,
1195
1216
  body: JSON.stringify(nonApiRequest.body)
@@ -1202,7 +1223,7 @@ var Client = class {
1202
1223
  async batch(request) {
1203
1224
  const messages = [];
1204
1225
  for (const message of request) {
1205
- const headers = processHeaders(message);
1226
+ const headers = wrapWithGlobalHeaders(processHeaders(message), this.http.headers);
1206
1227
  const headerEntries = Object.fromEntries(headers.entries());
1207
1228
  messages.push({
1208
1229
  destination: getRequestPath(message),
@@ -1230,9 +1251,8 @@ var Client = class {
1230
1251
  if ("body" in message) {
1231
1252
  message.body = JSON.stringify(message.body);
1232
1253
  }
1233
- message.headers = new Headers(message.headers);
1234
1254
  const upstashToken = String(this.http.authorization).split("Bearer ")[1];
1235
- const nonApiMessage = processApi(message, upstashToken);
1255
+ const nonApiMessage = processApi(message, new Headers(message.headers), upstashToken);
1236
1256
  nonApiMessage.headers.set("Content-Type", "application/json");
1237
1257
  return nonApiMessage;
1238
1258
  });
@@ -127,6 +127,10 @@ type ProviderInfo = {
127
127
  * provider owner
128
128
  */
129
129
  owner: Owner;
130
+ /**
131
+ * method to use in the request
132
+ */
133
+ method: HTTPMethods;
130
134
  };
131
135
  type ApiKind = "llm" | "email";
132
136
  type Owner = EmailOwner | LLMOwner;
@@ -153,6 +157,7 @@ type PublishLLMApi = PublishApi<"llm", BaseProvider<"llm", LLMOwner>> & LLMOptio
153
157
 
154
158
  declare abstract class BaseProvider<TName extends ApiKind, TOwner = Owner> {
155
159
  abstract readonly apiKind: TName;
160
+ abstract readonly method: HTTPMethods;
156
161
  readonly baseUrl: string;
157
162
  token: string;
158
163
  readonly owner: TOwner;
@@ -171,6 +176,7 @@ declare abstract class BaseProvider<TName extends ApiKind, TOwner = Owner> {
171
176
  declare class LLMProvider<TOwner extends LLMOwner> extends BaseProvider<"llm", LLMOwner> {
172
177
  readonly apiKind = "llm";
173
178
  readonly organization?: string;
179
+ readonly method = "POST";
174
180
  constructor(baseUrl: string, token: string, owner: TOwner, organization?: string);
175
181
  getRoute(): string[];
176
182
  getHeaders(options: LLMOptions): Record<string, string>;
@@ -356,6 +362,7 @@ type UpstashResponse<TResult> = TResult & {
356
362
  type Requester = {
357
363
  request: <TResult = unknown>(request: UpstashRequest) => Promise<UpstashResponse<TResult>>;
358
364
  requestStream: (request: UpstashRequest) => AsyncIterable<ChatCompletionChunk>;
365
+ headers?: Headers;
359
366
  };
360
367
  type RetryConfig = false | {
361
368
  /**
@@ -1568,6 +1575,11 @@ type ClientConfig = {
1568
1575
  * Configure how the client should retry requests.
1569
1576
  */
1570
1577
  retry?: RetryConfig;
1578
+ /**
1579
+ * Global headers to send with each request.
1580
+ * These can be overridden by the headers in the request.
1581
+ */
1582
+ headers?: HeadersInit;
1571
1583
  };
1572
1584
  type PublishBatchRequest<TBody = BodyInit> = PublishRequest<TBody> & {
1573
1585
  queueName?: string;
@@ -127,6 +127,10 @@ type ProviderInfo = {
127
127
  * provider owner
128
128
  */
129
129
  owner: Owner;
130
+ /**
131
+ * method to use in the request
132
+ */
133
+ method: HTTPMethods;
130
134
  };
131
135
  type ApiKind = "llm" | "email";
132
136
  type Owner = EmailOwner | LLMOwner;
@@ -153,6 +157,7 @@ type PublishLLMApi = PublishApi<"llm", BaseProvider<"llm", LLMOwner>> & LLMOptio
153
157
 
154
158
  declare abstract class BaseProvider<TName extends ApiKind, TOwner = Owner> {
155
159
  abstract readonly apiKind: TName;
160
+ abstract readonly method: HTTPMethods;
156
161
  readonly baseUrl: string;
157
162
  token: string;
158
163
  readonly owner: TOwner;
@@ -171,6 +176,7 @@ declare abstract class BaseProvider<TName extends ApiKind, TOwner = Owner> {
171
176
  declare class LLMProvider<TOwner extends LLMOwner> extends BaseProvider<"llm", LLMOwner> {
172
177
  readonly apiKind = "llm";
173
178
  readonly organization?: string;
179
+ readonly method = "POST";
174
180
  constructor(baseUrl: string, token: string, owner: TOwner, organization?: string);
175
181
  getRoute(): string[];
176
182
  getHeaders(options: LLMOptions): Record<string, string>;
@@ -356,6 +362,7 @@ type UpstashResponse<TResult> = TResult & {
356
362
  type Requester = {
357
363
  request: <TResult = unknown>(request: UpstashRequest) => Promise<UpstashResponse<TResult>>;
358
364
  requestStream: (request: UpstashRequest) => AsyncIterable<ChatCompletionChunk>;
365
+ headers?: Headers;
359
366
  };
360
367
  type RetryConfig = false | {
361
368
  /**
@@ -1568,6 +1575,11 @@ type ClientConfig = {
1568
1575
  * Configure how the client should retry requests.
1569
1576
  */
1570
1577
  retry?: RetryConfig;
1578
+ /**
1579
+ * Global headers to send with each request.
1580
+ * These can be overridden by the headers in the request.
1581
+ */
1582
+ headers?: HeadersInit;
1571
1583
  };
1572
1584
  type PublishBatchRequest<TBody = BodyInit> = PublishRequest<TBody> & {
1573
1585
  queueName?: string;
package/cloudflare.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { a3 as RouteFunction, a4 as WorkflowServeOptions } from './client-BY4y-4To.mjs';
1
+ import { a3 as RouteFunction, a4 as WorkflowServeOptions } from './client-CdYtp0E1.mjs';
2
2
  import 'neverthrow';
3
3
 
4
4
  type WorkflowBindings = {
package/cloudflare.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { a3 as RouteFunction, a4 as WorkflowServeOptions } from './client-BY4y-4To.js';
1
+ import { a3 as RouteFunction, a4 as WorkflowServeOptions } from './client-CdYtp0E1.js';
2
2
  import 'neverthrow';
3
3
 
4
4
  type WorkflowBindings = {
package/cloudflare.js CHANGED
@@ -237,6 +237,7 @@ var HttpClient = class {
237
237
  authorization;
238
238
  options;
239
239
  retry;
240
+ headers;
240
241
  constructor(config) {
241
242
  this.baseUrl = config.baseUrl.replace(/\/$/, "");
242
243
  this.authorization = config.authorization;
@@ -248,6 +249,7 @@ var HttpClient = class {
248
249
  attempts: config.retry?.retries ?? 5,
249
250
  backoff: config.retry?.backoff ?? ((retryCount) => Math.exp(retryCount) * 50)
250
251
  };
252
+ this.headers = config.headers;
251
253
  }
252
254
  async request(request) {
253
255
  const { response } = await this.requestWithBackoff(request);
@@ -600,6 +602,7 @@ var BaseProvider = class {
600
602
  var LLMProvider = class extends BaseProvider {
601
603
  apiKind = "llm";
602
604
  organization;
605
+ method = "POST";
603
606
  constructor(baseUrl, token, owner, organization) {
604
607
  super(baseUrl, token, owner);
605
608
  this.organization = organization;
@@ -660,15 +663,24 @@ var getProviderInfo = (api, upstashToken) => {
660
663
  baseUrl: finalProvider.baseUrl,
661
664
  route: finalProvider.getRoute(),
662
665
  appendHeaders: finalProvider.getHeaders(parameters),
663
- owner: finalProvider.owner
666
+ owner: finalProvider.owner,
667
+ method: finalProvider.method
664
668
  };
665
669
  return finalProvider.onFinish(providerInfo, parameters);
666
670
  };
667
- var processApi = (request, upstashToken) => {
671
+ var safeJoinHeaders = (headers, record) => {
672
+ const joinedHeaders = new Headers(record);
673
+ for (const [header, value] of headers.entries()) {
674
+ joinedHeaders.set(header, value);
675
+ }
676
+ return joinedHeaders;
677
+ };
678
+ var processApi = (request, headers, upstashToken) => {
668
679
  if (!request.api) {
680
+ request.headers = headers;
669
681
  return request;
670
682
  }
671
- const { url, appendHeaders, owner } = getProviderInfo(request.api, upstashToken);
683
+ const { url, appendHeaders, owner, method } = getProviderInfo(request.api, upstashToken);
672
684
  if (request.api.name === "llm") {
673
685
  const callback = request.callback;
674
686
  if (!callback) {
@@ -676,21 +688,15 @@ var processApi = (request, upstashToken) => {
676
688
  }
677
689
  return {
678
690
  ...request,
679
- // @ts-expect-error undici header conflict
680
- headers: new Headers({
681
- ...request.headers,
682
- ...appendHeaders
683
- }),
691
+ method: request.method ?? method,
692
+ headers: safeJoinHeaders(headers, appendHeaders),
684
693
  ...owner === "upstash" && !request.api.analytics ? { api: { name: "llm" }, url: void 0, callback } : { url, api: void 0 }
685
694
  };
686
695
  } else {
687
696
  return {
688
697
  ...request,
689
- // @ts-expect-error undici header conflict
690
- headers: new Headers({
691
- ...request.headers,
692
- ...appendHeaders
693
- }),
698
+ method: request.method ?? method,
699
+ headers: safeJoinHeaders(headers, appendHeaders),
694
700
  url,
695
701
  api: void 0
696
702
  };
@@ -738,6 +744,16 @@ function prefixHeaders(headers) {
738
744
  }
739
745
  return headers;
740
746
  }
747
+ function wrapWithGlobalHeaders(headers, globalHeaders) {
748
+ if (!globalHeaders) {
749
+ return headers;
750
+ }
751
+ const finalHeaders = new Headers(globalHeaders);
752
+ headers.forEach((value, key) => {
753
+ finalHeaders.set(key, value);
754
+ });
755
+ return finalHeaders;
756
+ }
741
757
  function processHeaders(request) {
742
758
  const headers = prefixHeaders(new Headers(request.headers));
743
759
  headers.set("Upstash-Method", request.method ?? "POST");
@@ -884,7 +900,10 @@ var Queue = class {
884
900
  if (!this.queueName) {
885
901
  throw new Error("Please provide a queue name to the Queue constructor");
886
902
  }
887
- const headers = processHeaders(request);
903
+ const headers = wrapWithGlobalHeaders(
904
+ processHeaders(request),
905
+ this.http.headers
906
+ );
888
907
  const destination = getRequestPath(request);
889
908
  const response = await this.http.request({
890
909
  path: ["v2", "enqueue", this.queueName, destination],
@@ -900,13 +919,11 @@ var Queue = class {
900
919
  async enqueueJSON(request) {
901
920
  const headers = prefixHeaders(new Headers(request.headers));
902
921
  headers.set("Content-Type", "application/json");
903
- request.headers = headers;
904
922
  const upstashToken = String(this.http.authorization).split("Bearer ")[1];
905
- const nonApiRequest = processApi(request, upstashToken);
923
+ const nonApiRequest = processApi(request, headers, upstashToken);
906
924
  const response = await this.enqueue({
907
925
  ...nonApiRequest,
908
- body: JSON.stringify(nonApiRequest.body),
909
- headers
926
+ body: JSON.stringify(nonApiRequest.body)
910
927
  });
911
928
  return response;
912
929
  }
@@ -990,7 +1007,7 @@ var Schedules = class {
990
1007
  }
991
1008
  return await this.http.request({
992
1009
  method: "POST",
993
- headers,
1010
+ headers: wrapWithGlobalHeaders(headers, this.http.headers),
994
1011
  path: ["v2", "schedules", request.destination],
995
1012
  body: request.body
996
1013
  });
@@ -1116,7 +1133,9 @@ var Client = class {
1116
1133
  this.http = new HttpClient({
1117
1134
  retry: config.retry,
1118
1135
  baseUrl: config.baseUrl ? config.baseUrl.replace(/\/$/, "") : "https://qstash.upstash.io",
1119
- authorization: `Bearer ${config.token}`
1136
+ authorization: `Bearer ${config.token}`,
1137
+ //@ts-expect-error caused by undici and bunjs type overlap
1138
+ headers: prefixHeaders(new Headers(config.headers))
1120
1139
  });
1121
1140
  this.token = config.token;
1122
1141
  }
@@ -1191,7 +1210,10 @@ var Client = class {
1191
1210
  return new Chat(this.http, this.token);
1192
1211
  }
1193
1212
  async publish(request) {
1194
- const headers = processHeaders(request);
1213
+ const headers = wrapWithGlobalHeaders(
1214
+ processHeaders(request),
1215
+ this.http.headers
1216
+ );
1195
1217
  const response = await this.http.request({
1196
1218
  path: ["v2", "publish", getRequestPath(request)],
1197
1219
  body: request.body,
@@ -1207,9 +1229,8 @@ var Client = class {
1207
1229
  async publishJSON(request) {
1208
1230
  const headers = prefixHeaders(new Headers(request.headers));
1209
1231
  headers.set("Content-Type", "application/json");
1210
- request.headers = headers;
1211
1232
  const upstashToken = String(this.http.authorization).split("Bearer ")[1];
1212
- const nonApiRequest = processApi(request, upstashToken);
1233
+ const nonApiRequest = processApi(request, headers, upstashToken);
1213
1234
  const response = await this.publish({
1214
1235
  ...nonApiRequest,
1215
1236
  body: JSON.stringify(nonApiRequest.body)
@@ -1222,7 +1243,7 @@ var Client = class {
1222
1243
  async batch(request) {
1223
1244
  const messages = [];
1224
1245
  for (const message of request) {
1225
- const headers = processHeaders(message);
1246
+ const headers = wrapWithGlobalHeaders(processHeaders(message), this.http.headers);
1226
1247
  const headerEntries = Object.fromEntries(headers.entries());
1227
1248
  messages.push({
1228
1249
  destination: getRequestPath(message),
@@ -1250,9 +1271,8 @@ var Client = class {
1250
1271
  if ("body" in message) {
1251
1272
  message.body = JSON.stringify(message.body);
1252
1273
  }
1253
- message.headers = new Headers(message.headers);
1254
1274
  const upstashToken = String(this.http.authorization).split("Bearer ")[1];
1255
- const nonApiMessage = processApi(message, upstashToken);
1275
+ const nonApiMessage = processApi(message, new Headers(message.headers), upstashToken);
1256
1276
  nonApiMessage.headers.set("Content-Type", "application/json");
1257
1277
  return nonApiMessage;
1258
1278
  });
package/cloudflare.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  serve
3
- } from "./chunk-2V6WQVIN.mjs";
3
+ } from "./chunk-S5ODGXCI.mjs";
4
4
 
5
5
  // platforms/cloudflare.ts
6
6
  var getArgs = (args) => {
package/h3.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as h3 from 'h3';
2
2
  import { H3Event } from 'h3';
3
- import { a3 as RouteFunction, a4 as WorkflowServeOptions } from './client-BY4y-4To.mjs';
3
+ import { a3 as RouteFunction, a4 as WorkflowServeOptions } from './client-CdYtp0E1.mjs';
4
4
  import 'neverthrow';
5
5
 
6
6
  type VerifySignatureConfig = {
package/h3.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as h3 from 'h3';
2
2
  import { H3Event } from 'h3';
3
- import { a3 as RouteFunction, a4 as WorkflowServeOptions } from './client-BY4y-4To.js';
3
+ import { a3 as RouteFunction, a4 as WorkflowServeOptions } from './client-CdYtp0E1.js';
4
4
  import 'neverthrow';
5
5
 
6
6
  type VerifySignatureConfig = {