@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
@@ -1,38 +1,56 @@
1
- // One deployment, many databases.
2
- //
3
- // This is Odoo's model and it is the one that makes per-tenant module sets work at
4
- // all: the code ships with the deployment, the decision about what is switched on
5
- // lives in each database. `ket_app` per database is `ir_module_module` per
6
- // database, and D7 makes it cheaper here — every schema exists everywhere, so
7
- // enabling a module for a tenant is one UPDATE rather than a migration. Measured:
8
- // 400 empty tables cost 17 MB, and adding a column across all of them 43 ms.
9
- //
10
- // What this file exists to prevent is subtler than a missing feature. Until now
11
- // `bootApp` opened one adapter and built one AppRegistry at boot, so `live()` —
12
- // the restricted manifest — was computed once. Serving two tenants through that
13
- // would not crash; it would show tenant B the module set of tenant A. Wrong
14
- // answers are worse than errors, so the registry is per datastore and the manifest
15
- // is resolved per request.
16
- import { createAppRegistry, restrictManifest } from '../kernel/apps.js';
1
+ // One deployment, many databases. A DeploymentSpec is immutable: every tenant
2
+ // receives the same composed manifest and schema. Tenant resolution chooses data,
3
+ // never a second module lifecycle.
17
4
  import { KetError } from '../kernel/errors.js';
5
+ import { scopeForSession } from './session.js';
6
+ const sessionFacadePolicy = (sessions) => ({
7
+ storeName: sessions.store.name,
8
+ ...(sessions.tenant === undefined ? {} : { tenant: sessions.tenant }),
9
+ ephemeralSecret: sessions.ephemeralSecret,
10
+ clearCookie: sessions.clearCookie(),
11
+ anonymous: scopeForSession(null, { anonymous: sessions.scopeOf(null) }),
12
+ });
13
+ const scopePolicyKey = (scope) => JSON.stringify(scope);
14
+ const assertSessionFacadePolicy = (key, expected, sessions) => {
15
+ const actual = sessionFacadePolicy(sessions);
16
+ const changed = [
17
+ ...(actual.storeName === expected.storeName ? [] : ['store.name']),
18
+ ...(actual.tenant === expected.tenant ? [] : ['tenant']),
19
+ ...(actual.ephemeralSecret === expected.ephemeralSecret ? [] : ['ephemeralSecret']),
20
+ ...(actual.clearCookie === expected.clearCookie ? [] : ['clearCookie']),
21
+ ...(scopePolicyKey(actual.anonymous) === scopePolicyKey(expected.anonymous) ? [] : ['anonymous']),
22
+ ];
23
+ if (!changed.length)
24
+ return;
25
+ throw new KetError({
26
+ code: 'E_SESSION_POLICY_DRIFT',
27
+ message: `session policy for tenant "${key}" changed after its adapter was replaced`,
28
+ hint: `sessions(adapter, key) must keep adapter-independent policy stable; changed: ${changed.join(', ')}`,
29
+ });
30
+ };
18
31
  export function createTenants(o) {
19
- // One registry per datastore, kept: building it runs DDL, and doing that per
20
- // request would put a CREATE TABLE IF NOT EXISTS in front of every page.
21
- const registries = new Map();
22
- const registryFor = (key, adapter) => {
23
- let r = registries.get(key);
24
- if (!r) {
25
- r = (async () => {
26
- await o.prepare?.(key, adapter);
27
- const made = await createAppRegistry(o.manifest, adapter, { autoInstall: o.autoInstall });
28
- await o.onFirstTouch?.(key, made, adapter);
29
- return made;
30
- })();
31
- // Cached before it resolves, so two concurrent first requests for one tenant
32
- // do not both run the DDL and both try to install the bootstrap set.
33
- registries.set(key, r);
34
- }
35
- return r;
32
+ // Adapter-owned work must not keep a closed pool entry alive. WeakMap has the
33
+ // ephemeron semantics needed here even though the promise itself closes over
34
+ // the adapter while preparation is running.
35
+ const prepared = new WeakMap();
36
+ const prepare = (key, adapter) => {
37
+ const cached = prepared.get(adapter);
38
+ if (cached)
39
+ return cached;
40
+ // A key may be evicted and later reopened as a different adapter. Preparation
41
+ // belongs to that concrete connection/datastore instance, not to the key for
42
+ // the lifetime of the process (notably for SQLite :memory: databases).
43
+ const promise = Promise.resolve().then(async () => {
44
+ await o.prepare?.(key, adapter);
45
+ });
46
+ prepared.set(adapter, promise);
47
+ void promise.catch(() => {
48
+ // A failed migration/init is retryable. Do not let an older rejected promise
49
+ // delete a newer attempt on the same adapter.
50
+ if (prepared.get(adapter) === promise)
51
+ prepared.delete(adapter);
52
+ });
53
+ return promise;
36
54
  };
37
55
  const keyOf = (url, req) => {
38
56
  const key = o.spec.resolve(url, req);
@@ -46,54 +64,98 @@ export function createTenants(o) {
46
64
  return key;
47
65
  };
48
66
  /**
49
- * Both caches are keyed by tenant AND by what is installed, so switching an app
50
- * on rebuilds rather than serving a stale answer until restart.
51
- *
52
- * The restricted manifest is worth caching for the same reason the theme is,
53
- * and it always was: 0.015 ms a call against KetSuite's manifest, which is
54
- * nothing until it is every request, and 0.0003 ms once kept. A deployment with
55
- * one database benefits most, because its installed set almost never changes.
67
+ * Theme and joint runtimes are keyed by tenant (and locale for joints). Module
68
+ * composition is immutable for the lifetime of this deployment process.
56
69
  */
57
- const lives = new Map();
58
70
  const themes = new Map();
59
71
  const jointsBy = new Map();
60
- const sessions = new Map();
72
+ const sessionManagers = new WeakMap();
73
+ const sessionFacades = new Map();
74
+ const managerFor = (key, adapter) => {
75
+ const cached = sessionManagers.get(adapter);
76
+ if (cached)
77
+ return cached;
78
+ const value = o.sessions(adapter, key);
79
+ sessionManagers.set(adapter, value);
80
+ void value.catch(() => {
81
+ if (sessionManagers.get(adapter) === value)
82
+ sessionManagers.delete(adapter);
83
+ });
84
+ return value;
85
+ };
61
86
  const sessionsFor = (key, adapter) => {
62
87
  if (!o.sessions)
63
88
  return null;
64
- let s = sessions.get(key);
65
- if (!s) {
66
- s = o.sessions(adapter);
67
- sessions.set(key, s);
68
- }
69
- return s;
89
+ const cached = sessionFacades.get(key);
90
+ if (cached)
91
+ return cached;
92
+ let made;
93
+ made = managerFor(key, adapter)
94
+ .then((seed) => {
95
+ // Snapshot only adapter-free values. In particular, do not close over the
96
+ // first Sessions/SessionStore: it owns the adapter that eviction just closed.
97
+ const policy = sessionFacadePolicy(seed);
98
+ const withManager = (body) => o.pool.with(key, async (current) => {
99
+ await prepare(key, current);
100
+ const sessions = await managerFor(key, current);
101
+ assertSessionFacadePolicy(key, policy, sessions);
102
+ return body(sessions);
103
+ });
104
+ return {
105
+ ...(policy.tenant === undefined ? {} : { tenant: policy.tenant }),
106
+ store: {
107
+ name: policy.storeName,
108
+ init: () => withManager((sessions) => sessions.store.init()),
109
+ create: (record) => withManager((sessions) => sessions.store.create(record)),
110
+ read: (id) => withManager((sessions) => sessions.store.read(id)),
111
+ touch: (id, expiresAt) => withManager((sessions) => sessions.store.touch(id, expiresAt)),
112
+ updateContext: (id, expectedRevision, context) => withManager((sessions) => sessions.store.updateContext(id, expectedRevision, context)),
113
+ destroy: (id) => withManager((sessions) => sessions.store.destroy(id)),
114
+ listUser: (userId) => withManager((sessions) => sessions.store.listUser(userId)),
115
+ destroyUser: (userId) => withManager((sessions) => sessions.store.destroyUser(userId)),
116
+ destroyUserExcept: (userId, keepId) => withManager((sessions) => sessions.store.destroyUserExcept(userId, keepId)),
117
+ sweep: (at) => withManager((sessions) => sessions.store.sweep(at)),
118
+ },
119
+ ephemeralSecret: policy.ephemeralSecret,
120
+ start: (options) => withManager((sessions) => sessions.start(options)),
121
+ of: (req) => withManager((sessions) => sessions.of(req)),
122
+ end: (req) => withManager((sessions) => sessions.end(req)),
123
+ endUser: (userId) => withManager((sessions) => sessions.endUser(userId)),
124
+ endUserExcept: (userId, keepId) => withManager((sessions) => sessions.endUserExcept(userId, keepId)),
125
+ update: (record, context) => withManager((sessions) => sessions.update(record, context)),
126
+ clearCookie: () => policy.clearCookie,
127
+ scopeOf: (record) => scopeForSession(record, {
128
+ ...(policy.tenant === undefined ? {} : { tenant: policy.tenant }),
129
+ anonymous: policy.anonymous,
130
+ }),
131
+ sweep: () => withManager((sessions) => sessions.sweep()),
132
+ };
133
+ })
134
+ .catch((error) => {
135
+ if (sessionFacades.get(key) === made)
136
+ sessionFacades.delete(key);
137
+ throw error;
138
+ });
139
+ sessionFacades.set(key, made);
140
+ return made;
70
141
  };
71
- const themeFor = (key, live) => {
142
+ const themeFor = (key) => {
72
143
  if (!o.theme)
73
144
  return null;
74
- const stamp = `${key}::${live.order.join(',')}`;
75
- let t = themes.get(stamp);
145
+ let t = themes.get(key);
76
146
  if (!t) {
77
- t = o.theme(live);
78
- themes.set(stamp, t);
147
+ t = o.theme(o.manifest);
148
+ themes.set(key, t);
79
149
  }
80
150
  return t;
81
151
  };
82
152
  const withTenant = (key, fn) => o.pool.with(key, async (adapter) => {
83
- const apps = await registryFor(key, adapter);
84
- // Resolved per request. The whole reason this file exists: computing it once
85
- // would show one tenant the module set of another.
86
- const stamp = `${key}::${[...(await apps.enabled())].sort().join(',')}`;
87
- let live = lives.get(stamp);
88
- if (!live) {
89
- live = restrictManifest(o.manifest, await apps.enabled());
90
- lives.set(stamp, live);
91
- }
153
+ await prepare(key, adapter);
92
154
  const jointsFor = (locale) => {
93
- const k = `${stamp}::${locale}`;
155
+ const k = `${key}::${locale}`;
94
156
  let made = jointsBy.get(k);
95
157
  if (!made) {
96
- made = o.joints(live, locale);
158
+ made = o.joints(o.manifest, locale);
97
159
  jointsBy.set(k, made);
98
160
  }
99
161
  return made;
@@ -101,9 +163,8 @@ export function createTenants(o) {
101
163
  return fn({
102
164
  key,
103
165
  adapter,
104
- apps,
105
- live,
106
- theme: themeFor(key, live),
166
+ live: o.manifest,
167
+ theme: themeFor(key),
107
168
  joints: jointsFor,
108
169
  sessions: await (sessionsFor(key, adapter) ?? Promise.resolve(null)),
109
170
  });
@@ -126,26 +187,15 @@ export function createTenants(o) {
126
187
  * adapter comes from.
127
188
  */
128
189
  export function singleTenant(o) {
129
- const lives = new Map();
130
- const themes = new Map();
190
+ let theme;
131
191
  const jointsBy = new Map();
132
192
  const run = async (key, fn) => {
133
- const stamp = [...(await o.apps.enabled())].sort().join(',');
134
- let live = lives.get(stamp);
135
- if (!live) {
136
- live = restrictManifest(o.manifest, await o.apps.enabled());
137
- lives.set(stamp, live);
138
- }
139
- let theme = null;
140
- if (o.theme) {
141
- theme = themes.get(stamp) ?? o.theme(live);
142
- themes.set(stamp, theme);
143
- }
193
+ theme ??= o.theme?.(o.manifest) ?? null;
144
194
  const jointsFor = (locale) => {
145
- const k = `${stamp}::${locale}`;
195
+ const k = locale;
146
196
  let made = jointsBy.get(k);
147
197
  if (!made) {
148
- made = o.joints(live, locale);
198
+ made = o.joints(o.manifest, locale);
149
199
  jointsBy.set(k, made);
150
200
  }
151
201
  return made;
@@ -153,8 +203,7 @@ export function singleTenant(o) {
153
203
  return fn({
154
204
  key,
155
205
  adapter: o.adapter,
156
- apps: o.apps,
157
- live,
206
+ live: o.manifest,
158
207
  theme,
159
208
  joints: jointsFor,
160
209
  sessions: o.sessions ?? null,
@@ -1 +1 @@
1
- {"version":3,"file":"tenants.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/server/tenants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tenants.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/server/tenants.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,kFAAkF;AAClF,mCAAmC;AAEnC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAI9C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAqF9C,MAAM,mBAAmB,GAAG,CAAC,QAAkB,EAAuB,EAAE,CAAC,CAAC;IACxE,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI;IAC9B,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACrE,eAAe,EAAE,QAAQ,CAAC,eAAe;IACzC,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE;IACnC,SAAS,EAAE,eAAe,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;CACxE,CAAC,CAAA;AAEF,MAAM,cAAc,GAAG,CAAC,KAAmB,EAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AAE7E,MAAM,yBAAyB,GAAG,CAAC,GAAW,EAAE,QAA6B,EAAE,QAAkB,EAAQ,EAAE;IACzG,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC5C,MAAM,OAAO,GAAG;QACd,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAClE,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACxD,GAAG,CAAC,MAAM,CAAC,eAAe,KAAK,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;QACnF,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QACvE,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;KAClG,CAAA;IACD,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAM;IAC3B,MAAM,IAAI,QAAQ,CAAC;QACjB,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EAAE,8BAA8B,GAAG,0CAA0C;QACpF,IAAI,EAAE,gFAAgF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;KAC3G,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,UAAU,aAAa,CAAC,CAkB7B;IACC,8EAA8E;IAC9E,6EAA6E;IAC7E,4CAA4C;IAC5C,MAAM,QAAQ,GAAG,IAAI,OAAO,EAA0B,CAAA;IACtD,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,OAAgB,EAAiB,EAAE;QAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACpC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAA;QAEzB,8EAA8E;QAC9E,6EAA6E;QAC7E,uEAAuE;QACvE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAChD,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACjC,CAAC,CAAC,CAAA;QACF,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC9B,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;YACtB,6EAA6E;YAC7E,8CAA8C;YAC9C,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,OAAO;gBAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACjE,CAAC,CAAC,CAAA;QACF,OAAO,OAAO,CAAA;IAChB,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,CAAC,GAAQ,EAAE,GAAoB,EAAU,EAAE;QACvD,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,QAAQ,CAAC;gBACjB,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,iBAAiB,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE;gBACxD,IAAI,EAAE,0EAA0E;aACjF,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,CAAA;IAED;;;OAGG;IACH,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAA;IAC9C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC1C,MAAM,eAAe,GAAG,IAAI,OAAO,EAA8B,CAAA;IACjE,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6B,CAAA;IAC3D,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,OAAgB,EAAqB,EAAE;QACtE,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC3C,IAAI,MAAM;YAAE,OAAO,MAAM,CAAA;QACzB,MAAM,KAAK,GAAI,CAAC,CAAC,QAA2C,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAC1E,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACnC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;YACpB,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK;gBAAE,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC7E,CAAC,CAAC,CAAA;QACF,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IACD,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,OAAgB,EAA4B,EAAE;QAC9E,IAAI,CAAC,CAAC,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAA;QAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACtC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAA;QAEzB,IAAI,IAAwB,CAAA;QAC5B,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;aAC5B,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACb,0EAA0E;YAC1E,8EAA8E;YAC9E,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;YACxC,MAAM,WAAW,GAAG,CAAI,IAAwC,EAAc,EAAE,CAC9E,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;gBACjC,MAAM,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;gBAC3B,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;gBAC/C,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;gBAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAA;YACvB,CAAC,CAAC,CAAA;YACJ,OAAO;gBACL,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;gBACjE,KAAK,EAAE;oBACL,IAAI,EAAE,MAAM,CAAC,SAAS;oBACtB,IAAI,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBAC5D,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC5E,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAChE,KAAK,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;oBACxF,aAAa,EAAE,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,CAC/C,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;oBACxF,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBACtE,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAChF,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBACtF,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CACpC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBAC7E,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;iBACnE;gBACD,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACtE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBACxD,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC1D,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACxE,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAChC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACnE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACxF,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW;gBACrC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAClB,eAAe,CAAC,MAAM,EAAE;oBACtB,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;oBACjE,SAAS,EAAE,MAAM,CAAC,SAAS;iBAC5B,CAAC;gBACJ,KAAK,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;aACzD,CAAA;QACH,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI;gBAAE,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAChE,MAAM,KAAK,CAAA;QACb,CAAC,CAAC,CAAA;QACJ,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC7B,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IACD,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAuB,EAAE;QACpD,IAAI,CAAC,CAAC,CAAC,KAAK;YAAE,OAAO,IAAI,CAAA;QACzB,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACvB,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;YACvB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QACpB,CAAC;QACD,OAAO,CAAC,CAAA;IACV,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,CAAI,GAAW,EAAE,EAA6B,EAAc,EAAE,CAC/E,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACjC,MAAM,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC3B,MAAM,SAAS,GAAG,CAAC,MAAc,EAAU,EAAE;YAC3C,MAAM,CAAC,GAAG,GAAG,GAAG,KAAK,MAAM,EAAE,CAAA;YAC7B,IAAI,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;gBACnC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;YACvB,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC,CAAA;QACD,OAAO,EAAE,CAAC;YACR,GAAG;YACH,OAAO;YACP,IAAI,EAAE,CAAC,CAAC,QAAQ;YAChB,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC;YACpB,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACrE,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEJ,OAAO;QACL,KAAK;QACL,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QAC5D,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;QACzB,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;KAC5B,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,CAM5B;IACC,IAAI,KAAsC,CAAA;IAC1C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC1C,MAAM,GAAG,GAAG,KAAK,EAAK,GAAW,EAAE,EAA6B,EAAc,EAAE;QAC9E,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAA;QACvC,MAAM,SAAS,GAAG,CAAC,MAAc,EAAU,EAAE;YAC3C,MAAM,CAAC,GAAG,MAAM,CAAA;YAChB,IAAI,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;gBACnC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;YACvB,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC,CAAA;QACD,OAAO,EAAE,CAAC;YACR,GAAG;YACH,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,QAAQ;YAChB,KAAK;YACL,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;SAC7B,CAAC,CAAA;IACJ,CAAC,CAAA;IACD,OAAO;QACL,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE;QACf,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,GAAG;QACT,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;QAC1C,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACtB,KAAK,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;KACtB,CAAA;AACH,CAAC"}
@@ -70,8 +70,8 @@ export function unavailableTransport() {
70
70
  async send() {
71
71
  throw new KetError({
72
72
  code: 'E_TRANSPORT_UNAVAILABLE',
73
- message: 'no outbound transport is configured for this app',
74
- hint: 'provide serve.openTransport in the app deployment',
73
+ message: 'no outbound transport is configured for this deployment',
74
+ hint: 'provide serve.openTransport in the deployment declaration',
75
75
  });
76
76
  },
77
77
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../packages/ketjs/src/server/transport/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../packages/ketjs/src/server/transport/types.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import type { AppSpec } from '../kernel/workspace.ts';
1
+ import type { OpenLog } from './log/index.ts';
2
+ import type { DeploymentSpec } from '../kernel/workspace.ts';
2
3
  import type { Manifest } from '../types.ts';
3
4
  export type WorkerLog = {
4
5
  event: 'started' | 'completed' | 'retrying' | 'discarded' | 'cancelled' | 'handler_ignored_abort';
@@ -10,24 +11,39 @@ export type WorkerLog = {
10
11
  attempt: number;
11
12
  durationMs?: number;
12
13
  error?: string;
14
+ /**
15
+ * The failure's stable code when it had one.
16
+ *
17
+ * Reducing a KetError to its message threw away the one part worth counting: a
18
+ * record saying "E_UNEXPECTED" for a failure the system named and expected is a
19
+ * record nobody can group or alert on.
20
+ */
21
+ errorCode?: string;
13
22
  };
14
23
  export type BootedWorker = {
15
24
  workerId: string;
16
25
  manifest: Manifest;
17
26
  /** Claim one fair pass without starting a permanent loop. */
18
27
  runOnce(): Promise<number>;
28
+ /**
29
+ * Move every due schedule forward once, and enqueue what moved. Returns how many
30
+ * jobs were enqueued. `start()` does this on a timer; a test does it deliberately.
31
+ */
32
+ sweepSchedules(): Promise<number>;
19
33
  /** Keep claiming until no due work and all claimed jobs have settled. */
20
34
  drain(): Promise<number>;
21
35
  /** Start adaptive polling. Idempotent. */
22
36
  start(): void;
23
37
  close(): Promise<void>;
24
38
  };
25
- export declare function bootWorker(spec: AppSpec, options?: {
39
+ export declare function bootWorker(spec: DeploymentSpec, options?: {
26
40
  env?: Record<string, string | undefined>;
27
41
  workerId?: string;
28
42
  now?: () => Date;
29
43
  random?: () => number;
30
44
  log?: (entry: WorkerLog) => void;
45
+ /** Redirect this worker's operational records, without editing the spec. */
46
+ openLog?: OpenLog;
31
47
  }): Promise<BootedWorker>;
32
- export declare function serveWorker(spec: AppSpec, options?: Parameters<typeof bootWorker>[1]): Promise<BootedWorker>;
48
+ export declare function serveWorker(spec: DeploymentSpec, options?: Parameters<typeof bootWorker>[1]): Promise<BootedWorker>;
33
49
  //# sourceMappingURL=worker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/server/worker.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,EAAuB,QAAQ,EAAE,MAAM,aAAa,CAAA;AAGhE,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,uBAAuB,CAAA;IACjG,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,QAAQ,CAAA;IAClB,6DAA6D;IAC7D,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1B,yEAAyE;IACzE,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACxB,0CAA0C;IAC1C,KAAK,IAAI,IAAI,CAAA;IACb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB,CAAA;AAkED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,OAAO,EACb,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;CAC5B,GACL,OAAO,CAAC,YAAY,CAAC,CAwWvB;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAM,GAC7C,OAAO,CAAC,YAAY,CAAC,CAMvB"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/server/worker.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAI7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAE5D,OAAO,KAAK,EAAuB,QAAQ,EAAE,MAAM,aAAa,CAAA;AAGhE,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,uBAAuB,CAAA;IACjG,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,QAAQ,CAAA;IAClB,6DAA6D;IAC7D,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1B;;;OAGG;IACH,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACjC,yEAAyE;IACzE,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACxB,0CAA0C;IAC1C,KAAK,IAAI,IAAI,CAAA;IACb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB,CAAA;AAiED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;IAChC,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAA;CACb,GACL,OAAO,CAAC,YAAY,CAAC,CAggBvB;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAM,GAC7C,OAAO,CAAC,YAAY,CAAC,CAMvB"}