@amerged/ohmyhost-runtime 0.1.37 → 0.1.39

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 (41) hide show
  1. package/README.md +1 -1
  2. package/dist/errors.d.ts +1 -1
  3. package/dist/errors.d.ts.map +1 -1
  4. package/dist/errors.js.map +1 -1
  5. package/dist/http.d.ts +8 -2
  6. package/dist/http.d.ts.map +1 -1
  7. package/dist/http.js +39 -11
  8. package/dist/http.js.map +1 -1
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/mail-attachment.d.ts +14 -0
  14. package/dist/mail-attachment.d.ts.map +1 -0
  15. package/dist/mail-attachment.js +186 -0
  16. package/dist/mail-attachment.js.map +1 -0
  17. package/dist/mail.d.ts +1 -0
  18. package/dist/mail.d.ts.map +1 -1
  19. package/dist/mail.js +11 -9
  20. package/dist/mail.js.map +1 -1
  21. package/dist/storage-batch-stream.d.ts.map +1 -1
  22. package/dist/storage-batch-stream.js +24 -27
  23. package/dist/storage-batch-stream.js.map +1 -1
  24. package/dist/storage.d.ts +2 -0
  25. package/dist/storage.d.ts.map +1 -1
  26. package/dist/storage.js +43 -51
  27. package/dist/storage.js.map +1 -1
  28. package/package.json +5 -1
  29. package/src/packages/customer-runtime/package.json +7 -2
  30. package/src/packages/customer-runtime/src/errors.ts +3 -0
  31. package/src/packages/customer-runtime/src/http.ts +63 -11
  32. package/src/packages/customer-runtime/src/index.ts +1 -1
  33. package/src/packages/customer-runtime/src/mail-attachment.ts +238 -0
  34. package/src/packages/customer-runtime/src/mail.ts +12 -6
  35. package/src/packages/customer-runtime/src/storage-batch-stream.ts +29 -25
  36. package/src/packages/customer-runtime/src/storage.ts +59 -48
  37. package/dist/mail-attachments.d.ts +0 -8
  38. package/dist/mail-attachments.d.ts.map +0 -1
  39. package/dist/mail-attachments.js +0 -32
  40. package/dist/mail-attachments.js.map +0 -1
  41. package/src/packages/customer-runtime/src/mail-attachments.ts +0 -53
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @amerged/ohmyhost-runtime
2
2
 
3
- ohmyho.st runtime client, version 0.1.37.
3
+ ohmyho.st runtime client, version 0.1.39.
4
4
 
5
5
  ```sh
6
6
  npm install @amerged/ohmyhost-runtime
package/dist/errors.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type CustomerRuntimeGatewayErrorCode = "gateway_configuration_invalid" | "gateway_request_invalid" | "gateway_response_invalid" | "gateway_timeout" | "gateway_unavailable" | "mail_content_expired" | "mail_attachment_too_large" | "mail_message_not_found" | "mail_rejected" | "mail_reputation_suspended" | "mail_send_conflict" | "mail_send_limit_exceeded" | "insufficient_organization_credits" | "paid_plan_required" | "project_budget_exceeded" | "storage_conflict" | "data_change_in_progress" | "storage_binding_data_changed" | "storage_delete_pending" | "storage_object_not_found" | "storage_quota_exceeded" | "storage_upload_expired" | "storage_upload_rejected" | "unauthorized";
1
+ export type CustomerRuntimeGatewayErrorCode = "gateway_configuration_invalid" | "gateway_request_invalid" | "gateway_not_enabled" | "gateway_route_denied" | "gateway_rate_limited" | "gateway_response_invalid" | "gateway_timeout" | "gateway_unavailable" | "mail_content_expired" | "mail_attachment_too_large" | "mail_message_not_found" | "mail_rejected" | "mail_reputation_suspended" | "mail_send_conflict" | "mail_send_limit_exceeded" | "insufficient_organization_credits" | "paid_plan_required" | "project_budget_exceeded" | "storage_conflict" | "data_change_in_progress" | "storage_binding_data_changed" | "storage_delete_pending" | "storage_object_not_found" | "storage_quota_exceeded" | "storage_upload_expired" | "storage_upload_rejected" | "unauthorized";
2
2
  export type CustomerRuntimeErrorCode = CustomerRuntimeGatewayErrorCode | "database_binding_missing" | "database_query_invalid" | "database_response_invalid" | "database_rls_identity_invalid" | "database_rls_transaction_failed" | "database_transaction_outcome_unknown" | "database_unavailable" | "scheduled_context_invalid";
3
3
  export declare class CustomerRuntimeError extends Error {
4
4
  readonly code: CustomerRuntimeErrorCode;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,+BAA+B,GACvC,+BAA+B,GAC/B,yBAAyB,GACzB,0BAA0B,GAC1B,iBAAiB,GACjB,qBAAqB,GACrB,sBAAsB,GACtB,2BAA2B,GAC3B,wBAAwB,GACxB,eAAe,GACf,2BAA2B,GAC3B,oBAAoB,GACpB,0BAA0B,GAC1B,mCAAmC,GACnC,oBAAoB,GACpB,yBAAyB,GACzB,kBAAkB,GAClB,yBAAyB,GACzB,8BAA8B,GAC9B,wBAAwB,GACxB,0BAA0B,GAC1B,wBAAwB,GACxB,wBAAwB,GACxB,yBAAyB,GACzB,cAAc,CAAC;AAEnB,MAAM,MAAM,wBAAwB,GAChC,+BAA+B,GAC/B,0BAA0B,GAC1B,wBAAwB,GACxB,2BAA2B,GAC3B,+BAA+B,GAC/B,iCAAiC,GACjC,sCAAsC,GACtC,sBAAsB,GACtB,2BAA2B,CAAC;AAEhC,qBAAa,oBAAqB,SAAQ,KAAK;aAG3B,IAAI,EAAE,wBAAwB;aAC9B,SAAS,EAAE,OAAO;IAHpC,gGAAgG;gBAE9E,IAAI,EAAE,wBAAwB,EAC9B,SAAS,EAAE,OAAO,EAClC,MAAM,CAAC,EAAE,MAAM;CAKlB;AAED,gGAAgG;AAChG,qBAAa,qBAAsB,SAAQ,KAAK;aAGX,IAAI,EAAE,MAAM;IAF/C,SAAgB,SAAS,EAAE,OAAO,CAAC;gBAEA,IAAI,EAAE,MAAM;CAMhD;AAED,qBAAa,2BAA4B,SAAQ,oBAAoB;aAGjD,MAAM,EAAE,MAAM,GAAG,IAAI;gBADrC,IAAI,EAAE,+BAA+B,EACrB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrC,SAAS,EAAE,OAAO,EAClB,MAAM,CAAC,EAAE,MAAM;CAKlB"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,+BAA+B,GACvC,+BAA+B,GAC/B,yBAAyB,GACzB,qBAAqB,GACrB,sBAAsB,GACtB,sBAAsB,GACtB,0BAA0B,GAC1B,iBAAiB,GACjB,qBAAqB,GACrB,sBAAsB,GACtB,2BAA2B,GAC3B,wBAAwB,GACxB,eAAe,GACf,2BAA2B,GAC3B,oBAAoB,GACpB,0BAA0B,GAC1B,mCAAmC,GACnC,oBAAoB,GACpB,yBAAyB,GACzB,kBAAkB,GAClB,yBAAyB,GACzB,8BAA8B,GAC9B,wBAAwB,GACxB,0BAA0B,GAC1B,wBAAwB,GACxB,wBAAwB,GACxB,yBAAyB,GACzB,cAAc,CAAC;AAEnB,MAAM,MAAM,wBAAwB,GAChC,+BAA+B,GAC/B,0BAA0B,GAC1B,wBAAwB,GACxB,2BAA2B,GAC3B,+BAA+B,GAC/B,iCAAiC,GACjC,sCAAsC,GACtC,sBAAsB,GACtB,2BAA2B,CAAC;AAEhC,qBAAa,oBAAqB,SAAQ,KAAK;aAG3B,IAAI,EAAE,wBAAwB;aAC9B,SAAS,EAAE,OAAO;IAHpC,gGAAgG;gBAE9E,IAAI,EAAE,wBAAwB,EAC9B,SAAS,EAAE,OAAO,EAClC,MAAM,CAAC,EAAE,MAAM;CAKlB;AAED,gGAAgG;AAChG,qBAAa,qBAAsB,SAAQ,KAAK;aAGX,IAAI,EAAE,MAAM;IAF/C,SAAgB,SAAS,EAAE,OAAO,CAAC;gBAEA,IAAI,EAAE,MAAM;CAMhD;AAED,qBAAa,2BAA4B,SAAQ,oBAAoB;aAGjD,MAAM,EAAE,MAAM,GAAG,IAAI;gBADrC,IAAI,EAAE,+BAA+B,EACrB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrC,SAAS,EAAE,OAAO,EAClB,MAAM,CAAC,EAAE,MAAM;CAKlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAqCA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAG3B;IACA;IAHlB,gGAAgG;IAChG,YACkB,IAA8B,EAC9B,SAAkB,EAClC,MAAe;QAEf,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC;QAJ1C,SAAI,GAAJ,IAAI,CAA0B;QAC9B,cAAS,GAAT,SAAS,CAAS;QAIlC,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,gGAAgG;AAChG,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAGX;IAFnB,SAAS,CAAU;IAEnC,YAAmC,IAAY;QAC7C,KAAK,CAAC,uCAAuC,IAAI,EAAE,CAAC,CAAC;QADpB,SAAI,GAAJ,IAAI,CAAQ;QAE7C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,CAAC;IACxD,CAAC;CACF;AAED,MAAM,OAAO,2BAA4B,SAAQ,oBAAoB;IAGjD;IAFlB,YACE,IAAqC,EACrB,MAAqB,EACrC,SAAkB,EAClB,MAAe;QAEf,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAJf,WAAM,GAAN,MAAM,CAAe;QAKrC,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAwCA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAG3B;IACA;IAHlB,gGAAgG;IAChG,YACkB,IAA8B,EAC9B,SAAkB,EAClC,MAAe;QAEf,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC;QAJ1C,SAAI,GAAJ,IAAI,CAA0B;QAC9B,cAAS,GAAT,SAAS,CAAS;QAIlC,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,gGAAgG;AAChG,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAGX;IAFnB,SAAS,CAAU;IAEnC,YAAmC,IAAY;QAC7C,KAAK,CAAC,uCAAuC,IAAI,EAAE,CAAC,CAAC;QADpB,SAAI,GAAJ,IAAI,CAAQ;QAE7C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,CAAC;IACxD,CAAC;CACF;AAED,MAAM,OAAO,2BAA4B,SAAQ,oBAAoB;IAGjD;IAFlB,YACE,IAAqC,EACrB,MAAqB,EACrC,SAAkB,EAClB,MAAe;QAEf,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAJf,WAAM,GAAN,MAAM,CAAe;QAKrC,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF"}
package/dist/http.d.ts CHANGED
@@ -1,7 +1,11 @@
1
1
  export interface GatewayConnection {
2
+ /** Injected gateway origin for server code; never expose the runtime key to a browser. */
2
3
  readonly endpoint: string;
4
+ /** Environment capability key from OHMYHOST_MAIL_KEY or OHMYHOST_STORAGE_KEY. */
3
5
  readonly key: string;
6
+ /** Use (request) => fetch(request); an explicit transport remains available for tests. */
4
7
  readonly fetch: (request: Request) => Promise<Response>;
8
+ /** Gateway header timeout: 100–30000 ms, default 10000 ms. */
5
9
  readonly timeoutMilliseconds?: number;
6
10
  }
7
11
  export interface ValidatedGatewayConnection {
@@ -16,10 +20,12 @@ export declare function postGatewayJson(connection: ValidatedGatewayConnection,
16
20
  readonly body: unknown;
17
21
  }>;
18
22
  export declare function fetchWithTimeout(fetch: (request: Request) => Promise<Response>, request: Request, timeoutMilliseconds: number): Promise<Response>;
19
- export declare function exactRecord(value: unknown, keys: readonly string[]): Record<string, unknown>;
20
- export declare function invalidResponse(): never;
23
+ export declare function exactRecord(value: unknown, keys: readonly string[], status?: number | null): Record<string, unknown>;
24
+ export declare function invalidResponse(status?: number | null): never;
21
25
  /** A malformed platform ID is a configuration mistake, not a gateway answer. */
22
26
  export declare function requireConfiguredUlid(value: unknown, option: "projectId" | "environmentId", variable: "OHMYHOST_PROJECT_ID" | "OHMYHOST_ENVIRONMENT_ID"): string;
23
27
  /** Names the failing option and how to supply it; never echoes the configured value. */
24
28
  export declare function configurationInvalid(detail: string): never;
29
+ /** Relay failures share one vocabulary across mail, storage and batch control responses. */
30
+ export declare function throwGatewayRelayError(status: number, body: unknown): void;
25
31
  //# sourceMappingURL=http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,iBAAiB,GAAG,0BAA0B,CA6C9F;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,0BAA0B,EACtC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACvC,mBAAmB,EAAE,MAAM,EAC3B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAmB9D;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,EAC9C,OAAO,EAAE,OAAO,EAChB,mBAAmB,EAAE,MAAM,GAC1B,OAAO,CAAC,QAAQ,CAAC,CAenB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAS5F;AAED,wBAAgB,eAAe,IAAI,KAAK,CAEvC;AAED,gFAAgF;AAChF,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,WAAW,GAAG,eAAe,EACrC,QAAQ,EAAE,qBAAqB,GAAG,yBAAyB,GAC1D,MAAM,CAKR;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAE1D"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,0FAA0F;IAC1F,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iFAAiF;IACjF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,0FAA0F;IAC1F,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxD,8DAA8D;IAC9D,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,iBAAiB,GAAG,0BAA0B,CA6C9F;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,0BAA0B,EACtC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACvC,mBAAmB,EAAE,MAAM,EAC3B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAmB9D;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,EAC9C,OAAO,EAAE,OAAO,EAChB,mBAAmB,EAAE,MAAM,GAC1B,OAAO,CAAC,QAAQ,CAAC,CAenB;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,GAAE,MAAM,GAAG,IAAW,GAC3B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASzB;AAED,wBAAgB,eAAe,CAAC,MAAM,GAAE,MAAM,GAAG,IAAW,GAAG,KAAK,CAEnE;AAED,gFAAgF;AAChF,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,WAAW,GAAG,eAAe,EACrC,QAAQ,EAAE,qBAAqB,GAAG,yBAAyB,GAC1D,MAAM,CAKR;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAE1D;AA8BD,4FAA4F;AAC5F,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAoC1E"}
package/dist/http.js CHANGED
@@ -23,7 +23,7 @@ export function validateGatewayConnection(value) {
23
23
  configurationInvalid("key is missing or not a runtime capability key; pass OHMYHOST_MAIL_KEY or OHMYHOST_STORAGE_KEY from the Worker env");
24
24
  }
25
25
  if (typeof value.fetch !== "function") {
26
- configurationInvalid("fetch is not a function; pass (request) => env.OHMYHOST_MAIL_GATEWAY.fetch(request) or env.OHMYHOST_STORAGE_GATEWAY.fetch(request)");
26
+ configurationInvalid("fetch is not a function; pass (request) => fetch(request) in server code");
27
27
  }
28
28
  const timeoutMilliseconds = value.timeoutMilliseconds ?? DEFAULT_TIMEOUT_MILLISECONDS;
29
29
  if (!Number.isSafeInteger(timeoutMilliseconds) ||
@@ -73,19 +73,19 @@ export async function fetchWithTimeout(fetch, request, timeoutMilliseconds) {
73
73
  clearTimeout(timeout);
74
74
  }
75
75
  }
76
- export function exactRecord(value, keys) {
76
+ export function exactRecord(value, keys, status = null) {
77
77
  if (typeof value !== "object" || value === null || Array.isArray(value))
78
- invalidResponse();
78
+ invalidResponse(status);
79
79
  const record = value;
80
80
  const actual = Object.keys(record).sort();
81
81
  const expected = [...keys].sort();
82
82
  if (actual.length !== expected.length || actual.some((key, index) => key !== expected[index])) {
83
- invalidResponse();
83
+ invalidResponse(status);
84
84
  }
85
85
  return record;
86
86
  }
87
- export function invalidResponse() {
88
- throw new CustomerRuntimeGatewayError("gateway_response_invalid", null, false);
87
+ export function invalidResponse(status = null) {
88
+ throw new CustomerRuntimeGatewayError("gateway_response_invalid", status, false);
89
89
  }
90
90
  /** A malformed platform ID is a configuration mistake, not a gateway answer. */
91
91
  export function requireConfiguredUlid(value, option, variable) {
@@ -105,20 +105,48 @@ function assertServerRuntime() {
105
105
  }
106
106
  async function readBoundedJson(response) {
107
107
  if (response.headers.get("content-type")?.split(";", 1)[0]?.trim() !== "application/json") {
108
- invalidResponse();
108
+ invalidResponse(response.status);
109
109
  }
110
110
  const declared = response.headers.get("content-length");
111
111
  if (declared !== null && (!/^[0-9]+$/u.test(declared) || Number(declared) > MAX_RESPONSE_BYTES)) {
112
- invalidResponse();
112
+ invalidResponse(response.status);
113
+ }
114
+ let bytes;
115
+ try {
116
+ bytes = new Uint8Array(await response.arrayBuffer());
117
+ }
118
+ catch {
119
+ throw new CustomerRuntimeGatewayError("gateway_unavailable", response.status, true);
113
120
  }
114
- const bytes = new Uint8Array(await response.arrayBuffer());
115
121
  if (bytes.byteLength > MAX_RESPONSE_BYTES)
116
- invalidResponse();
122
+ invalidResponse(response.status);
117
123
  try {
118
124
  return JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(bytes));
119
125
  }
120
126
  catch {
121
- return invalidResponse();
127
+ return invalidResponse(response.status);
128
+ }
129
+ }
130
+ /** Relay failures share one vocabulary across mail, storage and batch control responses. */
131
+ export function throwGatewayRelayError(status, body) {
132
+ if (typeof body !== "object" || body === null || Array.isArray(body))
133
+ return;
134
+ const code = body["code"];
135
+ if ((status === 403 && (code === "gateway_not_enabled" || code === "gateway_route_denied")) ||
136
+ (status === 429 && code === "gateway_rate_limited") ||
137
+ (status === 503 &&
138
+ (code === "mail_gateway_unavailable" || code === "storage_gateway_unavailable"))) {
139
+ exactRecord(body, ["code"], status);
140
+ if (code === "gateway_not_enabled") {
141
+ throw new CustomerRuntimeGatewayError(code, status, false, "enable the required mail or storage capability in ohmyhost.yaml and redeploy");
142
+ }
143
+ if (code === "gateway_route_denied") {
144
+ throw new CustomerRuntimeGatewayError(code, status, false, "use the current runtime client's supported gateway routes through (request) => fetch(request)");
145
+ }
146
+ if (code === "gateway_rate_limited") {
147
+ throw new CustomerRuntimeGatewayError(code, status, true, "wait before repeating this request with the same idempotency keys");
148
+ }
149
+ throw new CustomerRuntimeGatewayError("gateway_unavailable", status, true);
122
150
  }
123
151
  }
124
152
  //# sourceMappingURL=http.js.map
package/dist/http.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  export * from "./errors.js";
2
2
  export * from "./database.js";
3
3
  export * from "./mail.js";
4
+ export * from "./mail-attachment.js";
4
5
  export * from "./storage.js";
5
6
  export type { GatewayConnection } from "./http.js";
6
7
  export * from "./mail-webhook.js";
7
- export * from "./mail-attachments.js";
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,cAAc,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export * from "./errors.js";
2
2
  export * from "./database.js";
3
3
  export * from "./mail.js";
4
+ export * from "./mail-attachment.js";
4
5
  export * from "./storage.js";
5
6
  export * from "./mail-webhook.js";
6
- export * from "./mail-attachments.js";
7
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAE7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAE7B,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { type GatewayConnection } from "./http.js";
2
+ export interface MailAttachmentDownloadOptions {
3
+ readonly signal?: AbortSignal;
4
+ }
5
+ /** Server-only receiving access using OHMYHOST_MAIL_KEY and global fetch. */
6
+ export declare function createMailAttachmentClient(configuration: GatewayConnection & {
7
+ readonly projectId: string;
8
+ /** Optional expected environment; otherwise use the canonical metadata download_path scope. */
9
+ readonly environmentId?: string;
10
+ }): Readonly<{
11
+ /** Consume to EOF for success, or cancel the stream when its bytes are no longer needed. */
12
+ download(downloadPath: string, options?: MailAttachmentDownloadOptions): Promise<ReadableStream<Uint8Array>>;
13
+ }>;
14
+ //# sourceMappingURL=mail-attachment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-attachment.d.ts","sourceRoot":"","sources":["../src/mail-attachment.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,iBAAiB,EACvB,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,6EAA6E;AAC7E,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,iBAAiB,GAAG;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,+FAA+F;IAC/F,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;IAiBC,4FAA4F;2BAE5E,MAAM,YACX,6BAA6B,GACrC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;GAgEzC"}
@@ -0,0 +1,186 @@
1
+ import { CustomerRuntimeGatewayError } from "./errors.js";
2
+ import { exactRecord, fetchWithTimeout, invalidResponse, requireConfiguredUlid, throwGatewayRelayError, validateGatewayConnection, } from "./http.js";
3
+ /** Server-only receiving access using OHMYHOST_MAIL_KEY and global fetch. */
4
+ export function createMailAttachmentClient(configuration) {
5
+ const connection = validateGatewayConnection(configuration);
6
+ const projectId = requireConfiguredUlid(configuration.projectId, "projectId", "OHMYHOST_PROJECT_ID");
7
+ const environmentId = configuration.environmentId === undefined
8
+ ? undefined
9
+ : requireConfiguredUlid(configuration.environmentId, "environmentId", "OHMYHOST_ENVIRONMENT_ID");
10
+ return Object.freeze({
11
+ /** Consume to EOF for success, or cancel the stream when its bytes are no longer needed. */
12
+ async download(downloadPath, options = {}) {
13
+ const match = typeof downloadPath === "string"
14
+ ? /^\/v1\/projects\/([0-7][0-9A-HJKMNP-TV-Z]{25})\/environments\/([0-7][0-9A-HJKMNP-TV-Z]{25})\/mail\/messages\/([0-7][0-9A-HJKMNP-TV-Z]{25})\/attachments\/([A-Za-z0-9_-]{1,128})$/u.exec(downloadPath)
15
+ : null;
16
+ if (match === null ||
17
+ match[1] !== projectId ||
18
+ (environmentId !== undefined && match[2] !== environmentId)) {
19
+ throw new CustomerRuntimeGatewayError("gateway_request_invalid", null, false);
20
+ }
21
+ const body = JSON.stringify({
22
+ project_id: projectId,
23
+ environment_id: match[2],
24
+ message_id: match[3],
25
+ attachment_id: match[4],
26
+ });
27
+ if (new TextEncoder().encode(body).byteLength > 1024) {
28
+ throw new CustomerRuntimeGatewayError("gateway_request_invalid", null, false);
29
+ }
30
+ const cancellation = new AbortController();
31
+ const signal = options.signal === undefined
32
+ ? cancellation.signal
33
+ : AbortSignal.any([cancellation.signal, options.signal]);
34
+ if (signal.aborted)
35
+ throw new CustomerRuntimeGatewayError("gateway_timeout", null, true);
36
+ const response = await fetchWithTimeout(connection.fetch, new Request(new URL("/v1/attachments/download", connection.endpoint), {
37
+ method: "POST",
38
+ headers: {
39
+ authorization: `Bearer ${connection.key}`,
40
+ "content-type": "application/json",
41
+ },
42
+ body,
43
+ signal,
44
+ }), connection.timeoutMilliseconds);
45
+ if (response.status !== 200) {
46
+ try {
47
+ throwAttachmentError(response.status, await readAttachmentError(response, connection.timeoutMilliseconds));
48
+ }
49
+ finally {
50
+ cancellation.abort();
51
+ }
52
+ }
53
+ if (response.body === null ||
54
+ response.headers.get("content-type")?.split(";", 1)[0]?.trim().toLowerCase() !==
55
+ "application/octet-stream") {
56
+ cancellation.abort();
57
+ void response.body?.cancel().catch(ignoreCancellationError);
58
+ invalidResponse(response.status);
59
+ }
60
+ return attachmentStream(response.body, response.status, cancellation, signal);
61
+ },
62
+ });
63
+ }
64
+ /** A pull reads one source chunk; cancellation never drains or duplicates the attachment. */
65
+ function attachmentStream(body, status, cancellation, signal) {
66
+ const source = body.getReader();
67
+ let finished = false;
68
+ let abort;
69
+ function finish(cancel) {
70
+ if (finished)
71
+ return;
72
+ finished = true;
73
+ signal.removeEventListener("abort", abort);
74
+ if (cancel) {
75
+ cancellation.abort();
76
+ void source.cancel().catch(ignoreCancellationError);
77
+ }
78
+ source.releaseLock();
79
+ }
80
+ return new ReadableStream({
81
+ start(controller) {
82
+ abort = () => {
83
+ controller.error(new CustomerRuntimeGatewayError("gateway_timeout", status, true));
84
+ finish(true);
85
+ };
86
+ if (signal.aborted)
87
+ abort();
88
+ else
89
+ signal.addEventListener("abort", abort, { once: true });
90
+ },
91
+ async pull(controller) {
92
+ try {
93
+ const next = await source.read();
94
+ if (finished)
95
+ return;
96
+ if (next.done) {
97
+ finish(false);
98
+ controller.close();
99
+ }
100
+ else if (next.value instanceof Uint8Array) {
101
+ controller.enqueue(next.value);
102
+ }
103
+ else {
104
+ invalidResponse(status);
105
+ }
106
+ }
107
+ catch {
108
+ if (finished)
109
+ return;
110
+ finish(true);
111
+ controller.error(new CustomerRuntimeGatewayError("gateway_unavailable", status, true));
112
+ }
113
+ },
114
+ cancel() {
115
+ finish(true);
116
+ },
117
+ }, { highWaterMark: 0 });
118
+ }
119
+ /** Only small error records are buffered; binary successes never enter this parser. */
120
+ async function readAttachmentError(response, timeoutMilliseconds) {
121
+ const declared = response.headers.get("content-length");
122
+ if (response.headers.get("content-type")?.split(";", 1)[0]?.trim() !== "application/json" ||
123
+ response.body === null ||
124
+ (declared !== null && (!/^[0-9]+$/u.test(declared) || Number(declared) > 1024))) {
125
+ void response.body?.cancel().catch(ignoreCancellationError);
126
+ invalidResponse(response.status);
127
+ }
128
+ const source = response.body.getReader();
129
+ const bytes = new Uint8Array(1024);
130
+ let length = 0;
131
+ let finished = false;
132
+ let timer;
133
+ try {
134
+ const expired = new Promise((_resolve, reject) => {
135
+ timer = setTimeout(() => reject(new CustomerRuntimeGatewayError("gateway_timeout", response.status, true)), timeoutMilliseconds);
136
+ });
137
+ for (;;) {
138
+ const next = await Promise.race([source.read(), expired]);
139
+ if (next.done) {
140
+ finished = true;
141
+ break;
142
+ }
143
+ if (!(next.value instanceof Uint8Array) || length + next.value.byteLength > bytes.byteLength)
144
+ invalidResponse(response.status);
145
+ bytes.set(next.value, length);
146
+ length += next.value.byteLength;
147
+ }
148
+ try {
149
+ return JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(bytes.subarray(0, length)));
150
+ }
151
+ catch {
152
+ return invalidResponse(response.status);
153
+ }
154
+ }
155
+ catch (error) {
156
+ if (error instanceof CustomerRuntimeGatewayError)
157
+ throw error;
158
+ throw new CustomerRuntimeGatewayError("gateway_unavailable", response.status, true);
159
+ }
160
+ finally {
161
+ clearTimeout(timer);
162
+ if (!finished)
163
+ void source.cancel().catch(ignoreCancellationError);
164
+ source.releaseLock();
165
+ }
166
+ }
167
+ function ignoreCancellationError() {
168
+ // The original download failure remains the public error.
169
+ }
170
+ function throwAttachmentError(status, body) {
171
+ throwGatewayRelayError(status, body);
172
+ const record = exactRecord(body, ["code"], status);
173
+ const code = record["code"];
174
+ if (status === 400 && code === "invalid_request")
175
+ throw new CustomerRuntimeGatewayError("gateway_request_invalid", status, false);
176
+ if (status === 401 && code === "unauthorized")
177
+ throw new CustomerRuntimeGatewayError("unauthorized", status, false);
178
+ if (status === 404 && code === "resource_not_found")
179
+ throw new CustomerRuntimeGatewayError("mail_message_not_found", status, false);
180
+ if (status === 410 && code === "mail_content_expired")
181
+ throw new CustomerRuntimeGatewayError("mail_content_expired", status, false);
182
+ if (status === 413 && code === "mail_attachment_too_large")
183
+ throw new CustomerRuntimeGatewayError("mail_attachment_too_large", status, false);
184
+ return invalidResponse(status);
185
+ }
186
+ //# sourceMappingURL=mail-attachment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-attachment.js","sourceRoot":"","sources":["../src/mail-attachment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,GAE1B,MAAM,WAAW,CAAC;AAMnB,6EAA6E;AAC7E,MAAM,UAAU,0BAA0B,CACxC,aAIC;IAED,MAAM,UAAU,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,qBAAqB,CACrC,aAAa,CAAC,SAAS,EACvB,WAAW,EACX,qBAAqB,CACtB,CAAC;IACF,MAAM,aAAa,GACjB,aAAa,CAAC,aAAa,KAAK,SAAS;QACvC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,qBAAqB,CACnB,aAAa,CAAC,aAAa,EAC3B,eAAe,EACf,yBAAyB,CAC1B,CAAC;IACR,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,4FAA4F;QAC5F,KAAK,CAAC,QAAQ,CACZ,YAAoB,EACpB,UAAyC,EAAE;YAE3C,MAAM,KAAK,GACT,OAAO,YAAY,KAAK,QAAQ;gBAC9B,CAAC,CAAC,mLAAmL,CAAC,IAAI,CACtL,YAAY,CACb;gBACH,CAAC,CAAC,IAAI,CAAC;YACX,IACE,KAAK,KAAK,IAAI;gBACd,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS;gBACtB,CAAC,aAAa,KAAK,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,EAC3D,CAAC;gBACD,MAAM,IAAI,2BAA2B,CAAC,yBAAyB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAChF,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC1B,UAAU,EAAE,SAAS;gBACrB,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;gBACxB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;gBACpB,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;aACxB,CAAC,CAAC;YACH,IAAI,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC;gBACrD,MAAM,IAAI,2BAA2B,CAAC,yBAAyB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAChF,CAAC;YACD,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;YAC3C,MAAM,MAAM,GACV,OAAO,CAAC,MAAM,KAAK,SAAS;gBAC1B,CAAC,CAAC,YAAY,CAAC,MAAM;gBACrB,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7D,IAAI,MAAM,CAAC,OAAO;gBAAE,MAAM,IAAI,2BAA2B,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACzF,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CACrC,UAAU,CAAC,KAAK,EAChB,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,0BAA0B,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE;gBACpE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,UAAU,CAAC,GAAG,EAAE;oBACzC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI;gBACJ,MAAM;aACP,CAAC,EACF,UAAU,CAAC,mBAAmB,CAC/B,CAAC;YACF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACH,oBAAoB,CAClB,QAAQ,CAAC,MAAM,EACf,MAAM,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,mBAAmB,CAAC,CACpE,CAAC;gBACJ,CAAC;wBAAS,CAAC;oBACT,YAAY,CAAC,KAAK,EAAE,CAAC;gBACvB,CAAC;YACH,CAAC;YACD,IACE,QAAQ,CAAC,IAAI,KAAK,IAAI;gBACtB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE;oBAC1E,0BAA0B,EAC5B,CAAC;gBACD,YAAY,CAAC,KAAK,EAAE,CAAC;gBACrB,KAAK,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBAC5D,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAChF,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,6FAA6F;AAC7F,SAAS,gBAAgB,CACvB,IAAgC,EAChC,MAAc,EACd,YAA6B,EAC7B,MAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAChC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,KAAiB,CAAC;IACtB,SAAS,MAAM,CAAC,MAAe;QAC7B,IAAI,QAAQ;YAAE,OAAO;QACrB,QAAQ,GAAG,IAAI,CAAC;QAChB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,MAAM,EAAE,CAAC;YACX,YAAY,CAAC,KAAK,EAAE,CAAC;YACrB,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,cAAc,CACvB;QACE,KAAK,CAAC,UAAU;YACd,KAAK,GAAG,GAAG,EAAE;gBACX,UAAU,CAAC,KAAK,CAAC,IAAI,2BAA2B,CAAC,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;gBACnF,MAAM,CAAC,IAAI,CAAC,CAAC;YACf,CAAC,CAAC;YACF,IAAI,MAAM,CAAC,OAAO;gBAAE,KAAK,EAAE,CAAC;;gBACvB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,UAAU;YACnB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjC,IAAI,QAAQ;oBAAE,OAAO;gBACrB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,UAAU,CAAC,KAAK,EAAE,CAAC;gBACrB,CAAC;qBAAM,IAAI,IAAI,CAAC,KAAK,YAAY,UAAU,EAAE,CAAC;oBAC5C,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACN,eAAe,CAAC,MAAM,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,QAAQ;oBAAE,OAAO;gBACrB,MAAM,CAAC,IAAI,CAAC,CAAC;gBACb,UAAU,CAAC,KAAK,CAAC,IAAI,2BAA2B,CAAC,qBAAqB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;QACD,MAAM;YACJ,MAAM,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;KACF,EACD,EAAE,aAAa,EAAE,CAAC,EAAE,CACrB,CAAC;AACJ,CAAC;AAED,uFAAuF;AACvF,KAAK,UAAU,mBAAmB,CAChC,QAAkB,EAClB,mBAA2B;IAE3B,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACxD,IACE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,kBAAkB;QACrF,QAAQ,CAAC,IAAI,KAAK,IAAI;QACtB,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,EAC/E,CAAC;QACD,KAAK,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC5D,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,KAAgD,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;YACtD,KAAK,GAAG,UAAU,CAChB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,2BAA2B,CAAC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EACvF,mBAAmB,CACpB,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,SAAS,CAAC;YACR,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1D,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YACR,CAAC;YACD,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,YAAY,UAAU,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU;gBAC1F,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC9B,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QAClC,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CACf,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CACjE,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,2BAA2B;YAAE,MAAM,KAAK,CAAC;QAC9D,MAAM,IAAI,2BAA2B,CAAC,qBAAqB,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,IAAI,CAAC,QAAQ;YAAE,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACnE,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB;IAC9B,0DAA0D;AAC5D,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc,EAAE,IAAa;IACzD,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,MAAM,KAAK,GAAG,IAAI,IAAI,KAAK,iBAAiB;QAC9C,MAAM,IAAI,2BAA2B,CAAC,yBAAyB,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAClF,IAAI,MAAM,KAAK,GAAG,IAAI,IAAI,KAAK,cAAc;QAC3C,MAAM,IAAI,2BAA2B,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACvE,IAAI,MAAM,KAAK,GAAG,IAAI,IAAI,KAAK,oBAAoB;QACjD,MAAM,IAAI,2BAA2B,CAAC,wBAAwB,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACjF,IAAI,MAAM,KAAK,GAAG,IAAI,IAAI,KAAK,sBAAsB;QACnD,MAAM,IAAI,2BAA2B,CAAC,sBAAsB,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/E,IAAI,MAAM,KAAK,GAAG,IAAI,IAAI,KAAK,2BAA2B;QACxD,MAAM,IAAI,2BAA2B,CAAC,2BAA2B,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACpF,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC"}
package/dist/mail.d.ts CHANGED
@@ -16,6 +16,7 @@ export type TransactionalMailResult = {
16
16
  readonly state: "uncertain";
17
17
  readonly requestId: string;
18
18
  };
19
+ /** Server-only transactional mail over the injected gateway URL and global fetch. */
19
20
  export declare function createTransactionalMailClient(configuration: GatewayConnection & {
20
21
  readonly projectId: string;
21
22
  }): Readonly<{
@@ -1 +1 @@
1
- {"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../src/mail.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,iBAAiB,EACvB,MAAM,WAAW,CAAC;AAWnB,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,uBAAuB,GAC/B;IACE,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GACD;IACE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEN,wBAAgB,6BAA6B,CAC3C,aAAa,EAAE,iBAAiB,GAAG;IAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE;gBAS7C,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;GA2C9E"}
1
+ {"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../src/mail.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,iBAAiB,EACvB,MAAM,WAAW,CAAC;AAWnB,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,uBAAuB,GAC/B;IACE,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GACD;IACE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEN,qFAAqF;AACrF,wBAAgB,6BAA6B,CAC3C,aAAa,EAAE,iBAAiB,GAAG;IAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE;gBAS7C,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;GA4C9E"}
package/dist/mail.js CHANGED
@@ -1,11 +1,12 @@
1
1
  import { CustomerRuntimeGatewayError } from "./errors.js";
2
- import { exactRecord, invalidResponse, postGatewayJson, requireConfiguredUlid, validateGatewayConnection, } from "./http.js";
2
+ import { exactRecord, invalidResponse, postGatewayJson, requireConfiguredUlid, validateGatewayConnection, throwGatewayRelayError, } from "./http.js";
3
3
  /** The gateway's own payment codes and the action that clears each; none clears on a retry. */
4
4
  const PAYMENT_REQUIRED = Object.freeze({
5
5
  paid_plan_required: "sending mail needs Paid access; the organization Owner starts Paid in billing, and top-ups do not.",
6
6
  insufficient_organization_credits: "the organization has no credits for this send; add credits.",
7
7
  project_budget_exceeded: "this project's Stop budget is used up; raise it or switch it to continue.",
8
8
  });
9
+ /** Server-only transactional mail over the injected gateway URL and global fetch. */
9
10
  export function createTransactionalMailClient(configuration) {
10
11
  const connection = validateGatewayConnection(configuration);
11
12
  const projectId = requireConfiguredUlid(configuration.projectId, "projectId", "OHMYHOST_PROJECT_ID");
@@ -26,15 +27,15 @@ export function createTransactionalMailClient(configuration) {
26
27
  const raw = response.body;
27
28
  const stateRecord = exactRecord(response.body, raw?.["state"] === "accepted"
28
29
  ? ["state", "request_id", "message_id"]
29
- : ["state", "request_id"]);
30
- const requestId = requireUlid(stateRecord["request_id"]);
30
+ : ["state", "request_id"], response.status);
31
+ const requestId = requireUlid(stateRecord["request_id"], response.status);
31
32
  if (stateRecord["state"] === "uncertain") {
32
33
  return Object.freeze({ state: "uncertain", requestId });
33
34
  }
34
35
  if (stateRecord["state"] !== "accepted" ||
35
36
  typeof stateRecord["message_id"] !== "string" ||
36
37
  !/^[A-Za-z0-9._-]{1,256}$/u.test(stateRecord["message_id"])) {
37
- invalidResponse();
38
+ invalidResponse(response.status);
38
39
  }
39
40
  return Object.freeze({
40
41
  state: "accepted",
@@ -56,11 +57,12 @@ function validateMailInput(input) {
56
57
  }
57
58
  }
58
59
  function throwMailError(status, body) {
60
+ throwGatewayRelayError(status, body);
59
61
  const raw = body;
60
- const record = exactRecord(body, raw?.["request_id"] === undefined ? ["code"] : ["code", "request_id"]);
62
+ const record = exactRecord(body, raw?.["request_id"] === undefined ? ["code"] : ["code", "request_id"], status);
61
63
  const code = record["code"];
62
64
  if (record["request_id"] !== undefined)
63
- requireUlid(record["request_id"]);
65
+ requireUlid(record["request_id"], status);
64
66
  if (status === 400 && code === "invalid_request") {
65
67
  throw new CustomerRuntimeGatewayError("gateway_request_invalid", status, false);
66
68
  }
@@ -86,11 +88,11 @@ function throwMailError(status, body) {
86
88
  if (status === 503 && typeof code === "string") {
87
89
  throw new CustomerRuntimeGatewayError("gateway_unavailable", status, true);
88
90
  }
89
- return invalidResponse();
91
+ return invalidResponse(status);
90
92
  }
91
- function requireUlid(value) {
93
+ function requireUlid(value, status = null) {
92
94
  if (typeof value !== "string" || !/^[0-9A-HJKMNP-TV-Z]{26}$/u.test(value))
93
- invalidResponse();
95
+ invalidResponse(status);
94
96
  return value;
95
97
  }
96
98
  function validIdempotencyKey(value) {
package/dist/mail.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mail.js","sourceRoot":"","sources":["../src/mail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mail.js","sourceRoot":"","sources":["../src/mail.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"storage-batch-stream.d.ts","sourceRoot":"","sources":["../src/storage-batch-stream.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,iBAAiB,GACzB,QAAQ,CAAC;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GACnD,QAAQ,CAAC;IACP,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;CAClC,CAAC,CAAC;AACP,MAAM,MAAM,mBAAmB,GAC3B,QAAQ,CAAC;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GACvE,QAAQ,CAAC;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAClE,QAAQ,CAAC;IACP,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,kBAAkB,GAAG,6BAA6B,CAAC;IACzD,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC,CAAC;AACP,eAAO,MAAM,0BAA0B,8CAA8C,CAAC;AAyCtF,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,mBAAmB,EAAE,MAAM,GAC1B,aAAa,CAAC,iBAAiB,CAAC,CA8NlC;AAED,kFAAkF;AAClF,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,QAAQ,EAClB,mBAAmB,EAAE,MAAM,EAC3B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CAyClB"}
1
+ {"version":3,"file":"storage-batch-stream.d.ts","sourceRoot":"","sources":["../src/storage-batch-stream.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,iBAAiB,GACzB,QAAQ,CAAC;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GACnD,QAAQ,CAAC;IACP,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;CAClC,CAAC,CAAC;AACP,MAAM,MAAM,mBAAmB,GAC3B,QAAQ,CAAC;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GACvE,QAAQ,CAAC;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAClE,QAAQ,CAAC;IACP,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,kBAAkB,GAAG,6BAA6B,CAAC;IACzD,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC,CAAC;AACP,eAAO,MAAM,0BAA0B,8CAA8C,CAAC;AA0CtF,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,mBAAmB,EAAE,MAAM,GAC1B,aAAa,CAAC,iBAAiB,CAAC,CAiOlC;AAED,kFAAkF;AAClF,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,QAAQ,EAClB,mBAAmB,EAAE,MAAM,EAC3B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CAyClB"}