@amerged/ohmyhost-runtime 0.1.22 → 0.1.24

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 (42) hide show
  1. package/README.md +1 -1
  2. package/dist/database-kysely.d.ts +5 -0
  3. package/dist/database-kysely.d.ts.map +1 -0
  4. package/dist/database-kysely.js +95 -0
  5. package/dist/database-kysely.js.map +1 -0
  6. package/dist/database.d.ts.map +1 -1
  7. package/dist/database.js +43 -7
  8. package/dist/database.js.map +1 -1
  9. package/dist/errors.d.ts +5 -4
  10. package/dist/errors.d.ts.map +1 -1
  11. package/dist/errors.js +6 -5
  12. package/dist/errors.js.map +1 -1
  13. package/dist/http.d.ts +4 -0
  14. package/dist/http.d.ts.map +1 -1
  15. package/dist/http.js +31 -12
  16. package/dist/http.js.map +1 -1
  17. package/dist/mail-attachments.d.ts.map +1 -1
  18. package/dist/mail-attachments.js +3 -4
  19. package/dist/mail-attachments.js.map +1 -1
  20. package/dist/mail.d.ts.map +1 -1
  21. package/dist/mail.js +16 -11
  22. package/dist/mail.js.map +1 -1
  23. package/dist/storage-batch-stream.d.ts +31 -0
  24. package/dist/storage-batch-stream.d.ts.map +1 -0
  25. package/dist/storage-batch-stream.js +282 -0
  26. package/dist/storage-batch-stream.js.map +1 -0
  27. package/dist/storage.d.ts +11 -0
  28. package/dist/storage.d.ts.map +1 -1
  29. package/dist/storage.js +167 -14
  30. package/dist/storage.js.map +1 -1
  31. package/package.json +13 -1
  32. package/src/packages/customer-runtime/package.json +53 -0
  33. package/src/packages/customer-runtime/src/database-kysely.ts +127 -0
  34. package/src/packages/customer-runtime/{database.ts → src/database.ts} +50 -8
  35. package/src/packages/customer-runtime/{errors.ts → src/errors.ts} +13 -4
  36. package/src/packages/customer-runtime/{http.ts → src/http.ts} +43 -10
  37. package/src/packages/customer-runtime/{mail-attachments.ts → src/mail-attachments.ts} +12 -4
  38. package/src/packages/customer-runtime/{mail.ts → src/mail.ts} +28 -14
  39. package/src/packages/customer-runtime/src/storage-batch-stream.ts +318 -0
  40. package/src/packages/customer-runtime/{storage.ts → src/storage.ts} +236 -13
  41. /package/src/packages/customer-runtime/{index.ts → src/index.ts} +0 -0
  42. /package/src/packages/customer-runtime/{mail-webhook.ts → src/mail-webhook.ts} +0 -0
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @amerged/ohmyhost-runtime
2
2
 
3
- ohmyho.st runtime client, version 0.1.22.
3
+ ohmyho.st runtime client, version 0.1.24.
4
4
 
5
5
  ```sh
6
6
  npm install @amerged/ohmyhost-runtime
@@ -0,0 +1,5 @@
1
+ import { type Dialect } from "kysely";
2
+ import { type CustomerDatabaseBinding } from "./database.js";
3
+ /** Kysely 0.29.5's PostgreSQL compiler and transactions over the private RPC binding. */
4
+ export declare function createPrivateDatabaseDialect(binding: CustomerDatabaseBinding): Dialect;
5
+ //# sourceMappingURL=database-kysely.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-kysely.d.ts","sourceRoot":"","sources":["../src/database-kysely.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,OAAO,EAKb,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAEL,KAAK,uBAAuB,EAG7B,MAAM,eAAe,CAAC;AAOvB,yFAAyF;AACzF,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAQtF"}
@@ -0,0 +1,95 @@
1
+ import { PostgresAdapter, PostgresIntrospector, PostgresQueryCompiler, CompiledQuery, } from "kysely";
2
+ import { createPrivateDatabaseClient, } from "./database.js";
3
+ /** Kysely 0.29.5's PostgreSQL compiler and transactions over the private RPC binding. */
4
+ export function createPrivateDatabaseDialect(binding) {
5
+ const database = createPrivateDatabaseClient(binding);
6
+ return Object.freeze({
7
+ createAdapter: () => new PostgresAdapter(),
8
+ createQueryCompiler: () => new PostgresQueryCompiler(),
9
+ createIntrospector: (kysely) => new PostgresIntrospector(kysely),
10
+ createDriver: () => new PrivateDatabaseDriver(database),
11
+ });
12
+ }
13
+ class PrivateDatabaseDriver {
14
+ database;
15
+ #leases = new Map();
16
+ #pending = new Set();
17
+ #destroyed = false;
18
+ async init() { }
19
+ async acquireConnection() {
20
+ if (this.#destroyed)
21
+ throw new TypeError("The private database dialect is destroyed");
22
+ const acquired = Promise.withResolvers();
23
+ const released = Promise.withResolvers();
24
+ const closed = this.database.withConnection(async (held) => {
25
+ if (this.#destroyed)
26
+ throw new TypeError("The private database dialect is destroyed");
27
+ const connection = Object.freeze({
28
+ executeQuery: async (query) => {
29
+ if (!this.#leases.has(connection)) {
30
+ throw new TypeError("The private database connection is released");
31
+ }
32
+ const result = await held.query({
33
+ text: query.sql,
34
+ values: query.parameters,
35
+ });
36
+ return {
37
+ rows: [...result.rows],
38
+ ...(["INSERT", "UPDATE", "DELETE", "MERGE"].includes(result.command) &&
39
+ result.rowCount !== null
40
+ ? { numAffectedRows: BigInt(result.rowCount) }
41
+ : {}),
42
+ };
43
+ },
44
+ streamQuery() {
45
+ throw new TypeError("Private database streaming is not supported");
46
+ },
47
+ });
48
+ this.#leases.set(connection, { release: () => released.resolve(undefined), closed });
49
+ acquired.resolve(connection);
50
+ await released.promise;
51
+ });
52
+ this.#pending.add(closed);
53
+ void closed.then(() => {
54
+ this.#pending.delete(closed);
55
+ }, (error) => {
56
+ this.#pending.delete(closed);
57
+ acquired.reject(error);
58
+ });
59
+ return acquired.promise;
60
+ }
61
+ async beginTransaction(connection, settings) {
62
+ let text = "begin";
63
+ if (settings.isolationLevel !== undefined || settings.accessMode !== undefined) {
64
+ text = "start transaction";
65
+ if (settings.isolationLevel !== undefined)
66
+ text += ` isolation level ${settings.isolationLevel}`;
67
+ if (settings.accessMode !== undefined)
68
+ text += ` ${settings.accessMode}`;
69
+ }
70
+ await connection.executeQuery(CompiledQuery.raw(text));
71
+ }
72
+ async commitTransaction(connection) {
73
+ await connection.executeQuery(CompiledQuery.raw("commit"));
74
+ }
75
+ async rollbackTransaction(connection) {
76
+ await connection.executeQuery(CompiledQuery.raw("rollback"));
77
+ }
78
+ async releaseConnection(connection) {
79
+ const lease = this.#leases.get(connection);
80
+ if (lease === undefined)
81
+ return;
82
+ this.#leases.delete(connection);
83
+ lease.release();
84
+ await lease.closed;
85
+ }
86
+ async destroy() {
87
+ this.#destroyed = true;
88
+ await Promise.all([...this.#leases.keys()].map((connection) => this.releaseConnection(connection)));
89
+ await Promise.allSettled([...this.#pending]);
90
+ }
91
+ constructor(database) {
92
+ this.database = database;
93
+ }
94
+ }
95
+ //# sourceMappingURL=database-kysely.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-kysely.js","sourceRoot":"","sources":["../src/database-kysely.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,oBAAoB,GAC5B,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,oBAAoB,EAAE,GAC/B,QAAQ,CAAC;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAAA;CAAE,CAAC,CAAC;AAEtD,MAAM,MAAM,yBAAyB,GAAG,oBAAoB,GAAG,IAAI,GAAG,UAAU,CAAC;AAEjF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,yBAAyB,EAAE,CAAC;CACvD;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI,OAAO,CAAC,8BAA8B,CAAC,CAAC;CAClD;AAED,kGAAkG;AAClG,MAAM,WAAW,8BAA8B;IAC7C,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,iGAAiG;AACjG,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,cAAc,CAAC,MAAM,EACnB,GAAG,EAAE,CAAC,UAAU,EAAE,0BAA0B,KAAK,OAAO,CAAC,MAAM,CAAC,GAC/D,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,KAAK,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC1E,WAAW,CACT,OAAO,EAAE,SAAS,qBAAqB,EAAE,GACxC,OAAO,CAAC,SAAS,2BAA2B,EAAE,CAAC,CAAC;CACpD;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,uBAAuB,GAC/B,sBAAsB,CAiExB"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,oBAAoB,GAC5B,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,oBAAoB,EAAE,GAC/B,QAAQ,CAAC;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAAA;CAAE,CAAC,CAAC;AAEtD,MAAM,MAAM,yBAAyB,GAAG,oBAAoB,GAAG,IAAI,GAAG,UAAU,CAAC;AAEjF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,yBAAyB,EAAE,CAAC;CACvD;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI,OAAO,CAAC,8BAA8B,CAAC,CAAC;CAClD;AAED,kGAAkG;AAClG,MAAM,WAAW,8BAA8B;IAC7C,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,iGAAiG;AACjG,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,cAAc,CAAC,MAAM,EACnB,GAAG,EAAE,CAAC,UAAU,EAAE,0BAA0B,KAAK,OAAO,CAAC,MAAM,CAAC,GAC/D,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,KAAK,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC1E,WAAW,CACT,OAAO,EAAE,SAAS,qBAAqB,EAAE,GACxC,OAAO,CAAC,SAAS,2BAA2B,EAAE,CAAC,CAAC;CACpD;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,uBAAuB,GAC/B,sBAAsB,CAqExB"}
package/dist/database.js CHANGED
@@ -2,6 +2,8 @@ import { CustomerDatabaseError, CustomerRuntimeError } from "./errors.js";
2
2
  const MAX_QUERY_BYTES = 64 * 1024;
3
3
  const MAX_PARAMETERS = 100;
4
4
  const MAX_PARAMETER_BYTES = 1024 * 1024;
5
+ const MAX_JSON_PARAMETER_BYTES = 64 * 1024;
6
+ const MAX_KEY_BYTES = 128;
5
7
  const MAX_TRANSACTION_QUERIES = 25;
6
8
  const MAX_RESULT_ROWS = 1_000;
7
9
  const MAX_RESULT_NODES = 10_000;
@@ -12,7 +14,7 @@ export function createPrivateDatabaseClient(binding) {
12
14
  binding === null ||
13
15
  typeof binding.query !== "function" ||
14
16
  typeof binding.transaction !== "function") {
15
- throw new CustomerRuntimeError("database_query_invalid", false);
17
+ throw new CustomerRuntimeError("database_binding_missing", false, "pass the OHMYHOST_DATABASE binding from the Worker env (Next.js: getCloudflareContext({ async: true }).env), not process.env. It exists only in server code of a deployment whose ohmyhost.yaml sets database.enabled: true.");
16
18
  }
17
19
  return Object.freeze({
18
20
  async withConnection(run) {
@@ -101,7 +103,12 @@ function validateQuery(value, aggregateBudget, inConnection = false) {
101
103
  const parsedValues = values.map((parameter, index) => {
102
104
  if (index > 0)
103
105
  consume(budget, 1, MAX_PARAMETER_BYTES, invalidQuery);
104
- return validateStructured(parameter, budget, 0, MAX_PARAMETER_BYTES, invalidQuery);
106
+ const parsed = validateStructured(parameter, budget, 0, MAX_PARAMETER_BYTES, invalidQuery);
107
+ if ((Array.isArray(parsed) ||
108
+ (isRecord(parsed) && !(parsed instanceof Date) && !(parsed instanceof Uint8Array))) &&
109
+ workerJsonParameterBytes(parsed) > MAX_JSON_PARAMETER_BYTES)
110
+ invalidQuery();
111
+ return parsed;
105
112
  });
106
113
  return Object.freeze({
107
114
  text,
@@ -191,12 +198,17 @@ function validateSql(text, inConnection = false) {
191
198
  .map((statement) => statement.trim())
192
199
  .filter((statement) => statement.length > 0);
193
200
  const semicolonCount = [...visible].filter((character) => character === ";").length;
201
+ const statement = statements[0];
194
202
  if (statements.length !== 1 ||
195
203
  semicolonCount > 1 ||
196
204
  (inConnection
197
- ? // Transaction control is the whole point of holding a connection; session-wide state is not.
198
- /^(?:set|reset|discard|prepare\s+transaction)\b/iu.test(statements[0])
199
- : /^(?:begin|start(?:\s+transaction)?|commit|end|abort|rollback|savepoint|release|set|reset|discard|prepare\s+transaction)\b/iu.test(statements[0]))) {
205
+ ? // Transaction control is the whole point of holding a connection; session-wide state and a
206
+ // chained transaction, which the database Worker refuses among the first six words, are not.
207
+ /^(?:set|reset|discard|prepare\s+transaction)\b/iu.test(statement) ||
208
+ (/^(?:commit|end|abort|rollback)\b/iu.test(statement) &&
209
+ !/^rollback(?:\s+[a-z_]+)?\s+to\b/iu.test(statement) &&
210
+ /^(?:[a-z_]+\s+){1,5}chain\b/iu.test(statement))
211
+ : /^(?:begin|start(?:\s+transaction)?|commit|end|abort|rollback|savepoint|release|set|reset|discard|prepare)\b/iu.test(statement))) {
200
212
  invalidQuery();
201
213
  }
202
214
  }
@@ -295,10 +307,15 @@ function validateStructured(value, budget, depth, maximumBytes, invalid) {
295
307
  return invalid();
296
308
  consume(budget, 2, maximumBytes, invalid);
297
309
  // RPC rejects null-prototype objects. The forbidden keys below keep a normal object safe
298
- // while allowing JSON parameters to cross a real Worker Service Binding.
310
+ // while allowing JSON parameters to cross a real Worker Service Binding. Any other key the
311
+ // database Worker accepts is valid: 1-128 UTF-8 bytes without control characters.
299
312
  const output = {};
300
313
  for (const [index, [key, item]] of Object.entries(value).entries()) {
301
- if (!/^[A-Za-z_?][A-Za-z0-9_?$ -]{0,127}$/u.test(key) ||
314
+ const keyBytes = new TextEncoder().encode(key).byteLength;
315
+ if (keyBytes < 1 ||
316
+ keyBytes > MAX_KEY_BYTES ||
317
+ // eslint-disable-next-line no-control-regex
318
+ /[\u0000-\u001f\u007f]/u.test(key) ||
302
319
  key === "__proto__" ||
303
320
  key === "constructor" ||
304
321
  key === "prototype") {
@@ -311,6 +328,25 @@ function validateStructured(value, budget, depth, maximumBytes, invalid) {
311
328
  }
312
329
  return Object.freeze(output);
313
330
  }
331
+ /**
332
+ * The database Worker's own measure of one JSON parameter: text and key bytes, eight bytes per
333
+ * number and 24 per date. Mirroring it lets the client refuse what the Worker would refuse.
334
+ */
335
+ function workerJsonParameterBytes(value) {
336
+ if (typeof value === "string")
337
+ return new TextEncoder().encode(value).byteLength;
338
+ if (typeof value === "number")
339
+ return 8;
340
+ if (value instanceof Date)
341
+ return 24;
342
+ if (value instanceof Uint8Array)
343
+ return value.byteLength;
344
+ if (Array.isArray(value))
345
+ return value.reduce((total, item) => total + workerJsonParameterBytes(item), 0);
346
+ if (!isRecord(value))
347
+ return 0;
348
+ return Object.entries(value).reduce((total, [key, item]) => total + new TextEncoder().encode(key).byteLength + workerJsonParameterBytes(item), 0);
349
+ }
314
350
  function unavailable() {
315
351
  return new CustomerRuntimeError("database_unavailable", true);
316
352
  }
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -1,9 +1,10 @@
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_credit_insufficient" | "mail_rejected" | "mail_reputation_suspended" | "mail_send_conflict" | "mail_send_limit_exceeded" | "storage_conflict" | "storage_object_not_found" | "storage_quota_exceeded" | "storage_upload_expired" | "storage_upload_rejected" | "unauthorized";
2
- export type CustomerRuntimeErrorCode = CustomerRuntimeGatewayErrorCode | "database_query_invalid" | "database_response_invalid" | "database_unavailable" | "scheduled_context_invalid";
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";
2
+ export type CustomerRuntimeErrorCode = CustomerRuntimeGatewayErrorCode | "database_binding_missing" | "database_query_invalid" | "database_response_invalid" | "database_unavailable" | "scheduled_context_invalid";
3
3
  export declare class CustomerRuntimeError extends Error {
4
4
  readonly code: CustomerRuntimeErrorCode;
5
5
  readonly retryable: boolean;
6
- constructor(code: CustomerRuntimeErrorCode, retryable: boolean);
6
+ /** The message starts with the stable code; a detail names the action, never a secret value. */
7
+ constructor(code: CustomerRuntimeErrorCode, retryable: boolean, detail?: string);
7
8
  }
8
9
  /** A verified PostgreSQL statement failure, without SQL, row values or provider diagnostics. */
9
10
  export declare class CustomerDatabaseError extends Error {
@@ -13,6 +14,6 @@ export declare class CustomerDatabaseError extends Error {
13
14
  }
14
15
  export declare class CustomerRuntimeGatewayError extends CustomerRuntimeError {
15
16
  readonly status: number | null;
16
- constructor(code: CustomerRuntimeGatewayErrorCode, status: number | null, retryable: boolean);
17
+ constructor(code: CustomerRuntimeGatewayErrorCode, status: number | null, retryable: boolean, detail?: string);
17
18
  }
18
19
  //# sourceMappingURL=errors.d.ts.map
@@ -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,0BAA0B,GAC1B,eAAe,GACf,2BAA2B,GAC3B,oBAAoB,GACpB,0BAA0B,GAC1B,kBAAkB,GAClB,0BAA0B,GAC1B,wBAAwB,GACxB,wBAAwB,GACxB,yBAAyB,GACzB,cAAc,CAAC;AAEnB,MAAM,MAAM,wBAAwB,GAChC,+BAA+B,GAC/B,wBAAwB,GACxB,2BAA2B,GAC3B,sBAAsB,GACtB,2BAA2B,CAAC;AAEhC,qBAAa,oBAAqB,SAAQ,KAAK;aAE3B,IAAI,EAAE,wBAAwB;aAC9B,SAAS,EAAE,OAAO;gBADlB,IAAI,EAAE,wBAAwB,EAC9B,SAAS,EAAE,OAAO;CAKrC;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;CAKrB"}
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,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"}
package/dist/errors.js CHANGED
@@ -1,8 +1,9 @@
1
1
  export class CustomerRuntimeError extends Error {
2
2
  code;
3
3
  retryable;
4
- constructor(code, retryable) {
5
- super(code);
4
+ /** The message starts with the stable code; a detail names the action, never a secret value. */
5
+ constructor(code, retryable, detail) {
6
+ super(detail === undefined ? code : `${code}: ${detail}`);
6
7
  this.code = code;
7
8
  this.retryable = retryable;
8
9
  this.name = "CustomerRuntimeError";
@@ -13,7 +14,7 @@ export class CustomerDatabaseError extends Error {
13
14
  code;
14
15
  retryable;
15
16
  constructor(code) {
16
- super("database_statement_failed");
17
+ super(`database_statement_failed: SQLSTATE ${code}`);
17
18
  this.code = code;
18
19
  if (!/^[0-9A-Z]{5}$/u.test(code))
19
20
  throw new TypeError("Invalid SQLSTATE");
@@ -23,8 +24,8 @@ export class CustomerDatabaseError extends Error {
23
24
  }
24
25
  export class CustomerRuntimeGatewayError extends CustomerRuntimeError {
25
26
  status;
26
- constructor(code, status, retryable) {
27
- super(code, retryable);
27
+ constructor(code, status, retryable, detail) {
28
+ super(code, retryable, detail);
28
29
  this.status = status;
29
30
  this.name = "CustomerRuntimeGatewayError";
30
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AA4BA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAE3B;IACA;IAFlB,YACkB,IAA8B,EAC9B,SAAkB;QAElC,KAAK,CAAC,IAAI,CAAC,CAAC;QAHI,SAAI,GAAJ,IAAI,CAA0B;QAC9B,cAAS,GAAT,SAAS,CAAS;QAGlC,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,2BAA2B,CAAC,CAAC;QADF,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;QAElB,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAHP,WAAM,GAAN,MAAM,CAAe;QAIrC,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAkCA,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
@@ -18,4 +18,8 @@ export declare function postGatewayJson(connection: ValidatedGatewayConnection,
18
18
  export declare function fetchWithTimeout(fetch: (request: Request) => Promise<Response>, request: Request, timeoutMilliseconds: number): Promise<Response>;
19
19
  export declare function exactRecord(value: unknown, keys: readonly string[]): Record<string, unknown>;
20
20
  export declare function invalidResponse(): never;
21
+ /** A malformed platform ID is a configuration mistake, not a gateway answer. */
22
+ export declare function requireConfiguredUlid(value: unknown, option: "projectId" | "environmentId", variable: "OHMYHOST_PROJECT_ID" | "OHMYHOST_ENVIRONMENT_ID"): string;
23
+ /** Names the failing option and how to supply it; never echoes the configured value. */
24
+ export declare function configurationInvalid(detail: string): never;
21
25
  //# 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,CA8B9F;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,CAcnB;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"}
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"}
package/dist/http.js CHANGED
@@ -3,26 +3,33 @@ const MAX_RESPONSE_BYTES = 32 * 1024;
3
3
  const DEFAULT_TIMEOUT_MILLISECONDS = 10_000;
4
4
  export function validateGatewayConnection(value) {
5
5
  assertServerRuntime();
6
- let endpoint;
6
+ let endpoint = null;
7
7
  try {
8
8
  endpoint = new URL(value.endpoint);
9
9
  }
10
10
  catch {
11
- throw new CustomerRuntimeGatewayError("gateway_configuration_invalid", null, false);
11
+ // Reported below with the option that failed.
12
12
  }
13
- const timeoutMilliseconds = value.timeoutMilliseconds ?? DEFAULT_TIMEOUT_MILLISECONDS;
14
- if (endpoint.protocol !== "https:" ||
13
+ if (endpoint === null ||
14
+ endpoint.protocol !== "https:" ||
15
15
  endpoint.username !== "" ||
16
16
  endpoint.password !== "" ||
17
17
  endpoint.pathname !== "/" ||
18
18
  endpoint.search !== "" ||
19
- endpoint.hash !== "" ||
20
- !/^[A-Za-z0-9_-]{43}$/u.test(value.key) ||
21
- typeof value.fetch !== "function" ||
22
- !Number.isSafeInteger(timeoutMilliseconds) ||
19
+ endpoint.hash !== "") {
20
+ configurationInvalid("endpoint is missing or not an https origin; OHMYHOST_MAIL_GATEWAY_URL and OHMYHOST_STORAGE_GATEWAY_URL exist only when ohmyhost.yaml enables that capability");
21
+ }
22
+ if (typeof value.key !== "string" || !/^[A-Za-z0-9_-]{43}$/u.test(value.key)) {
23
+ configurationInvalid("key is missing or not a runtime capability key; pass OHMYHOST_MAIL_KEY or OHMYHOST_STORAGE_KEY from the Worker env");
24
+ }
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)");
27
+ }
28
+ const timeoutMilliseconds = value.timeoutMilliseconds ?? DEFAULT_TIMEOUT_MILLISECONDS;
29
+ if (!Number.isSafeInteger(timeoutMilliseconds) ||
23
30
  timeoutMilliseconds < 100 ||
24
31
  timeoutMilliseconds > 30_000) {
25
- throw new CustomerRuntimeGatewayError("gateway_configuration_invalid", null, false);
32
+ configurationInvalid("timeoutMilliseconds must be an integer from 100 to 30000");
26
33
  }
27
34
  return Object.freeze({
28
35
  endpoint: endpoint.href,
@@ -49,14 +56,15 @@ export async function postGatewayJson(connection, path, body, maximumRequestByte
49
56
  }
50
57
  export async function fetchWithTimeout(fetch, request, timeoutMilliseconds) {
51
58
  const controller = new AbortController();
59
+ const signal = AbortSignal.any([request.signal, controller.signal]);
52
60
  const timeout = setTimeout(() => controller.abort(), timeoutMilliseconds);
53
61
  try {
54
- return await fetch(new Request(request, { signal: controller.signal }));
62
+ return await fetch(new Request(request, { signal }));
55
63
  }
56
64
  catch (error) {
57
65
  if (error instanceof CustomerRuntimeGatewayError)
58
66
  throw error;
59
- if (controller.signal.aborted) {
67
+ if (signal.aborted) {
60
68
  throw new CustomerRuntimeGatewayError("gateway_timeout", null, true);
61
69
  }
62
70
  throw new CustomerRuntimeGatewayError("gateway_unavailable", null, true);
@@ -79,9 +87,20 @@ export function exactRecord(value, keys) {
79
87
  export function invalidResponse() {
80
88
  throw new CustomerRuntimeGatewayError("gateway_response_invalid", null, false);
81
89
  }
90
+ /** A malformed platform ID is a configuration mistake, not a gateway answer. */
91
+ export function requireConfiguredUlid(value, option, variable) {
92
+ if (typeof value !== "string" || !/^[0-7][0-9A-HJKMNP-TV-Z]{25}$/u.test(value)) {
93
+ configurationInvalid(`${option} is not a ULID; pass ${variable} from the Worker env`);
94
+ }
95
+ return value;
96
+ }
97
+ /** Names the failing option and how to supply it; never echoes the configured value. */
98
+ export function configurationInvalid(detail) {
99
+ throw new CustomerRuntimeGatewayError("gateway_configuration_invalid", null, false, detail);
100
+ }
82
101
  function assertServerRuntime() {
83
102
  if (typeof window !== "undefined") {
84
- throw new CustomerRuntimeGatewayError("gateway_configuration_invalid", null, false);
103
+ configurationInvalid("the client runs only in server code, never in a browser");
85
104
  }
86
105
  }
87
106
  async function readBoundedJson(response) {
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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mail-attachments.d.ts","sourceRoot":"","sources":["../src/mail-attachments.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+C,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEhG,qGAAqG;AACrG,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,iBAAiB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE;2BAUzB,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;EA8B1D"}
1
+ {"version":3,"file":"mail-attachments.d.ts","sourceRoot":"","sources":["../src/mail-attachments.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,WAAW,CAAC;AAEnB,qGAAqG;AACrG,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,iBAAiB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE;2BAazB,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;EA8B1D"}
@@ -1,11 +1,10 @@
1
- import { validateGatewayConnection, fetchWithTimeout } from "./http.js";
1
+ import { validateGatewayConnection, fetchWithTimeout, requireConfiguredUlid, } from "./http.js";
2
2
  import { CustomerRuntimeGatewayError } from "./errors.js";
3
3
  /** Stream owned attachments through the private mail binding using the environment's runtime key. */
4
4
  export function createMailAttachmentClient(configuration) {
5
5
  const connection = validateGatewayConnection(configuration);
6
- if (!/^[0-7][0-9A-HJKMNP-TV-Z]{25}$/u.test(configuration.projectId))
7
- throw new CustomerRuntimeGatewayError("gateway_configuration_invalid", null, false);
8
- const pattern = new RegExp(`^/v1/projects/${configuration.projectId}/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");
6
+ const projectId = requireConfiguredUlid(configuration.projectId, "projectId", "OHMYHOST_PROJECT_ID");
7
+ const pattern = new RegExp(`^/v1/projects/${projectId}/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");
9
8
  return {
10
9
  async download(downloadPath) {
11
10
  if (!pattern.test(downloadPath))
@@ -1 +1 @@
1
- {"version":3,"file":"mail-attachments.js","sourceRoot":"","sources":["../src/mail-attachments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAA0B,MAAM,WAAW,CAAC;AAChG,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC1D,qGAAqG;AACrG,MAAM,UAAU,0BAA0B,CACxC,aAAwD;IAExD,MAAM,UAAU,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAC;IAC5D,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;QACjE,MAAM,IAAI,2BAA2B,CAAC,+BAA+B,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACtF,MAAM,OAAO,GAAG,IAAI,MAAM,CACxB,iBAAiB,aAAa,CAAC,SAAS,uHAAuH,EAC/J,GAAG,CACJ,CAAC;IACF,OAAO;QACL,KAAK,CAAC,QAAQ,CAAC,YAAoB;YACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;gBAC7B,MAAM,IAAI,2BAA2B,CAAC,yBAAyB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAChF,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CACrC,UAAU,CAAC,KAAK,EAChB,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE;gBACtD,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,UAAU,CAAC,GAAG,EAAE,EAAE;aACvD,CAAC,EACF,UAAU,CAAC,mBAAmB,CAC/B,CAAC;YACF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC9B,MAAM,IAAI,2BAA2B,CACnC,QAAQ,CAAC,MAAM,KAAK,GAAG;oBACrB,CAAC,CAAC,sBAAsB;oBACxB,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG;wBACvB,CAAC,CAAC,2BAA2B;wBAC7B,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG;4BACvB,CAAC,CAAC,wBAAwB;4BAC1B,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG;gCACvB,CAAC,CAAC,cAAc;gCAChB,CAAC,CAAC,qBAAqB,EAC/B,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,MAAM,IAAI,GAAG,CACvB,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"mail-attachments.js","sourceRoot":"","sources":["../src/mail-attachments.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,GAEtB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC1D,qGAAqG;AACrG,MAAM,UAAU,0BAA0B,CACxC,aAAwD;IAExD,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,OAAO,GAAG,IAAI,MAAM,CACxB,iBAAiB,SAAS,uHAAuH,EACjJ,GAAG,CACJ,CAAC;IACF,OAAO;QACL,KAAK,CAAC,QAAQ,CAAC,YAAoB;YACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;gBAC7B,MAAM,IAAI,2BAA2B,CAAC,yBAAyB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAChF,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CACrC,UAAU,CAAC,KAAK,EAChB,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE;gBACtD,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,UAAU,CAAC,GAAG,EAAE,EAAE;aACvD,CAAC,EACF,UAAU,CAAC,mBAAmB,CAC/B,CAAC;YACF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC9B,MAAM,IAAI,2BAA2B,CACnC,QAAQ,CAAC,MAAM,KAAK,GAAG;oBACrB,CAAC,CAAC,sBAAsB;oBACxB,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG;wBACvB,CAAC,CAAC,2BAA2B;wBAC7B,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG;4BACvB,CAAC,CAAC,wBAAwB;4BAC1B,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG;gCACvB,CAAC,CAAC,cAAc;gCAChB,CAAC,CAAC,qBAAqB,EAC/B,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,MAAM,IAAI,GAAG,CACvB,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../src/mail.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,WAAW,CAAC;AAEnB,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;gBAK7C,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;GA2C9E"}
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"}
package/dist/mail.js CHANGED
@@ -1,8 +1,14 @@
1
1
  import { CustomerRuntimeGatewayError } from "./errors.js";
2
- import { exactRecord, invalidResponse, postGatewayJson, validateGatewayConnection, } from "./http.js";
2
+ import { exactRecord, invalidResponse, postGatewayJson, requireConfiguredUlid, validateGatewayConnection, } from "./http.js";
3
+ /** The gateway's own payment codes and the action that clears each; none clears on a retry. */
4
+ const PAYMENT_REQUIRED = Object.freeze({
5
+ paid_plan_required: "sending mail needs Paid access; the organization Owner starts Paid in billing, and top-ups do not.",
6
+ insufficient_organization_credits: "the organization has no credits for this send; add credits.",
7
+ project_budget_exceeded: "this project's Stop budget is used up; raise it or switch it to continue.",
8
+ });
3
9
  export function createTransactionalMailClient(configuration) {
4
10
  const connection = validateGatewayConnection(configuration);
5
- const projectId = requireUlid(configuration.projectId);
11
+ const projectId = requireConfiguredUlid(configuration.projectId, "projectId", "OHMYHOST_PROJECT_ID");
6
12
  return Object.freeze({
7
13
  async send(input) {
8
14
  validateMailInput(input);
@@ -55,17 +61,15 @@ function throwMailError(status, body) {
55
61
  const code = record["code"];
56
62
  if (record["request_id"] !== undefined)
57
63
  requireUlid(record["request_id"]);
64
+ if (status === 400 && code === "invalid_request") {
65
+ throw new CustomerRuntimeGatewayError("gateway_request_invalid", status, false);
66
+ }
58
67
  if (status === 401 && code === "unauthorized") {
59
68
  throw new CustomerRuntimeGatewayError("unauthorized", status, false);
60
69
  }
61
- if (status === 402 &&
62
- [
63
- "mail_send_credit_exhausted",
64
- "insufficient_organization_credits",
65
- "paid_plan_required",
66
- "project_budget_exceeded",
67
- ].includes(String(code))) {
68
- throw new CustomerRuntimeGatewayError("mail_credit_insufficient", status, false);
70
+ if (status === 402 && typeof code === "string" && Object.hasOwn(PAYMENT_REQUIRED, code)) {
71
+ const paymentCode = code;
72
+ throw new CustomerRuntimeGatewayError(paymentCode, status, false, PAYMENT_REQUIRED[paymentCode]);
69
73
  }
70
74
  if (status === 409 && code === "mail_send_conflict") {
71
75
  throw new CustomerRuntimeGatewayError("mail_send_conflict", status, false);
@@ -92,9 +96,10 @@ function requireUlid(value) {
92
96
  function validIdempotencyKey(value) {
93
97
  return /^[A-Za-z0-9._:-]{1,128}$/u.test(value);
94
98
  }
99
+ /** The mail provider's own address rule, so the client never refuses what it would send. */
95
100
  function validEmail(value) {
96
101
  return (value.length <= 254 &&
97
- /^[a-z0-9](?:[a-z0-9._%+-]{0,62}[a-z0-9])?@(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,63}$/u.test(value));
102
+ /^[A-Za-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,63}$/u.test(value));
98
103
  }
99
104
  function validContent(value, maximumCharacters, maximumBytes, allowLineBreaks) {
100
105
  const characters = [...value];