@ketvietlab/ketjs 0.1.2 → 0.1.5

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 (307) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +8 -2
  3. package/dist/agent/capabilities.d.ts +1 -3
  4. package/dist/agent/capabilities.d.ts.map +1 -1
  5. package/dist/agent/capabilities.js +10 -1
  6. package/dist/agent/capabilities.js.map +1 -1
  7. package/dist/agent/permissions.d.ts +43 -1
  8. package/dist/agent/permissions.d.ts.map +1 -1
  9. package/dist/agent/permissions.js +50 -2
  10. package/dist/agent/permissions.js.map +1 -1
  11. package/dist/cli.js +246 -97
  12. package/dist/cli.js.map +1 -1
  13. package/dist/codegen/dts.d.ts.map +1 -1
  14. package/dist/codegen/dts.js +1 -0
  15. package/dist/codegen/dts.js.map +1 -1
  16. package/dist/data/changeset.d.ts +12 -0
  17. package/dist/data/changeset.d.ts.map +1 -1
  18. package/dist/data/changeset.js +73 -17
  19. package/dist/data/changeset.js.map +1 -1
  20. package/dist/data/expr.d.ts +25 -1
  21. package/dist/data/expr.d.ts.map +1 -1
  22. package/dist/data/expr.js +47 -6
  23. package/dist/data/expr.js.map +1 -1
  24. package/dist/data/fleet.d.ts +41 -1
  25. package/dist/data/fleet.d.ts.map +1 -1
  26. package/dist/data/fleet.js +100 -11
  27. package/dist/data/fleet.js.map +1 -1
  28. package/dist/data/migrate.d.ts +20 -0
  29. package/dist/data/migrate.d.ts.map +1 -1
  30. package/dist/data/migrate.js +86 -3
  31. package/dist/data/migrate.js.map +1 -1
  32. package/dist/data/physical.d.ts +5 -0
  33. package/dist/data/physical.d.ts.map +1 -0
  34. package/dist/data/physical.js +196 -0
  35. package/dist/data/physical.js.map +1 -0
  36. package/dist/data/pool.d.ts +2 -1
  37. package/dist/data/pool.d.ts.map +1 -1
  38. package/dist/data/pool.js +159 -31
  39. package/dist/data/pool.js.map +1 -1
  40. package/dist/data/query.d.ts +10 -1
  41. package/dist/data/query.d.ts.map +1 -1
  42. package/dist/data/query.js +136 -27
  43. package/dist/data/query.js.map +1 -1
  44. package/dist/data/sqlite.d.ts.map +1 -1
  45. package/dist/data/sqlite.js +350 -52
  46. package/dist/data/sqlite.js.map +1 -1
  47. package/dist/data/time.d.ts +13 -0
  48. package/dist/data/time.d.ts.map +1 -1
  49. package/dist/data/time.js +61 -17
  50. package/dist/data/time.js.map +1 -1
  51. package/dist/index.d.ts +45 -24
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +34 -18
  54. package/dist/index.js.map +1 -1
  55. package/dist/kernel/audit.d.ts +27 -0
  56. package/dist/kernel/audit.d.ts.map +1 -0
  57. package/dist/kernel/audit.js +67 -0
  58. package/dist/kernel/audit.js.map +1 -0
  59. package/dist/kernel/classification.d.ts +26 -0
  60. package/dist/kernel/classification.d.ts.map +1 -0
  61. package/dist/kernel/classification.js +73 -0
  62. package/dist/kernel/classification.js.map +1 -0
  63. package/dist/kernel/compose.d.ts +6 -2
  64. package/dist/kernel/compose.d.ts.map +1 -1
  65. package/dist/kernel/compose.js +269 -15
  66. package/dist/kernel/compose.js.map +1 -1
  67. package/dist/kernel/define.d.ts +2 -3
  68. package/dist/kernel/define.d.ts.map +1 -1
  69. package/dist/kernel/define.js +22 -12
  70. package/dist/kernel/define.js.map +1 -1
  71. package/dist/kernel/diff.d.ts.map +1 -1
  72. package/dist/kernel/diff.js +28 -4
  73. package/dist/kernel/diff.js.map +1 -1
  74. package/dist/kernel/graph.js +1 -1
  75. package/dist/kernel/graph.js.map +1 -1
  76. package/dist/kernel/i18n.d.ts +10 -1
  77. package/dist/kernel/i18n.d.ts.map +1 -1
  78. package/dist/kernel/i18n.js +34 -1
  79. package/dist/kernel/i18n.js.map +1 -1
  80. package/dist/kernel/layout.d.ts +97 -0
  81. package/dist/kernel/layout.d.ts.map +1 -1
  82. package/dist/kernel/layout.js +294 -12
  83. package/dist/kernel/layout.js.map +1 -1
  84. package/dist/kernel/menu.d.ts +33 -2
  85. package/dist/kernel/menu.d.ts.map +1 -1
  86. package/dist/kernel/menu.js +99 -7
  87. package/dist/kernel/menu.js.map +1 -1
  88. package/dist/kernel/modules.d.ts +3 -3
  89. package/dist/kernel/modules.d.ts.map +1 -1
  90. package/dist/kernel/modules.js +21 -21
  91. package/dist/kernel/modules.js.map +1 -1
  92. package/dist/kernel/permissions.d.ts +10 -0
  93. package/dist/kernel/permissions.d.ts.map +1 -0
  94. package/dist/kernel/permissions.js +365 -0
  95. package/dist/kernel/permissions.js.map +1 -0
  96. package/dist/kernel/schedule.d.ts +23 -0
  97. package/dist/kernel/schedule.d.ts.map +1 -0
  98. package/dist/kernel/schedule.js +83 -0
  99. package/dist/kernel/schedule.js.map +1 -0
  100. package/dist/kernel/types.d.ts.map +1 -1
  101. package/dist/kernel/types.js +5 -4
  102. package/dist/kernel/types.js.map +1 -1
  103. package/dist/kernel/workspace.d.ts +92 -14
  104. package/dist/kernel/workspace.d.ts.map +1 -1
  105. package/dist/kernel/workspace.js +128 -49
  106. package/dist/kernel/workspace.js.map +1 -1
  107. package/dist/pdf/assets/Inter-Bold.ttf +0 -0
  108. package/dist/pdf/assets/Inter-Regular.ttf +0 -0
  109. package/dist/pdf/assets/Inter-SemiBold.ttf +0 -0
  110. package/dist/pdf/assets/LICENSE.txt +92 -0
  111. package/dist/pdf/font.d.ts +10 -0
  112. package/dist/pdf/font.d.ts.map +1 -0
  113. package/dist/pdf/font.js +83 -0
  114. package/dist/pdf/font.js.map +1 -0
  115. package/dist/pdf/image.d.ts +8 -0
  116. package/dist/pdf/image.d.ts.map +1 -0
  117. package/dist/pdf/image.js +94 -0
  118. package/dist/pdf/image.js.map +1 -0
  119. package/dist/pdf/index.d.ts +15 -0
  120. package/dist/pdf/index.d.ts.map +1 -0
  121. package/dist/pdf/index.js +17 -0
  122. package/dist/pdf/index.js.map +1 -0
  123. package/dist/pdf/markup.d.ts +19 -0
  124. package/dist/pdf/markup.d.ts.map +1 -0
  125. package/dist/pdf/markup.js +146 -0
  126. package/dist/pdf/markup.js.map +1 -0
  127. package/dist/pdf/render.d.ts +14 -0
  128. package/dist/pdf/render.d.ts.map +1 -0
  129. package/dist/pdf/render.js +387 -0
  130. package/dist/pdf/render.js.map +1 -0
  131. package/dist/scaffold/index.js +6 -6
  132. package/dist/scaffold/index.js.map +1 -1
  133. package/dist/scaffold/templates/{app.test.ts.tmpl → deployment.test.ts.tmpl} +3 -3
  134. package/dist/scaffold/templates/ket.workspace.ts.tmpl +4 -6
  135. package/dist/scaffold/templates/module.ts.tmpl +1 -4
  136. package/dist/server/assets.d.ts +23 -0
  137. package/dist/server/assets.d.ts.map +1 -0
  138. package/dist/server/assets.js +97 -0
  139. package/dist/server/assets.js.map +1 -0
  140. package/dist/server/boot.d.ts +174 -38
  141. package/dist/server/boot.d.ts.map +1 -1
  142. package/dist/server/boot.js +399 -140
  143. package/dist/server/boot.js.map +1 -1
  144. package/dist/server/config.d.ts +30 -10
  145. package/dist/server/config.d.ts.map +1 -1
  146. package/dist/server/config.js +73 -17
  147. package/dist/server/config.js.map +1 -1
  148. package/dist/server/ctx.d.ts +10 -0
  149. package/dist/server/ctx.d.ts.map +1 -1
  150. package/dist/server/ctx.js +284 -48
  151. package/dist/server/ctx.js.map +1 -1
  152. package/dist/server/development.d.ts +10 -0
  153. package/dist/server/development.d.ts.map +1 -0
  154. package/dist/server/development.js +15 -0
  155. package/dist/server/development.js.map +1 -0
  156. package/dist/server/fn.d.ts +22 -3
  157. package/dist/server/fn.d.ts.map +1 -1
  158. package/dist/server/fn.js +116 -32
  159. package/dist/server/fn.js.map +1 -1
  160. package/dist/server/form.d.ts +33 -0
  161. package/dist/server/form.d.ts.map +1 -0
  162. package/dist/server/form.js +47 -0
  163. package/dist/server/form.js.map +1 -0
  164. package/dist/server/http.d.ts +82 -3
  165. package/dist/server/http.d.ts.map +1 -1
  166. package/dist/server/http.js +373 -37
  167. package/dist/server/http.js.map +1 -1
  168. package/dist/server/idem.d.ts +3 -2
  169. package/dist/server/idem.d.ts.map +1 -1
  170. package/dist/server/idem.js +12 -4
  171. package/dist/server/idem.js.map +1 -1
  172. package/dist/server/jobs.js +1 -1
  173. package/dist/server/jobs.js.map +1 -1
  174. package/dist/server/log/combinators.d.ts +42 -0
  175. package/dist/server/log/combinators.d.ts.map +1 -0
  176. package/dist/server/log/combinators.js +270 -0
  177. package/dist/server/log/combinators.js.map +1 -0
  178. package/dist/server/log/console.d.ts +12 -0
  179. package/dist/server/log/console.d.ts.map +1 -0
  180. package/dist/server/log/console.js +96 -0
  181. package/dist/server/log/console.js.map +1 -0
  182. package/dist/server/log/file.d.ts +11 -0
  183. package/dist/server/log/file.d.ts.map +1 -0
  184. package/dist/server/log/file.js +61 -0
  185. package/dist/server/log/file.js.map +1 -0
  186. package/dist/server/log/index.d.ts +23 -0
  187. package/dist/server/log/index.d.ts.map +1 -0
  188. package/dist/server/log/index.js +45 -0
  189. package/dist/server/log/index.js.map +1 -0
  190. package/dist/server/log/logger.d.ts +53 -0
  191. package/dist/server/log/logger.d.ts.map +1 -0
  192. package/dist/server/log/logger.js +94 -0
  193. package/dist/server/log/logger.js.map +1 -0
  194. package/dist/server/log/memory.d.ts +11 -0
  195. package/dist/server/log/memory.d.ts.map +1 -0
  196. package/dist/server/log/memory.js +25 -0
  197. package/dist/server/log/memory.js.map +1 -0
  198. package/dist/server/log/types.d.ts +112 -0
  199. package/dist/server/log/types.d.ts.map +1 -0
  200. package/dist/server/log/types.js +58 -0
  201. package/dist/server/log/types.js.map +1 -0
  202. package/dist/server/policy.d.ts +29 -0
  203. package/dist/server/policy.d.ts.map +1 -0
  204. package/dist/server/policy.js +29 -0
  205. package/dist/server/policy.js.map +1 -0
  206. package/dist/server/queue.d.ts +1 -1
  207. package/dist/server/queue.d.ts.map +1 -1
  208. package/dist/server/queue.js.map +1 -1
  209. package/dist/server/ratelimit.d.ts +48 -0
  210. package/dist/server/ratelimit.d.ts.map +1 -0
  211. package/dist/server/ratelimit.js +102 -0
  212. package/dist/server/ratelimit.js.map +1 -0
  213. package/dist/server/respond.d.ts.map +1 -1
  214. package/dist/server/respond.js +16 -1
  215. package/dist/server/respond.js.map +1 -1
  216. package/dist/server/runtime.d.ts +18 -3
  217. package/dist/server/runtime.d.ts.map +1 -1
  218. package/dist/server/runtime.js +32 -2
  219. package/dist/server/runtime.js.map +1 -1
  220. package/dist/server/schedule.d.ts +18 -0
  221. package/dist/server/schedule.d.ts.map +1 -0
  222. package/dist/server/schedule.js +70 -0
  223. package/dist/server/schedule.js.map +1 -0
  224. package/dist/server/sequence.d.ts +42 -0
  225. package/dist/server/sequence.d.ts.map +1 -0
  226. package/dist/server/sequence.js +97 -0
  227. package/dist/server/sequence.js.map +1 -0
  228. package/dist/server/session.d.ts +21 -0
  229. package/dist/server/session.d.ts.map +1 -1
  230. package/dist/server/session.js +84 -10
  231. package/dist/server/session.js.map +1 -1
  232. package/dist/server/sessionstore.d.ts +3 -1
  233. package/dist/server/sessionstore.d.ts.map +1 -1
  234. package/dist/server/sessionstore.js +7 -3
  235. package/dist/server/sessionstore.js.map +1 -1
  236. package/dist/server/storage/index.d.ts +1 -1
  237. package/dist/server/storage/index.d.ts.map +1 -1
  238. package/dist/server/storage/index.js +61 -1
  239. package/dist/server/storage/index.js.map +1 -1
  240. package/dist/server/storage/types.d.ts +8 -0
  241. package/dist/server/storage/types.d.ts.map +1 -1
  242. package/dist/server/storage/types.js +58 -0
  243. package/dist/server/storage/types.js.map +1 -1
  244. package/dist/server/stream.d.ts +8 -2
  245. package/dist/server/stream.d.ts.map +1 -1
  246. package/dist/server/stream.js +44 -4
  247. package/dist/server/stream.js.map +1 -1
  248. package/dist/server/streamstore.d.ts +10 -0
  249. package/dist/server/streamstore.d.ts.map +1 -1
  250. package/dist/server/streamstore.js +72 -6
  251. package/dist/server/streamstore.js.map +1 -1
  252. package/dist/server/tenants.d.ts +20 -18
  253. package/dist/server/tenants.d.ts.map +1 -1
  254. package/dist/server/tenants.js +133 -84
  255. package/dist/server/tenants.js.map +1 -1
  256. package/dist/server/transport/types.js +2 -2
  257. package/dist/server/transport/types.js.map +1 -1
  258. package/dist/server/worker.d.ts +19 -3
  259. package/dist/server/worker.d.ts.map +1 -1
  260. package/dist/server/worker.js +168 -21
  261. package/dist/server/worker.js.map +1 -1
  262. package/dist/testing.d.ts +26 -10
  263. package/dist/testing.d.ts.map +1 -1
  264. package/dist/testing.js +41 -14
  265. package/dist/testing.js.map +1 -1
  266. package/dist/theme/contracts.d.ts +14 -1
  267. package/dist/theme/contracts.d.ts.map +1 -1
  268. package/dist/theme/contracts.js +35 -6
  269. package/dist/theme/contracts.js.map +1 -1
  270. package/dist/theme/index.d.ts +1 -1
  271. package/dist/theme/index.d.ts.map +1 -1
  272. package/dist/theme/index.js +1 -1
  273. package/dist/theme/index.js.map +1 -1
  274. package/dist/theme/joint-runtime.d.ts +33 -0
  275. package/dist/theme/joint-runtime.d.ts.map +1 -0
  276. package/dist/theme/joint-runtime.js +121 -0
  277. package/dist/theme/joint-runtime.js.map +1 -0
  278. package/dist/theme/joints.d.ts.map +1 -1
  279. package/dist/theme/joints.js +15 -97
  280. package/dist/theme/joints.js.map +1 -1
  281. package/dist/theme/ktl/compile.d.ts +4 -0
  282. package/dist/theme/ktl/compile.d.ts.map +1 -1
  283. package/dist/theme/ktl/compile.js +54 -1
  284. package/dist/theme/ktl/compile.js.map +1 -1
  285. package/dist/theme/ktl/parser.d.ts +4 -0
  286. package/dist/theme/ktl/parser.d.ts.map +1 -1
  287. package/dist/theme/ktl/parser.js +8 -0
  288. package/dist/theme/ktl/parser.js.map +1 -1
  289. package/dist/theme/render.d.ts +8 -0
  290. package/dist/theme/render.d.ts.map +1 -1
  291. package/dist/theme/render.js +88 -118
  292. package/dist/theme/render.js.map +1 -1
  293. package/dist/theme/tokens.d.ts +18 -0
  294. package/dist/theme/tokens.d.ts.map +1 -1
  295. package/dist/theme/tokens.js +33 -0
  296. package/dist/theme/tokens.js.map +1 -1
  297. package/dist/theme/viewmodel.d.ts +24 -0
  298. package/dist/theme/viewmodel.d.ts.map +1 -1
  299. package/dist/theme/viewmodel.js +75 -6
  300. package/dist/theme/viewmodel.js.map +1 -1
  301. package/dist/types.d.ts +320 -56
  302. package/dist/types.d.ts.map +1 -1
  303. package/package.json +6 -2
  304. package/dist/kernel/apps.d.ts +0 -43
  305. package/dist/kernel/apps.d.ts.map +0 -1
  306. package/dist/kernel/apps.js +0 -234
  307. package/dist/kernel/apps.js.map +0 -1
@@ -0,0 +1,97 @@
1
+ // Document numbers.
2
+ //
3
+ // Every ERP needs them and every module was writing its own: a counter row, a
4
+ // read, a compare-and-set, a retry loop. Written twice already, correctly both
5
+ // times but not identically — one of the two retries thirty-two times with no
6
+ // backoff, which spins hottest exactly when the counter is contended. That is the
7
+ // shape of a primitive that should exist once.
8
+ //
9
+ // The framework returns a number and never a string. How a number becomes
10
+ // "S00001" or "POS/00042" is the domain's, and a framework that decided it would
11
+ // be deciding an invoice format for a tax authority it has never heard of.
12
+ import { KetError } from '../kernel/errors.js';
13
+ const DDL = `
14
+ CREATE TABLE IF NOT EXISTS ket_sequence (
15
+ id TEXT PRIMARY KEY,
16
+ next INTEGER NOT NULL
17
+ )`;
18
+ const prepared = new WeakSet();
19
+ async function prepare(adapter) {
20
+ if (prepared.has(adapter))
21
+ return;
22
+ await adapter.run(DDL, []);
23
+ prepared.add(adapter);
24
+ }
25
+ const NAME = /^[a-z][a-z0-9_]*(?:\.[a-z][a-z0-9_]*)*$/;
26
+ export const sequenceKey = (name, scope, shared) => shared ? `-\n${name}` : `${scope.company ?? '-'}\n${name}`;
27
+ /**
28
+ * Take the next number in a named sequence.
29
+ *
30
+ * The read and the compare-and-set are retried with jittered backoff, because
31
+ * every document of one kind funnels through one row: a bulk import is a stampede
32
+ * by design, and losing the race there is normal rather than exceptional. What must
33
+ * not happen is giving up while the row is live, which would turn a perfectly good
34
+ * order into a spurious failure.
35
+ *
36
+ * Whether the numbers are gapless is decided by the caller, not here. Taken inside
37
+ * the transaction that writes the document, a rollback takes the number back with
38
+ * it. Taken outside, a later failure leaves a gap, and no counter can know that
39
+ * happened.
40
+ */
41
+ export async function nextSequenceNumber(adapter, name, o) {
42
+ if (!NAME.test(name)) {
43
+ throw new KetError({
44
+ code: 'E_SEQUENCE_NAME',
45
+ message: `"${name}" is not a sequence name`,
46
+ hint: 'use a qualified lowercase identifier, for example "sale.order"',
47
+ });
48
+ }
49
+ const start = Math.max(1, Math.floor(o.start ?? 1));
50
+ const id = sequenceKey(name, o.scope, o.shared === true);
51
+ await prepare(adapter);
52
+ const pg = adapter.name === 'postgres';
53
+ const p = (n) => (pg ? `$${n}` : '?');
54
+ const random = o.random ?? Math.random;
55
+ const read = async () => {
56
+ const rows = await adapter.all(`SELECT next FROM ket_sequence WHERE id = ${p(1)}`, [id]);
57
+ return rows[0] === undefined ? null : Number(rows[0].next);
58
+ };
59
+ // A preview must not consume a number: the real command that follows would then
60
+ // skip one, and the caller would have been shown a number nobody ever used.
61
+ if (o.dryRun)
62
+ return (await read()) ?? start;
63
+ for (let attempt = 0; attempt < 64; attempt += 1) {
64
+ const current = await read();
65
+ if (current === null) {
66
+ const inserted = await adapter.run(`INSERT INTO ket_sequence (id, next) VALUES (${p(1)}, ${p(2)}) ON CONFLICT DO NOTHING`, [id, start + 1]);
67
+ if (inserted.changes > 0)
68
+ return start;
69
+ continue;
70
+ }
71
+ const moved = await adapter.run(`UPDATE ket_sequence SET next = ${p(1)} WHERE id = ${p(2)} AND next = ${p(3)}`, [current + 1, id, current]);
72
+ if (moved.changes > 0)
73
+ return current;
74
+ // Spread the herd instead of letting it collide again at full speed.
75
+ if (attempt >= 2) {
76
+ const ceiling = Math.min(100, 2 ** (attempt - 2));
77
+ await new Promise((resolve) => setTimeout(resolve, ceiling * (0.5 + random())));
78
+ }
79
+ }
80
+ throw new KetError({
81
+ code: 'E_SEQUENCE_CONTENDED',
82
+ message: `sequence "${name}" did not settle after 64 concurrent updates`,
83
+ hint: 'one row is carrying more concurrent allocation than it can; split the sequence',
84
+ });
85
+ }
86
+ /** What a sequence stands at, without taking a number. */
87
+ export async function peekSequenceNumber(adapter, name, o) {
88
+ await prepare(adapter);
89
+ const pg = adapter.name === 'postgres';
90
+ const rows = await adapter.all(`SELECT next FROM ket_sequence WHERE id = ${pg ? '$1' : '?'}`, [
91
+ sequenceKey(name, o.scope, o.shared === true),
92
+ ]);
93
+ return rows[0] === undefined
94
+ ? Math.max(1, Math.floor(o.start ?? 1))
95
+ : Number(rows[0].next);
96
+ }
97
+ //# sourceMappingURL=sequence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequence.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/server/sequence.ts"],"names":[],"mappings":"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"}
@@ -4,12 +4,16 @@ import type { IncomingMessage } from 'node:http';
4
4
  export declare const SESSION_COOKIE = "ket_session";
5
5
  export type SessionOptions = {
6
6
  store?: SessionStore;
7
+ /** Bind records to one tenant when several tenants share the same store. */
8
+ tenant?: string;
7
9
  /**
8
10
  * Signing key. It MUST be the same on every pod: a cookie signed by one and
9
11
  * rejected by another is a login that works only until the load balancer sends
10
12
  * you elsewhere. Absent, one is generated and the fact is said out loud.
11
13
  */
12
14
  secret?: string;
15
+ /** The supplied secret was generated for this process and must still be reported as ephemeral. */
16
+ ephemeralSecret?: boolean;
13
17
  /** How long an idle session lives. Refreshed while it is being used. */
14
18
  idleTtlMs?: number;
15
19
  /** How long any session may live, however active. Not refreshable. */
@@ -24,6 +28,8 @@ export type SessionOptions = {
24
28
  export declare function parseCookies(header: string | undefined): Record<string, string>;
25
29
  export type Sessions = {
26
30
  readonly store: SessionStore;
31
+ /** Present when records in this session manager are bound to one tenant. */
32
+ readonly tenant?: string;
27
33
  /** True when the secret was generated rather than configured — see the banner. */
28
34
  readonly ephemeralSecret: boolean;
29
35
  start(o: {
@@ -49,6 +55,21 @@ export type Sessions = {
49
55
  scopeOf(record: SessionRecord | null): Scope | null;
50
56
  sweep(): Promise<number>;
51
57
  };
58
+ export type SessionScopePolicy = {
59
+ /** Reject a record issued for a different tenant when session storage is shared. */
60
+ tenant?: string;
61
+ /** Scope used when there is no accepted session record. */
62
+ anonymous?: Scope | null;
63
+ };
64
+ /**
65
+ * Turn session data into a detached request scope.
66
+ *
67
+ * This stays adapter-free so a pooled tenant facade can keep the policy while the
68
+ * manager and its adapter are evicted. Arrays are copied on both paths: callers
69
+ * may narrow a request scope without mutating the stored record or deployment's
70
+ * anonymous policy.
71
+ */
72
+ export declare function scopeForSession(record: SessionRecord | null, policy?: SessionScopePolicy): Scope | null;
52
73
  export declare function createSessions(o?: SessionOptions): Promise<Sessions>;
53
74
  export { memorySessionStore, dbSessionStore } from './sessionstore.ts';
54
75
  export type { SessionContext, SessionStore, SessionRecord } from './sessionstore.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/server/session.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACpF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAEhD,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAE3C,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,kFAAkF;IAClF,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,sFAAsF;IACtF,SAAS,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;IACxB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB,CAAA;AAoBD,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQ/E;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;IAC5B,kFAAkF;IAClF,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;IACjC,KAAK,CAAC,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,MAAM,EAAE,CAAA;QACnB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAA;KACzB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,aAAa,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACtD,qEAAqE;IACrE,EAAE,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;IACvD,GAAG,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACxC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9D,sEAAsE;IACtE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;IACrF,0CAA0C;IAC1C,WAAW,IAAI,MAAM,CAAA;IACrB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAA;IACnD,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CACzB,CAAA;AAED,wBAAsB,cAAc,CAAC,CAAC,GAAE,cAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CA6I9E;AAED,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACtE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/server/session.ts"],"names":[],"mappings":"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"}
@@ -35,11 +35,87 @@ export function parseCookies(header) {
35
35
  }
36
36
  return out;
37
37
  }
38
+ /**
39
+ * Turn session data into a detached request scope.
40
+ *
41
+ * This stays adapter-free so a pooled tenant facade can keep the policy while the
42
+ * manager and its adapter are evicted. Arrays are copied on both paths: callers
43
+ * may narrow a request scope without mutating the stored record or deployment's
44
+ * anonymous policy.
45
+ */
46
+ export function scopeForSession(record, policy = {}) {
47
+ const accepted = record !== null && (policy.tenant === undefined || (record.tenant ?? null) === policy.tenant);
48
+ const scope = accepted
49
+ ? {
50
+ company: record.company,
51
+ companies: record.companies,
52
+ branch: record.branch,
53
+ branches: record.branches,
54
+ }
55
+ : (policy.anonymous ?? null);
56
+ if (!scope)
57
+ return null;
58
+ return {
59
+ company: scope.company,
60
+ ...(scope.companies === undefined
61
+ ? {}
62
+ : { companies: scope.companies === null ? null : [...scope.companies] }),
63
+ ...(scope.branch === undefined ? {} : { branch: scope.branch }),
64
+ ...(scope.branches === undefined
65
+ ? {}
66
+ : { branches: scope.branches === null ? null : [...scope.branches] }),
67
+ };
68
+ }
38
69
  export async function createSessions(o = {}) {
39
70
  const now = o.now ?? (() => Date.now());
40
- const store = o.store ?? memorySessionStore({ now });
71
+ const backingStore = o.store ?? memorySessionStore({ now });
72
+ const belongs = (record) => record !== null && (record.tenant ?? null) === o.tenant;
73
+ // A shared store is still exposed through Sessions.store for administrative
74
+ // flows. Scope the store itself, not only cookie reads, so logout/reconciliation
75
+ // in one tenant cannot revoke or mutate another tenant's record.
76
+ const store = o.tenant === undefined
77
+ ? backingStore
78
+ : {
79
+ name: backingStore.name,
80
+ init: () => backingStore.init(),
81
+ create: (record) => backingStore.create({ ...record, tenant: o.tenant }),
82
+ async read(id) {
83
+ const record = await backingStore.read(id);
84
+ return belongs(record) ? record : null;
85
+ },
86
+ async touch(id, expiresAt) {
87
+ if (!belongs(await backingStore.read(id)))
88
+ return null;
89
+ return backingStore.touch(id, expiresAt);
90
+ },
91
+ async updateContext(id, expectedRevision, context) {
92
+ if (!belongs(await backingStore.read(id)))
93
+ return null;
94
+ return backingStore.updateContext(id, expectedRevision, context);
95
+ },
96
+ async destroy(id) {
97
+ if (belongs(await backingStore.read(id)))
98
+ await backingStore.destroy(id);
99
+ },
100
+ async listUser(userId) {
101
+ return (await backingStore.listUser(userId)).filter(belongs);
102
+ },
103
+ async destroyUser(userId) {
104
+ const records = (await backingStore.listUser(userId)).filter(belongs);
105
+ for (const record of records)
106
+ await backingStore.destroy(record.id);
107
+ return records.length;
108
+ },
109
+ async destroyUserExcept(userId, keepId) {
110
+ const records = (await backingStore.listUser(userId)).filter((record) => belongs(record) && record.id !== keepId);
111
+ for (const record of records)
112
+ await backingStore.destroy(record.id);
113
+ return records.length;
114
+ },
115
+ sweep: (at) => backingStore.sweep(at),
116
+ };
41
117
  await store.init();
42
- const ephemeralSecret = !o.secret;
118
+ const ephemeralSecret = o.ephemeralSecret ?? !o.secret;
43
119
  const secret = o.secret ?? randomBytes(32).toString('base64url');
44
120
  const idleTtl = o.idleTtlMs ?? DEFAULTS.idleTtlMs;
45
121
  const absoluteTtl = o.absoluteTtlMs ?? DEFAULTS.absoluteTtlMs;
@@ -59,6 +135,7 @@ export async function createSessions(o = {}) {
59
135
  };
60
136
  return {
61
137
  store,
138
+ ...(o.tenant === undefined ? {} : { tenant: o.tenant }),
62
139
  ephemeralSecret,
63
140
  async start({ userId, companies, company, branch, branches, securityVersion }) {
64
141
  if (!companies.length) {
@@ -88,6 +165,7 @@ export async function createSessions(o = {}) {
88
165
  const at = now();
89
166
  const record = {
90
167
  id: randomBytes(32).toString('base64url'),
168
+ tenant: o.tenant ?? null,
91
169
  userId,
92
170
  companies: [...companies],
93
171
  company: active,
@@ -154,14 +232,10 @@ export async function createSessions(o = {}) {
154
232
  return cookie('', 0);
155
233
  },
156
234
  scopeOf(record) {
157
- if (!record)
158
- return o.anonymous ?? null;
159
- return {
160
- company: record.company,
161
- companies: record.companies,
162
- branch: record.branch,
163
- branches: record.branches,
164
- };
235
+ return scopeForSession(record, {
236
+ ...(o.tenant === undefined ? {} : { tenant: o.tenant }),
237
+ ...(o.anonymous === undefined ? {} : { anonymous: o.anonymous }),
238
+ });
165
239
  },
166
240
  sweep() {
167
241
  return store.sweep(now());
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/server/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/server/session.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@ import type { Adapter } from '../types.ts';
2
2
  /** What a session carries. Everything a request needs to know who it is. */
3
3
  export type SessionRecord = {
4
4
  id: string;
5
+ /** Tenant binding for a shared session store. Null/absent means unbound. */
6
+ tenant?: string | null;
5
7
  userId: string;
6
8
  /** Companies this session may read — becomes scope.companies (D32). */
7
9
  companies: string[];
@@ -42,7 +44,7 @@ export declare function memorySessionStore(o?: {
42
44
  now?: () => number;
43
45
  }): SessionStore;
44
46
  /**
45
- * One row per session, in whatever database the app already has.
47
+ * One row per session, in whatever database the deployment already has.
46
48
  *
47
49
  * This is the store that makes several pods work at all, and it needs no extra
48
50
  * infrastructure to do it — which is the point. Reach for Redis when the read
@@ -1 +1 @@
1
- {"version":3,"file":"sessionstore.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/server/sessionstore.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,4EAA4E;AAC5E,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,uEAAuE;IACvE,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,2EAA2E;IAC3E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IACzB,sEAAsE;IACtE,eAAe,EAAE,MAAM,CAAA;IACvB,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACrB,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5C,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;IAC/C,qFAAqF;IACrF,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAC5D,oFAAoF;IACpF,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;IAC3G,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;IAClD,kFAAkF;IAClF,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5C,8EAA8E;IAC9E,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAClE,qDAAqD;IACrD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,aAAa,EACb,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,iBAAiB,CACpE,CAAA;AAID,wBAAgB,kBAAkB,CAAC,CAAC,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAO,GAAG,YAAY,CA4E/E;AAmBD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAO,GAAG,YAAY,CAyI7F"}
1
+ {"version":3,"file":"sessionstore.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/server/sessionstore.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,4EAA4E;AAC5E,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,uEAAuE;IACvE,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,2EAA2E;IAC3E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IACzB,sEAAsE;IACtE,eAAe,EAAE,MAAM,CAAA;IACvB,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACrB,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5C,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;IAC/C,qFAAqF;IACrF,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAC5D,oFAAoF;IACpF,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;IAC3G,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;IAClD,kFAAkF;IAClF,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5C,8EAA8E;IAC9E,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAClE,qDAAqD;IACrD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,aAAa,EACb,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,iBAAiB,CACpE,CAAA;AAID,wBAAgB,kBAAkB,CAAC,CAAC,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAO,GAAG,YAAY,CA4E/E;AAoBD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAO,GAAG,YAAY,CA4I7F"}
@@ -94,6 +94,7 @@ export function memorySessionStore(o = {}) {
94
94
  const DDL = `
95
95
  CREATE TABLE IF NOT EXISTS ket_session (
96
96
  id TEXT PRIMARY KEY,
97
+ tenant TEXT,
97
98
  user_id TEXT NOT NULL,
98
99
  companies TEXT NOT NULL,
99
100
  company TEXT,
@@ -108,7 +109,7 @@ CREATE INDEX IF NOT EXISTS ket_session_user ON ket_session (user_id);
108
109
  CREATE INDEX IF NOT EXISTS ket_session_expiry ON ket_session (expires_at);
109
110
  `;
110
111
  /**
111
- * One row per session, in whatever database the app already has.
112
+ * One row per session, in whatever database the deployment already has.
112
113
  *
113
114
  * This is the store that makes several pods work at all, and it needs no extra
114
115
  * infrastructure to do it — which is the point. Reach for Redis when the read
@@ -122,6 +123,7 @@ export function dbSessionStore(adapter, o = {}) {
122
123
  const p = (n) => (pg ? `$${n}` : '?');
123
124
  const decode = (row) => ({
124
125
  id: String(row.id),
126
+ tenant: row.tenant === null || row.tenant === undefined ? null : String(row.tenant),
125
127
  userId: String(row.user_id),
126
128
  companies: JSON.parse(String(row.companies)),
127
129
  company: row.company === null || row.company === undefined ? null : String(row.company),
@@ -140,6 +142,7 @@ export function dbSessionStore(adapter, o = {}) {
140
142
  await adapter.exec(DDL);
141
143
  const columns = (await adapter.introspect()).ket_session ?? {};
142
144
  for (const [name, sql] of [
145
+ ['tenant', 'TEXT'],
143
146
  ['branch', 'TEXT'],
144
147
  ['security_version', 'INTEGER NOT NULL DEFAULT 0'],
145
148
  ['revision', 'INTEGER NOT NULL DEFAULT 0'],
@@ -151,9 +154,10 @@ export function dbSessionStore(adapter, o = {}) {
151
154
  },
152
155
  async create(r) {
153
156
  await adapter.run(`INSERT INTO ket_session
154
- (id, user_id, companies, company, branch, branches, security_version, revision, created_at, expires_at)
155
- VALUES (${p(1)}, ${p(2)}, ${p(3)}, ${p(4)}, ${p(5)}, ${p(6)}, ${p(7)}, ${p(8)}, ${p(9)}, ${p(10)})`, [
157
+ (id, tenant, user_id, companies, company, branch, branches, security_version, revision, created_at, expires_at)
158
+ VALUES (${p(1)}, ${p(2)}, ${p(3)}, ${p(4)}, ${p(5)}, ${p(6)}, ${p(7)}, ${p(8)}, ${p(9)}, ${p(10)}, ${p(11)})`, [
156
159
  r.id,
160
+ r.tenant ?? null,
157
161
  r.userId,
158
162
  JSON.stringify(r.companies),
159
163
  r.company,
@@ -1 +1 @@
1
- {"version":3,"file":"sessionstore.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/server/sessionstore.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,+EAA+E;AAC/E,kFAAkF;AAClF,sCAAsC;AACtC,EAAE;AACF,iFAAiF;AACjF,gFAAgF;AAChF,iFAAiF;AACjF,kCAAkC;AAiDlC,MAAM,KAAK,GAAG,CAAC,CAAgB,EAAE,GAAW,EAAW,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,CAAA;AAE3E,MAAM,UAAU,kBAAkB,CAAC,CAAC,GAA2B,EAAE;IAC/D,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAyB,CAAA;IAC7C,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,CAAC,IAAI,KAAI,CAAC;QACf,KAAK,CAAC,MAAM,CAAC,CAAC;YACZ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;QAC1B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE;YACX,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACtB,IAAI,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAA;YACnB,wEAAwE;YACxE,6DAA6D;YAC7D,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;gBACf,OAAO,IAAI,CAAA;YACb,CAAC;YACD,OAAO,EAAE,GAAG,CAAC,EAAE,CAAA;QACjB,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS;YACvB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACtB,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;gBAAE,OAAO,IAAI,CAAA;YACvC,CAAC,CAAC,SAAS,GAAG,SAAS,CAAA;YACvB,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO;YAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACtB,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,gBAAgB;gBAAE,OAAO,IAAI,CAAA;YAC1E,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAA;YAC3D,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;YAClB,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACzG,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACjB,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,MAAM;YACnB,MAAM,GAAG,GAAoB,EAAE,CAAA;YAC/B,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC3B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;oBACrB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;oBACf,SAAQ;gBACV,CAAC;gBACD,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;oBACrB,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YAClG,CAAC;YACD,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAA;QACtD,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,MAAM;YACtB,IAAI,CAAC,GAAG,CAAC,CAAA;YACT,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI;gBACxB,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBACxB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;oBACf,CAAC,EAAE,CAAA;gBACL,CAAC;YACH,OAAO,CAAC,CAAA;QACV,CAAC;QACD,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM;YACpC,IAAI,CAAC,GAAG,CAAC,CAAA;YACT,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI;gBACxB,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;oBACzC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;oBACf,CAAC,EAAE,CAAA;gBACL,CAAC;YACH,OAAO,CAAC,CAAA;QACV,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,CAAA;YACT,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI;gBACxB,IAAI,CAAC,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;oBACtB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;oBACf,CAAC,EAAE,CAAA;gBACL,CAAC;YACH,OAAO,CAAC,CAAA;QACV,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;CAeX,CAAA;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB,EAAE,CAAC,GAA2B,EAAE;IAC7E,6EAA6E;IAC7E,0EAA0E;IAC1E,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IACvC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,KAAK,UAAU,CAAA;IACtC,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAC7C,MAAM,MAAM,GAAG,CAAC,GAA4B,EAAiB,EAAE,CAAC,CAAC;QAC/D,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QAC3B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAa;QACxD,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QACvF,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QACnF,QAAQ,EACN,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS;YACjD,CAAC,CAAC,IAAI;YACN,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAc;QACpD,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,CAAC;QAClD,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;QACnC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;QACjC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;KAClC,CAAC,CAAA;IAEF,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,CAAC,IAAI;YACR,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACvB,MAAM,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE,CAAA;YAC9D,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACxB,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAClB,CAAC,kBAAkB,EAAE,4BAA4B,CAAC;gBAClD,CAAC,UAAU,EAAE,4BAA4B,CAAC;aAClC;gBACR,IAAI,EAAE;oBAAE,MAAM,OAAO,CAAC,IAAI,CAAC,oDAAoD,IAAI,IAAI,GAAG,EAAE,CAAC,CAAA;qBACxF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;oBAAE,MAAM,OAAO,CAAC,IAAI,CAAC,sCAAsC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAA;QACpG,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,CAAC;YACZ,MAAM,OAAO,CAAC,GAAG,CACf;;mBAEW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EACpG;gBACE,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,MAAM;gBACR,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC3B,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC9C,CAAC,CAAC,eAAe;gBACjB,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,SAAS;aACZ,CACF,CAAA;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE;YACX,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YACpF,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAA;YAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAA4B,CAAC,CAAA;YACpD,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,EAAE,EAAE,CAAC;gBACzB,MAAM,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;gBACrE,OAAO,IAAI,CAAA;YACb,CAAC;YACD,OAAO,CAAC,CAAA;QACV,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS;YACvB,6EAA6E;YAC7E,4DAA4D;YAC5D,MAAM,GAAG,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAC5B,uCAAuC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,EACzF,CAAC,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CACvB,CAAyB,CAAA;YAC1B,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA;QACvC,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO;YAC/C,MAAM,GAAG,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAC5B;yBACiB,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;gCACtD,CAAC,CAAC,CAAC,CAAC;sBACd,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,EACpE;gBACE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;gBACjC,OAAO,CAAC,OAAO;gBACf,OAAO,CAAC,MAAM;gBACd,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC1D,OAAO,CAAC,eAAe;gBACvB,EAAE;gBACF,gBAAgB;gBAChB,GAAG,EAAE;aACN,CACF,CAAyB,CAAA;YAC1B,IAAI,CAAC,GAAG,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAA;YAC7B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YACpF,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAA4B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACxE,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,EAAE;YACd,MAAM,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACvE,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,MAAM;YACnB,MAAM,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7F,MAAM;gBACN,GAAG,EAAE;aACN,CAAC,CAAA;YACF,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5B,6CAA6C,CAAC,CAAC,CAAC,CAAC,2BAA2B,EAC5E,CAAC,MAAM,CAAC,CACT,CAAA;YACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAA8B,CAAC,CAAC,CAAA;QAClE,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,MAAM;YACtB,MAAM,GAAG,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAE1F,CAAA;YACD,OAAO,GAAG,CAAC,OAAO,IAAI,CAAC,CAAA;QACzB,CAAC;QAED,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM;YACpC,MAAM,GAAG,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;gBAClG,MAAM;gBACN,MAAM;aACP,CAAC,CAAyB,CAAA;YAC3B,OAAO,GAAG,CAAC,OAAO,IAAI,CAAC,CAAA;QACzB,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,EAAE;YACZ,MAAM,GAAG,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAE1F,CAAA;YACD,OAAO,GAAG,CAAC,OAAO,IAAI,CAAC,CAAA;QACzB,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"sessionstore.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/server/sessionstore.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import type { Storage } from './types.ts';
3
3
  export declare function storageFromConfig(config: RuntimeConfig): Storage;
4
4
  export { localStorage } from './local.ts';
5
5
  export { s3Storage } from './s3.ts';
6
- export { namespacedStorage, effectStorage } from './types.ts';
6
+ export { namespacedStorage, effectStorage, withPublicStorage } from './types.ts';
7
7
  export type { Storage, Stored, OpenStorage, StorageEffect } from './types.ts';
8
8
  export type { S3StorageOptions } from './s3.ts';
9
9
  export { signRequest, presignUrl, sha256 } from './sigv4.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/server/storage/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAqBhE;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC7D,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC7E,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC5D,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/server/storage/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAGzC,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CA0DhE;AAyBD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAChF,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC7E,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC5D,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA"}
@@ -1,7 +1,67 @@
1
+ import { resolve, sep } from 'node:path';
1
2
  import { KetError } from '../../kernel/errors.js';
2
3
  import { localStorage } from './local.js';
3
4
  import { s3Storage } from './s3.js';
5
+ import { withPublicStorage } from './types.js';
4
6
  export function storageFromConfig(config) {
7
+ const privateStorage = privateFromConfig(config);
8
+ const publicConfig = config.publicStorage;
9
+ if (!publicConfig)
10
+ return privateStorage;
11
+ let publicStorage;
12
+ if (publicConfig.kind === 'local') {
13
+ if (!publicConfig.dir)
14
+ throw new KetError({
15
+ code: 'E_STORAGE_CONFIG',
16
+ message: 'public storage is missing KET_STORAGE_PUBLIC_DIR',
17
+ });
18
+ if (config.storageKind === 'local') {
19
+ const a = resolve(config.storageDir);
20
+ const b = resolve(publicConfig.dir);
21
+ const beneath = (parent, child) => child.startsWith(parent.endsWith(sep) ? parent : parent + sep);
22
+ if (a === b || beneath(a, b) || beneath(b, a))
23
+ throw new KetError({
24
+ code: 'E_STORAGE_CONFIG',
25
+ message: 'private and public storage directories must not overlap',
26
+ });
27
+ }
28
+ publicStorage = localStorage({ dir: publicConfig.dir });
29
+ }
30
+ else {
31
+ const endpoint = publicConfig.endpoint ?? config.s3Endpoint;
32
+ const missing = [
33
+ ['KET_S3_PUBLIC_ENDPOINT', endpoint],
34
+ ['KET_S3_PUBLIC_BUCKET', publicConfig.bucket],
35
+ ['KET_S3_PUBLIC_KEY', publicConfig.accessKeyId],
36
+ ['KET_S3_PUBLIC_SECRET', publicConfig.secretAccessKey],
37
+ ].filter(([, value]) => !value);
38
+ if (missing.length)
39
+ throw new KetError({
40
+ code: 'E_STORAGE_CONFIG',
41
+ message: `public S3 storage is missing ${missing.map(([name]) => name).join(', ')}`,
42
+ });
43
+ // The S3 adapter replaces the URL path when addressing objects, so paths,
44
+ // fragments and query strings cannot make two buckets distinct.
45
+ const endpointId = (value) => new URL(value).origin;
46
+ if (config.storageKind === 's3' &&
47
+ publicConfig.bucket === config.s3Bucket &&
48
+ endpointId(endpoint) === endpointId(config.s3Endpoint))
49
+ throw new KetError({
50
+ code: 'E_STORAGE_CONFIG',
51
+ message: 'private and public S3 buckets must be distinct',
52
+ });
53
+ publicStorage = s3Storage({
54
+ endpoint: endpoint,
55
+ bucket: publicConfig.bucket,
56
+ accessKeyId: publicConfig.accessKeyId,
57
+ secretAccessKey: publicConfig.secretAccessKey,
58
+ region: publicConfig.region ?? config.s3Region,
59
+ pathStyle: publicConfig.pathStyle ?? config.s3PathStyle,
60
+ });
61
+ }
62
+ return withPublicStorage(privateStorage, publicStorage, { baseUrl: publicConfig.baseUrl });
63
+ }
64
+ function privateFromConfig(config) {
5
65
  if (config.storageKind === 'local')
6
66
  return localStorage({ dir: config.storageDir });
7
67
  const missing = [
@@ -26,6 +86,6 @@ export function storageFromConfig(config) {
26
86
  }
27
87
  export { localStorage } from './local.js';
28
88
  export { s3Storage } from './s3.js';
29
- export { namespacedStorage, effectStorage } from './types.js';
89
+ export { namespacedStorage, effectStorage, withPublicStorage } from './types.js';
30
90
  export { signRequest, presignUrl, sha256 } from './sigv4.js';
31
91
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/ketjs/src/server/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGnC,MAAM,UAAU,iBAAiB,CAAC,MAAqB;IACrD,IAAI,MAAM,CAAC,WAAW,KAAK,OAAO;QAAE,OAAO,YAAY,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;IACnF,MAAM,OAAO,GAAG;QACd,CAAC,iBAAiB,EAAE,MAAM,CAAC,UAAU,CAAC;QACtC,CAAC,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC;QAClC,CAAC,YAAY,EAAE,MAAM,CAAC,aAAa,CAAC;QACpC,CAAC,eAAe,EAAE,MAAM,CAAC,iBAAiB,CAAC;KAC5C,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;IAC/B,IAAI,OAAO,CAAC,MAAM;QAChB,MAAM,IAAI,QAAQ,CAAC;YACjB,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,yBAAyB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC7E,CAAC,CAAA;IACJ,OAAO,SAAS,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC,UAAoB;QACrC,MAAM,EAAE,MAAM,CAAC,QAAQ;QACvB,MAAM,EAAE,MAAM,CAAC,QAAkB;QACjC,WAAW,EAAE,MAAM,CAAC,aAAuB;QAC3C,eAAe,EAAE,MAAM,CAAC,iBAA2B;QACnD,SAAS,EAAE,MAAM,CAAC,WAAW;KAC9B,CAAC,CAAA;AACJ,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAG7D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/ketjs/src/server/storage/index.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,10 @@ export type Stored = {
7
7
  };
8
8
  export type Storage = {
9
9
  name: string;
10
+ /** Optional publication backend. Root operations always remain private/default. */
11
+ public?: Storage;
12
+ /** Only a deliberately public backend may expose an unsigned delivery URL. */
13
+ publicUrl?: (key: string) => string;
10
14
  put(key: string, body: AsyncIterable<Uint8Array>, options: {
11
15
  type: string;
12
16
  size?: number;
@@ -34,4 +38,8 @@ export type StorageEffect = 'storage:read' | 'storage:write' | 'storage:remove';
34
38
  export declare function effectStorage(storage: Storage, effects: readonly string[], operation: string): Storage;
35
39
  export declare const storageKey: (key: string) => string;
36
40
  export declare function namespacedStorage(storage: Storage, namespace: string): Storage;
41
+ /** Compose two backends without changing existing private-only callers. */
42
+ export declare function withPublicStorage(privateStorage: Storage, publicStorage: Storage, options?: {
43
+ baseUrl?: string | null;
44
+ }): Storage;
37
45
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/server/storage/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,MAAM,GAAG;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5G,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;IACnF,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACzC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,IAAI,CACF,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3C,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC7C,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CAC/E,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,OAAO,cAAc,EAAE,aAAa,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAEtG,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,eAAe,GAAG,gBAAgB,CAAA;AAE/E,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAoCtG;AAED,eAAO,MAAM,UAAU,QAAS,MAAM,KAAG,MAYxC,CAAA;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CA6B9E"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/server/storage/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,MAAM,GAAG;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,mFAAmF;IACnF,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;IACnC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5G,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;IACnF,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACzC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,IAAI,CACF,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3C,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC7C,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CAC/E,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,OAAO,cAAc,EAAE,aAAa,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAEtG,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,eAAe,GAAG,gBAAgB,CAAA;AAE/E,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CA6CtG;AAED,eAAO,MAAM,UAAU,QAAS,MAAM,KAAG,MAYxC,CAAA;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CA+B9E;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,OAAO,EACvB,aAAa,EAAE,OAAO,EACtB,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,GACxC,OAAO,CA+CT"}