@sanoma-ai/workflows 0.9.1 → 0.10.1

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 (207) hide show
  1. package/README.md +193 -50
  2. package/SECRET-SUPPORT.md +33 -0
  3. package/dist/apply-steps.js +5 -2
  4. package/dist/apply-steps.js.map +1 -1
  5. package/dist/apply.d.ts +3 -0
  6. package/dist/apply.js +27 -13
  7. package/dist/apply.js.map +1 -1
  8. package/dist/approvals.d.ts +1 -0
  9. package/dist/approvals.js +6 -1
  10. package/dist/approvals.js.map +1 -1
  11. package/dist/apps.d.ts +13 -24
  12. package/dist/apps.js +69 -68
  13. package/dist/apps.js.map +1 -1
  14. package/dist/ast.d.ts +9 -7
  15. package/dist/ast.js +2 -0
  16. package/dist/ast.js.map +1 -1
  17. package/dist/authentication.d.ts +54 -0
  18. package/dist/authentication.js +138 -0
  19. package/dist/authentication.js.map +1 -0
  20. package/dist/call-workflow.d.ts +5 -0
  21. package/dist/call-workflow.js +4 -3
  22. package/dist/call-workflow.js.map +1 -1
  23. package/dist/call.d.ts +3 -2
  24. package/dist/call.js +36 -7
  25. package/dist/call.js.map +1 -1
  26. package/dist/cedar.js +14 -1
  27. package/dist/cedar.js.map +1 -1
  28. package/dist/change-steps.js +7 -5
  29. package/dist/change-steps.js.map +1 -1
  30. package/dist/change.d.ts +7 -0
  31. package/dist/change.js +7 -0
  32. package/dist/change.js.map +1 -1
  33. package/dist/client.d.ts +62 -10
  34. package/dist/client.js +272 -47
  35. package/dist/client.js.map +1 -1
  36. package/dist/collection.d.ts +7 -0
  37. package/dist/collection.js +5 -2
  38. package/dist/collection.js.map +1 -1
  39. package/dist/config.d.ts +16 -4
  40. package/dist/config.js +89 -21
  41. package/dist/config.js.map +1 -1
  42. package/dist/connection.d.ts +389 -0
  43. package/dist/connection.js +657 -0
  44. package/dist/connection.js.map +1 -0
  45. package/dist/credentials.d.ts +7 -53
  46. package/dist/credentials.js +84 -247
  47. package/dist/credentials.js.map +1 -1
  48. package/dist/db.js +34 -2
  49. package/dist/db.js.map +1 -1
  50. package/dist/define.d.ts +9 -2
  51. package/dist/define.js.map +1 -1
  52. package/dist/definitions.d.ts +20 -0
  53. package/dist/definitions.js +16 -0
  54. package/dist/definitions.js.map +1 -0
  55. package/dist/deployment-key.d.ts +2 -0
  56. package/dist/deployment-key.js +22 -0
  57. package/dist/deployment-key.js.map +1 -0
  58. package/dist/describe.d.ts +15 -175
  59. package/dist/describe.js +122 -35
  60. package/dist/describe.js.map +1 -1
  61. package/dist/description.d.ts +532 -0
  62. package/dist/description.js +381 -0
  63. package/dist/description.js.map +1 -0
  64. package/dist/direct.js +7 -0
  65. package/dist/direct.js.map +1 -1
  66. package/dist/drift.d.ts +1 -1
  67. package/dist/drift.js +1 -1
  68. package/dist/drift.js.map +1 -1
  69. package/dist/env.d.ts +2 -0
  70. package/dist/env.js +2 -2
  71. package/dist/env.js.map +1 -1
  72. package/dist/fake.d.ts +13 -1
  73. package/dist/fake.js +70 -0
  74. package/dist/fake.js.map +1 -1
  75. package/dist/index.d.ts +11 -3
  76. package/dist/index.js +10 -2
  77. package/dist/index.js.map +1 -1
  78. package/dist/ledger.d.ts +2 -0
  79. package/dist/ledger.js +1 -1
  80. package/dist/ledger.js.map +1 -1
  81. package/dist/lint.d.ts +0 -9
  82. package/dist/lint.js +2 -17
  83. package/dist/lint.js.map +1 -1
  84. package/dist/load.d.ts +85 -0
  85. package/dist/load.js +391 -0
  86. package/dist/load.js.map +1 -0
  87. package/dist/lockfile.d.ts +2 -0
  88. package/dist/lockfile.js +8 -3
  89. package/dist/lockfile.js.map +1 -1
  90. package/dist/op.d.ts +22 -5
  91. package/dist/op.js +20 -2
  92. package/dist/op.js.map +1 -1
  93. package/dist/outline.d.ts +5 -0
  94. package/dist/outline.js +46 -5
  95. package/dist/outline.js.map +1 -1
  96. package/dist/paths.d.ts +18 -2
  97. package/dist/paths.js +19 -7
  98. package/dist/paths.js.map +1 -1
  99. package/dist/plugin.d.ts +0 -11
  100. package/dist/plugin.js +3 -18
  101. package/dist/plugin.js.map +1 -1
  102. package/dist/policy.d.ts +2 -0
  103. package/dist/policy.js.map +1 -1
  104. package/dist/resource.d.ts +10 -4
  105. package/dist/resource.js +11 -4
  106. package/dist/resource.js.map +1 -1
  107. package/dist/resources.d.ts +33 -76
  108. package/dist/resources.js +219 -227
  109. package/dist/resources.js.map +1 -1
  110. package/dist/run.d.ts +4 -0
  111. package/dist/run.js.map +1 -1
  112. package/dist/sandbox.d.ts +5 -2
  113. package/dist/sandbox.js +56 -7
  114. package/dist/sandbox.js.map +1 -1
  115. package/dist/scenario.d.ts +5 -0
  116. package/dist/scenario.js +3 -2
  117. package/dist/scenario.js.map +1 -1
  118. package/dist/scenarios.js +7 -1
  119. package/dist/scenarios.js.map +1 -1
  120. package/dist/schema.js +8 -0
  121. package/dist/schema.js.map +1 -1
  122. package/dist/secret-store-check.d.ts +11 -0
  123. package/dist/secret-store-check.js +76 -0
  124. package/dist/secret-store-check.js.map +1 -0
  125. package/dist/secret-store.d.ts +106 -0
  126. package/dist/secret-store.js +228 -0
  127. package/dist/secret-store.js.map +1 -0
  128. package/dist/secret.d.ts +2 -0
  129. package/dist/secret.js +32 -0
  130. package/dist/secret.js.map +1 -1
  131. package/dist/shared.d.ts +21 -11
  132. package/dist/shared.js +41 -7
  133. package/dist/shared.js.map +1 -1
  134. package/dist/sites.d.ts +4 -93
  135. package/dist/sites.js +76 -84
  136. package/dist/sites.js.map +1 -1
  137. package/dist/steps.d.ts +3 -0
  138. package/dist/steps.js.map +1 -1
  139. package/dist/version.d.ts +2 -1
  140. package/dist/version.js +2 -1
  141. package/dist/version.js.map +1 -1
  142. package/dist/wakeup-driver.js +15 -6
  143. package/dist/wakeup-driver.js.map +1 -1
  144. package/dist/worker.js +12 -8
  145. package/dist/worker.js.map +1 -1
  146. package/dist/writer.d.ts +53 -14
  147. package/dist/writer.js +113 -43
  148. package/dist/writer.js.map +1 -1
  149. package/oxlint.json +1 -5
  150. package/package.json +6 -1
  151. package/src/apply-steps.ts +5 -2
  152. package/src/apply.ts +54 -21
  153. package/src/approvals.ts +7 -1
  154. package/src/apps.ts +71 -86
  155. package/src/ast.ts +6 -6
  156. package/src/authentication.ts +191 -0
  157. package/src/call-workflow.ts +5 -4
  158. package/src/call.ts +52 -9
  159. package/src/cedar.ts +14 -1
  160. package/src/change-steps.ts +7 -4
  161. package/src/change.ts +10 -0
  162. package/src/client.ts +346 -45
  163. package/src/collection.ts +10 -2
  164. package/src/config.ts +107 -19
  165. package/src/connection.ts +912 -0
  166. package/src/credentials.ts +94 -281
  167. package/src/db.ts +34 -2
  168. package/src/define.ts +7 -2
  169. package/src/definitions.ts +31 -0
  170. package/src/deployment-key.ts +23 -0
  171. package/src/describe.ts +150 -227
  172. package/src/description.ts +426 -0
  173. package/src/direct.ts +7 -0
  174. package/src/drift.ts +10 -2
  175. package/src/env.ts +4 -2
  176. package/src/fake.ts +71 -0
  177. package/src/index.ts +53 -1
  178. package/src/ledger.ts +3 -1
  179. package/src/lint.ts +2 -17
  180. package/src/load.ts +466 -0
  181. package/src/lockfile.ts +10 -3
  182. package/src/op.ts +41 -7
  183. package/src/outline.ts +53 -7
  184. package/src/paths.ts +21 -6
  185. package/src/plugin.ts +3 -24
  186. package/src/policy.ts +2 -0
  187. package/src/resource.ts +24 -6
  188. package/src/resources.ts +246 -301
  189. package/src/run.ts +4 -0
  190. package/src/sandbox.ts +61 -7
  191. package/src/scenario.ts +24 -6
  192. package/src/scenarios.ts +7 -1
  193. package/src/schema.ts +10 -0
  194. package/src/secret-store-check.ts +93 -0
  195. package/src/secret-store.ts +314 -0
  196. package/src/secret.ts +29 -0
  197. package/src/shared.ts +44 -10
  198. package/src/sites.ts +85 -179
  199. package/src/steps.ts +3 -2
  200. package/src/version.ts +2 -1
  201. package/src/wakeup-driver.ts +22 -6
  202. package/src/worker.ts +12 -8
  203. package/src/writer.ts +145 -56
  204. package/dist/datafile.d.ts +0 -97
  205. package/dist/datafile.js +0 -479
  206. package/dist/datafile.js.map +0 -1
  207. package/src/datafile.ts +0 -601
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
@@ -1,55 +1,9 @@
1
1
  import { type Db } from "./db.ts";
2
- import type { Driver } from "./op.ts";
3
- import type { Secrets } from "./secret.ts";
4
- /** The variable holding the key the stored values are encrypted with: 32 bytes, base64. */
2
+ import { SecretAccess, type SecretConfiguration, type SecretStore } from "./secret-store.ts";
5
3
  export declare const SECRETS_KEY = "SANOMA_SECRETS_KEY";
6
- /**
7
- * `name`'s value encrypted for the table: `v1:<iv, base64>:<ciphertext and tag, base64>`,
8
- * AES-256-GCM, with the name as associated data, so a value moved to another row does not decrypt.
9
- */
10
- export declare function encrypt(name: string, value: string): string;
11
- /** The value `name`'s row holds: decrypted, or a plaintext one as it is (it is encrypted on its next write). */
12
- export declare function decrypt(name: string, stored: string): string;
13
- /** The stored rows of these names, values included: for loading into an environment or checking, never for showing. */
14
- export declare function storedCredentials(db: Db, names: readonly string[]): Promise<Map<string, {
15
- value: string;
16
- setBy: string;
17
- setAt: string;
18
- }>>;
19
- /** Upserts the value and announces it, in one statement, so a worker never hears of a change it cannot read. */
20
- export declare function storeCredential(db: Db, { name, value, setBy }: {
21
- name: string;
22
- value: string;
23
- setBy: string;
24
- }): Promise<void>;
25
- /**
26
- * The stored value of `name`; when there is none, `make()`'s, stored first and announced. Of two
27
- * at once, the first stored wins, and both return it.
28
- */
29
- export declare function ensureCredential(db: Db, { name, make, setBy }: {
30
- name: string;
31
- make: () => string;
32
- setBy: string;
33
- }): Promise<string>;
34
- /**
35
- * The secrets store a live driver is given (`CallContext.secrets`): a variable the environment
36
- * sets wins, as it does for a driver's `env`; else the stored value. `ensure` stores what it
37
- * makes as `setBy`.
38
- */
39
- export declare function storedSecrets(db: () => Promise<Db>, setBy: string): Secrets;
40
- /** Deletes the row, announcing it when there was one. */
41
- export declare function deleteCredential(db: Db, name: string): Promise<void>;
42
- /** Stops a worker's credentials listener. */
43
- export interface CredentialsWatch {
44
- close(): Promise<void>;
45
- }
46
- /**
47
- * Loads the stored values of the declared variables the environment does not set into
48
- * `process.env`, then keeps them current: on each change announced, and on reconnecting, it
49
- * loads them again, so a value set replaces the one before and a value cleared is deleted. A
50
- * name the environment set when this started is never touched, and the names it did set are
51
- * deleted on `close`. Logs, per vendor, how many variables each load changed, never a value, and
52
- * warns of a reloaded value its schema refuses. A listener that drops reconnects, waiting longer
53
- * after each failure, up to 30 s, until it is closed. With no such variable, it connects to nothing.
54
- */
55
- export declare function watchCredentials(databaseUrl: string, drivers: ReadonlyMap<string, Driver>): Promise<CredentialsWatch>;
4
+ /** AES-256-GCM authenticated to the complete namespace/path identity. No plaintext format. */
5
+ export declare function encrypt(identity: string, value: string): string;
6
+ export declare function decrypt(identity: string, stored: string): string;
7
+ /** One company's database connection supplies authority; namespace separates deployments within it. */
8
+ export declare function postgresSecretStore(db: () => Promise<Db>): SecretStore;
9
+ export declare const configuredSecrets: (config: SecretConfiguration, db: () => Promise<Db>) => SecretAccess;
@@ -1,261 +1,98 @@
1
- import { createCipheriv, createDecipheriv, randomBytes } from "node:crypto";
2
- import { setTimeout as sleep } from "node:timers/promises";
3
- import { Client } from "pg";
4
- import { credentialsOf } from "./env.js";
5
- import { CREDENTIALS_TABLE as TABLE, prepareDatabase } from "./db.js";
6
- import { info, warn } from "./log.js";
7
- import { errorMessage } from "./shared.js";
8
- // Where the credentials set from the app live: one table in the config's database, beside DBOS's
9
- // own (made by `prepareDatabase` in db.ts). A value is read here only, by the worker to load it
10
- // into its environment or hand it to a driver (`storedSecrets`) and by the client to check it,
11
- // and leaves none of them. The write (`storeCredential`, `ensureCredential`) and the read
12
- // (`storedCredentials`) are the only places that touch `value`, which holds it encrypted
13
- // (`encrypt`) under `SANOMA_SECRETS_KEY`.
14
- /** Where a change is announced, with the variable's name as the payload. */
15
- const CHANNEL = "sanoma_credentials";
16
- /** The variable holding the key the stored values are encrypted with: 32 bytes, base64. */
1
+ import { createCipheriv, createDecipheriv, randomBytes, randomUUID } from "node:crypto";
2
+ import { CREDENTIALS_TABLE as TABLE } from "./db.js";
3
+ import { SecretAccess, SecretStoreError, } from "./secret-store.js";
4
+ import { deploymentKey } from "./deployment-key.js";
17
5
  export const SECRETS_KEY = "SANOMA_SECRETS_KEY";
18
- /** What starts an encrypted value; a value without it is a plaintext one stored before encryption, read as it is. */
19
6
  const V1 = "v1:";
20
- const CIPHER = "aes-256-gcm";
21
- const TAG_BYTES = 16;
22
- /** The key from the environment, or an error naming the variable. */
23
- function secretsKey() {
24
- const text = process.env[SECRETS_KEY];
25
- if (!text) {
26
- throw new Error(`${SECRETS_KEY} is not set: it encrypts the stored credentials; set it to 32 random bytes, base64 (\`openssl rand -base64 32\`)`);
27
- }
28
- const key = Buffer.from(text, "base64");
29
- if (key.length !== 32)
30
- throw new Error(`${SECRETS_KEY} must be 32 bytes, base64; it is ${key.length} bytes`);
31
- return key;
32
- }
33
- /**
34
- * `name`'s value encrypted for the table: `v1:<iv, base64>:<ciphertext and tag, base64>`,
35
- * AES-256-GCM, with the name as associated data, so a value moved to another row does not decrypt.
36
- */
37
- export function encrypt(name, value) {
38
- const iv = randomBytes(12);
39
- const cipher = createCipheriv(CIPHER, secretsKey(), iv).setAAD(Buffer.from(name));
7
+ /** AES-256-GCM authenticated to the complete namespace/path identity. No plaintext format. */
8
+ export function encrypt(identity, value) {
9
+ const nonce = randomBytes(12);
10
+ const cipher = createCipheriv("aes-256-gcm", deploymentKey(SECRETS_KEY), nonce).setAAD(Buffer.from(identity));
40
11
  const sealed = Buffer.concat([cipher.update(value, "utf8"), cipher.final(), cipher.getAuthTag()]);
41
- return `${V1}${iv.toString("base64")}:${sealed.toString("base64")}`;
12
+ return `${V1}${nonce.toString("base64")}:${sealed.toString("base64")}`;
42
13
  }
43
- /** The value `name`'s row holds: decrypted, or a plaintext one as it is (it is encrypted on its next write). */
44
- export function decrypt(name, stored) {
14
+ export function decrypt(identity, stored) {
45
15
  if (!stored.startsWith(V1))
46
- return stored;
47
- const key = secretsKey();
48
- const [iv = "", body = ""] = stored.slice(V1.length).split(":");
49
- const sealed = Buffer.from(body, "base64");
16
+ throw new SecretStoreError("invalid_value");
17
+ const key = deploymentKey(SECRETS_KEY);
50
18
  try {
51
- const decipher = createDecipheriv(CIPHER, key, Buffer.from(iv, "base64")).setAAD(Buffer.from(name));
52
- decipher.setAuthTag(sealed.subarray(-TAG_BYTES));
53
- return Buffer.concat([decipher.update(sealed.subarray(0, -TAG_BYTES)), decipher.final()]).toString("utf8");
19
+ const parts = stored.slice(V1.length).split(":");
20
+ if (parts.length !== 2)
21
+ throw new Error("format");
22
+ const nonce = Buffer.from(parts[0], "base64");
23
+ const sealed = Buffer.from(parts[1], "base64");
24
+ if (nonce.length !== 12 || sealed.length < 16)
25
+ throw new Error("format");
26
+ const decipher = createDecipheriv("aes-256-gcm", key, nonce).setAAD(Buffer.from(identity));
27
+ decipher.setAuthTag(sealed.subarray(-16));
28
+ return Buffer.concat([decipher.update(sealed.subarray(0, -16)), decipher.final()]).toString("utf8");
54
29
  }
55
- catch (err) {
56
- throw new Error(`the stored ${name} cannot be decrypted: ${SECRETS_KEY} is not the key it was stored with, or the row was not stored as ${name}`, { cause: err });
30
+ catch {
31
+ throw new SecretStoreError("invalid_value");
57
32
  }
58
33
  }
59
- /** The stored rows of these names, values included: for loading into an environment or checking, never for showing. */
60
- export async function storedCredentials(db, names) {
61
- const { rows } = await db.query(`SELECT name, value, set_by, set_at FROM ${TABLE} WHERE name = ANY($1)`, [names]);
62
- return new Map(rows.map((r) => [r.name, { value: decrypt(r.name, r.value), setBy: r.set_by, setAt: r.set_at.toISOString() }]));
63
- }
64
- /** Upserts the value and announces it, in one statement, so a worker never hears of a change it cannot read. */
65
- export async function storeCredential(db, { name, value, setBy }) {
66
- await db.query(`WITH stored AS (INSERT INTO ${TABLE} (name, value, set_by) VALUES ($1, $2, $3) ` +
67
- "ON CONFLICT (name) DO UPDATE SET value = EXCLUDED.value, set_by = EXCLUDED.set_by, set_at = now() " +
68
- `RETURNING name) SELECT pg_notify('${CHANNEL}', name) FROM stored`, [name, encrypt(name, value), setBy]);
69
- }
70
- /**
71
- * The stored value of `name`; when there is none, `make()`'s, stored first and announced. Of two
72
- * at once, the first stored wins, and both return it.
73
- */
74
- export async function ensureCredential(db, { name, make, setBy }) {
75
- const stored = (await storedCredentials(db, [name])).get(name);
76
- if (stored)
77
- return stored.value;
78
- await db.query(`WITH stored AS (INSERT INTO ${TABLE} (name, value, set_by) VALUES ($1, $2, $3) ON CONFLICT (name) DO NOTHING ` +
79
- `RETURNING name) SELECT pg_notify('${CHANNEL}', name) FROM stored`, [name, encrypt(name, make()), setBy]);
80
- return (await storedCredentials(db, [name])).get(name).value;
81
- }
82
- /**
83
- * The secrets store a live driver is given (`CallContext.secrets`): a variable the environment
84
- * sets wins, as it does for a driver's `env`; else the stored value. `ensure` stores what it
85
- * makes as `setBy`.
86
- */
87
- export function storedSecrets(db, setBy) {
34
+ const identity = ({ namespace, path }) => JSON.stringify([namespace, path]);
35
+ const decoded = (address, row) => ({
36
+ value: decrypt(identity(address), row.value),
37
+ version: row.version,
38
+ updatedBy: row.set_by,
39
+ updatedAt: row.set_at.toISOString(),
40
+ });
41
+ /** One company's database connection supplies authority; namespace separates deployments within it. */
42
+ export function postgresSecretStore(db) {
88
43
  return {
89
- get: async (name) => process.env[name] || (await storedCredentials(await db(), [name])).get(name)?.value,
90
- ensure: async (name, make) => process.env[name] || ensureCredential(await db(), { name, make, setBy }),
91
- };
92
- }
93
- /** Deletes the row, announcing it when there was one. */
94
- export async function deleteCredential(db, name) {
95
- await db.query(`WITH gone AS (DELETE FROM ${TABLE} WHERE name = $1 RETURNING name) SELECT pg_notify('${CHANNEL}', name) FROM gone`, [name]);
96
- }
97
- /** The longest wait between two attempts to reconnect the listener, and between two warnings that one failed. */
98
- const RETRY_MAX_MS = 30_000;
99
- /**
100
- * Loads the stored values of the declared variables the environment does not set into
101
- * `process.env`, then keeps them current: on each change announced, and on reconnecting, it
102
- * loads them again, so a value set replaces the one before and a value cleared is deleted. A
103
- * name the environment set when this started is never touched, and the names it did set are
104
- * deleted on `close`. Logs, per vendor, how many variables each load changed, never a value, and
105
- * warns of a reloaded value its schema refuses. A listener that drops reconnects, waiting longer
106
- * after each failure, up to 30 s, until it is closed. With no such variable, it connects to nothing.
107
- */
108
- export async function watchCredentials(databaseUrl, drivers) {
109
- const vendors = new Map();
110
- for (const [vendor, list] of credentialsOf(drivers, () => undefined)) {
111
- for (const { name } of list)
112
- if (!process.env[name] && !vendors.has(name))
113
- vendors.set(name, vendor);
114
- }
115
- const names = [...vendors.keys()];
116
- if (!names.length)
117
- return { close: async () => undefined };
118
- /** The listener's connection, from when it connects until it drops or closes. */
119
- let db;
120
- let closed = false;
121
- let reconnecting = false;
122
- // One load at a time, so close() can wait for it; the changes announced during one make one more.
123
- let loading;
124
- let stale = false;
125
- async function load(first) {
126
- const conn = db;
127
- if (closed || !conn)
128
- return;
129
- const rows = await storedCredentials(conn, names);
130
- // Nothing touches the environment once closed: a worker or an app started after may own it.
131
- if (closed)
132
- return;
133
- const changed = names.filter((name) => rows.get(name)?.value !== process.env[name]);
134
- const counts = new Map();
135
- for (const name of changed) {
136
- const value = rows.get(name)?.value;
137
- if (value === undefined)
138
- delete process.env[name];
139
- else
140
- process.env[name] = value;
141
- const vendor = vendors.get(name);
142
- counts.set(vendor, (counts.get(vendor) ?? 0) + 1);
143
- }
144
- const verb = first ? "loaded" : "reloaded";
145
- for (const [vendor, n] of counts)
146
- info(`credentials ${verb} for ${vendor} (${n} variable${n === 1 ? "" : "s"})`);
147
- // At start, startWorker warns of an invalid one, naming it.
148
- if (first)
149
- return;
150
- for (const list of credentialsOf(drivers, (name) => changed.includes(name) ? process.env[name] : undefined).values()) {
151
- for (const c of list) {
152
- if (c.status === "invalid")
153
- warn(`the stored ${c.name} is invalid (${c.problem}): calls that read it will fail`);
154
- }
155
- }
156
- }
157
- function reload(first = false) {
158
- if (loading) {
159
- stale = true;
160
- return loading;
161
- }
162
- loading = (async () => {
163
- try {
164
- do {
165
- stale = false;
166
- await load(first);
167
- first = false;
168
- } while (stale);
169
- }
170
- finally {
171
- loading = undefined;
172
- }
173
- })();
174
- return loading;
175
- }
176
- async function open(first) {
177
- const conn = new Client({ connectionString: databaseUrl, keepAlive: true, connectionTimeoutMillis: 10_000 });
178
- // Before anything can fail: an error nobody listens for ends the process.
179
- conn.on("error", (err) => lost(conn, err));
180
- // Before LISTEN, so no change announced from then on is missed.
181
- conn.on("notification", () => {
182
- if (!closed && conn === db) {
183
- reload().catch((err) => warn(`could not reload the credentials: ${errorMessage(err)}`));
184
- }
185
- });
186
- try {
187
- if (first)
188
- await prepareDatabase(databaseUrl);
189
- await conn.connect();
190
- if (closed) {
191
- await conn.end();
192
- return;
193
- }
194
- db = conn;
195
- await conn.query(`LISTEN ${CHANNEL}`);
196
- await reload(first);
197
- }
198
- catch (err) {
199
- if (db === conn)
200
- db = undefined;
201
- await conn.end().catch(() => undefined);
202
- throw err;
203
- }
204
- }
205
- /** A connection that dropped: the one listening is replaced; one still connecting fails its own open. */
206
- function lost(conn, err) {
207
- if (closed || conn !== db)
208
- return;
209
- db = undefined;
210
- void conn.end().catch(() => undefined);
211
- warn(`the credentials listener failed (${errorMessage(err)}); reconnecting`);
212
- void reconnect();
213
- }
214
- async function reconnect() {
215
- if (reconnecting)
216
- return;
217
- reconnecting = true;
218
- let wait = 1_000;
219
- let warnedAt = 0;
220
- try {
221
- for (;;) {
222
- await sleep(wait, undefined, { ref: false });
223
- if (closed)
224
- return;
225
- try {
226
- await open(false);
227
- return;
228
- }
229
- catch (err) {
230
- if (Date.now() - warnedAt >= RETRY_MAX_MS) {
231
- warnedAt = Date.now();
232
- warn(`could not reconnect the credentials listener (${errorMessage(err)}); trying again`);
233
- }
234
- wait = Math.min(wait * 2, RETRY_MAX_MS);
235
- }
236
- }
237
- }
238
- finally {
239
- reconnecting = false;
240
- }
241
- }
242
- try {
243
- await open(true);
244
- }
245
- catch (err) {
246
- closed = true;
247
- throw err;
248
- }
249
- return {
250
- async close() {
251
- closed = true;
252
- await loading?.catch(() => undefined);
253
- for (const name of names)
254
- delete process.env[name];
255
- const conn = db;
256
- db = undefined;
257
- await conn?.end();
44
+ id: "postgres",
45
+ capabilities: Object.freeze({
46
+ writable: true,
47
+ maxBytes: 65_536,
48
+ conditionalWrites: "atomic",
49
+ deletion: "destroy",
50
+ changeDetection: "read",
51
+ }),
52
+ async validate(namespace) {
53
+ if (!namespace)
54
+ throw new SecretStoreError("invalid_configuration");
55
+ deploymentKey(SECRETS_KEY);
56
+ await (await db()).query(`SELECT namespace FROM ${TABLE} LIMIT 0`);
57
+ },
58
+ async read(address) {
59
+ const { rows } = await (await db()).query(`SELECT value, version, set_by, set_at FROM ${TABLE} WHERE namespace = $1 AND name = $2`, [
60
+ address.namespace,
61
+ address.path,
62
+ ]);
63
+ return rows[0] && decoded(address, rows[0]);
64
+ },
65
+ async write(address, value, { expectedVersion, by }) {
66
+ if (Buffer.byteLength(value) > 65_536)
67
+ throw new SecretStoreError("too_large");
68
+ const version = randomUUID();
69
+ const sealed = encrypt(identity(address), value);
70
+ const query = expectedVersion === null
71
+ ? `INSERT INTO ${TABLE} (namespace,name,value,version,set_by) VALUES ($1,$2,$3,$4,$5) ON CONFLICT (namespace,name) DO NOTHING RETURNING value,version,set_by,set_at`
72
+ : `UPDATE ${TABLE} SET value=$3,version=$4,set_by=$5,set_at=now() WHERE namespace=$1 AND name=$2 AND version=$6 RETURNING value,version,set_by,set_at`;
73
+ const params = [
74
+ address.namespace,
75
+ address.path,
76
+ sealed,
77
+ version,
78
+ by,
79
+ ...(expectedVersion === null ? [] : [expectedVersion]),
80
+ ];
81
+ const { rows } = await (await db()).query(query, params);
82
+ if (!rows[0])
83
+ throw new SecretStoreError("conflict");
84
+ return decoded(address, rows[0]);
85
+ },
86
+ async delete(address, { expectedVersion }) {
87
+ const { rowCount } = await (await db()).query(`DELETE FROM ${TABLE} WHERE namespace=$1 AND name=$2 AND version=$3`, [
88
+ address.namespace,
89
+ address.path,
90
+ expectedVersion,
91
+ ]);
92
+ if (!rowCount)
93
+ throw new SecretStoreError("conflict");
258
94
  },
259
95
  };
260
96
  }
97
+ export const configuredSecrets = (config, db) => new SecretAccess(config, postgresSecretStore(db));
261
98
  //# sourceMappingURL=credentials.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
package/dist/db.js CHANGED
@@ -21,10 +21,42 @@ export const CHATS_TABLE = "sanoma_chats";
21
21
  export const CHAT_MESSAGES_TABLE = "sanoma_chat_messages";
22
22
  /** The runtime's tables, each with the word the messages name it by. */
23
23
  const TABLES = [
24
+ [
25
+ "connection health",
26
+ `CREATE TABLE IF NOT EXISTS sanoma_connection_health (
27
+ connection_id text PRIMARY KEY, revision text NOT NULL, health text NOT NULL,
28
+ credential_version text, externally_renewed boolean NOT NULL, checked_at timestamptz NOT NULL DEFAULT now())`,
29
+ ],
30
+ [
31
+ "connection setup receipts",
32
+ `CREATE TABLE IF NOT EXISTS sanoma_connection_setups (
33
+ connection_id text NOT NULL, revision text NOT NULL, credential_version text NOT NULL,
34
+ PRIMARY KEY(connection_id, revision))`,
35
+ ],
36
+ [
37
+ "connections",
38
+ `CREATE TABLE IF NOT EXISTS sanoma_connections (
39
+ id text PRIMARY KEY, vendor text NOT NULL, method text NOT NULL, owner text, rule text,
40
+ account text NOT NULL, scopes jsonb NOT NULL, revision text NOT NULL, definition text NOT NULL,
41
+ credential text, location jsonb, status text NOT NULL DEFAULT 'connected', updated_by text NOT NULL,
42
+ updated_at timestamptz NOT NULL DEFAULT now());
43
+ ALTER TABLE sanoma_connections ADD COLUMN IF NOT EXISTS location jsonb`,
44
+ ],
24
45
  [
25
46
  "credentials",
26
- `CREATE TABLE IF NOT EXISTS ${CREDENTIALS_TABLE} (name text PRIMARY KEY, value text NOT NULL, ` +
27
- "set_by text NOT NULL, set_at timestamptz NOT NULL DEFAULT now())",
47
+ // A table from before 0.10.0 (one row per name, each value sealed to its name alone) holds
48
+ // nothing 0.10.0 can read: it goes, and its credentials are set again.
49
+ // One table for the look and the drop: the one the name resolves to.
50
+ `DO $$ BEGIN
51
+ IF to_regclass('${CREDENTIALS_TABLE}') IS NOT NULL AND NOT EXISTS (
52
+ SELECT FROM pg_attribute
53
+ WHERE attrelid = to_regclass('${CREDENTIALS_TABLE}') AND attname = 'namespace' AND NOT attisdropped
54
+ ) THEN
55
+ DROP TABLE ${CREDENTIALS_TABLE};
56
+ END IF;
57
+ END $$; ` +
58
+ `CREATE TABLE IF NOT EXISTS ${CREDENTIALS_TABLE} (namespace text NOT NULL, name text NOT NULL, value text NOT NULL, ` +
59
+ "version text NOT NULL, set_by text NOT NULL, set_at timestamptz NOT NULL DEFAULT now(), PRIMARY KEY(namespace, name))",
28
60
  ],
29
61
  [
30
62
  "ledger",