@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
+ // Static assets a browser may keep.
2
+ //
3
+ // Every asset used to be served from its own name with `cache-control:
4
+ // no-cache`, and no `ETag` or `Last-Modified` beside it. That pair is the worst
5
+ // of both: `no-cache` tells a cache it must revalidate before reusing anything,
6
+ // and with nothing to revalidate *against* the revalidation cannot answer 304 —
7
+ // so every page load re-fetched every stylesheet and every island bundle in
8
+ // full, and a CDN in front of it had nothing it was allowed to do.
9
+ //
10
+ // A file's own content is the only honest version of it, so that is what goes
11
+ // in the URL. A build that changes nothing changes no URL; a build that changes
12
+ // one bundle changes one URL, and the rest of a deployment's assets stay in
13
+ // caches where they are.
14
+ import { createHash } from 'node:crypto';
15
+ import { readFile, readdir, stat } from 'node:fs/promises';
16
+ import { join, relative } from 'node:path';
17
+ /** How much of the digest goes in the path. Eight hex is 4 billion; a file is not adversarial. */
18
+ const DIGEST = 8;
19
+ /**
20
+ * The marker that says a path segment is a version rather than a directory.
21
+ *
22
+ * Explicit, because `assetMount` has to strip it back off to find the file on
23
+ * disk, and "the first segment, if it looks like hex" is a rule that breaks the
24
+ * day somebody ships a directory named `deadbeef`.
25
+ */
26
+ export const VERSION_PREFIX = 'v';
27
+ const versionSegment = /^v[0-9a-f]{8,}$/;
28
+ /** Splits `v1a2b3c4d/live-doc.mjs` back into the file it names. */
29
+ export const withoutVersion = (path) => {
30
+ const slash = path.indexOf('/');
31
+ if (slash <= 0)
32
+ return path;
33
+ return versionSegment.test(path.slice(0, slash)) ? path.slice(slash + 1) : path;
34
+ };
35
+ /** True when this request named a version, and so may be cached forever. */
36
+ export const isVersioned = (path) => path.split('/').some((segment) => versionSegment.test(segment));
37
+ const walk = async (dir, base = dir) => {
38
+ const found = [];
39
+ let entries;
40
+ try {
41
+ entries = await readdir(dir);
42
+ }
43
+ catch {
44
+ return found;
45
+ }
46
+ for (const entry of entries) {
47
+ const full = join(dir, entry);
48
+ const info = await stat(full).catch(() => null);
49
+ if (!info)
50
+ continue;
51
+ if (info.isDirectory())
52
+ found.push(...(await walk(full, base)));
53
+ else
54
+ found.push(relative(base, full));
55
+ }
56
+ return found;
57
+ };
58
+ /**
59
+ * Rewrites every asset URL in the manifest to carry its file's digest.
60
+ *
61
+ * Done at boot rather than in `compose`, which is synchronous and runs in tests
62
+ * that have no business reading a disk. A deployment that cannot read one of
63
+ * its own asset directories simply keeps the unversioned URL: the page still
64
+ * works, it just revalidates the way it always did.
65
+ */
66
+ export async function fingerprintAssets(manifest) {
67
+ const versions = new Map();
68
+ await Promise.all(Object.entries(manifest.assets).map(async ([owner, dir]) => {
69
+ for (const file of await walk(dir)) {
70
+ const bytes = await readFile(join(dir, file)).catch(() => null);
71
+ if (!bytes)
72
+ continue;
73
+ const digest = createHash('sha256').update(bytes).digest('hex').slice(0, DIGEST);
74
+ versions.set(`${owner}/${file}`, `${VERSION_PREFIX}${digest}`);
75
+ }
76
+ }));
77
+ const versioned = (href) => {
78
+ const prefix = '/_ket/asset/';
79
+ if (!href.startsWith(prefix))
80
+ return href;
81
+ const rest = href.slice(prefix.length);
82
+ const version = versions.get(rest);
83
+ if (!version)
84
+ return href;
85
+ const slash = rest.indexOf('/');
86
+ return `${prefix}${rest.slice(0, slash)}/${version}/${rest.slice(slash + 1)}`;
87
+ };
88
+ for (const style of manifest.styles)
89
+ style.href = versioned(style.href);
90
+ for (const island of Object.values(manifest.islands)) {
91
+ const client = island.client;
92
+ if (client)
93
+ client.src = versioned(client.src);
94
+ }
95
+ return versions;
96
+ }
97
+ //# sourceMappingURL=assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/server/assets.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,18 @@
1
1
  import type { MenuNode } from '../kernel/menu.ts';
2
2
  import type { Markup } from '@ketvietlab/ketjs-view';
3
3
  import type { Tenants, TenantSpec } from './tenants.ts';
4
- import type { AppInfo } from '../kernel/apps.ts';
5
4
  import type { SessionContext, Sessions, SessionOptions, SessionRecord } from './session.ts';
5
+ import type { RatePolicy } from './ratelimit.ts';
6
+ import type { Logger, OpenLog } from './log/index.ts';
6
7
  import type { RuntimeConfig, OpenStore } from './config.ts';
7
8
  import type { OpenStorage, Storage } from './storage/index.ts';
8
9
  import type { OpenTransport } from './transport/index.ts';
9
- import type { AppSpec } from '../kernel/workspace.ts';
10
- import type { AppRegistry } from '../kernel/apps.ts';
10
+ import type { DeploymentSpec, NavigationSpec } from '../kernel/workspace.ts';
11
11
  import type { Translator } from '../kernel/i18n.ts';
12
12
  import type { Adapter, Manifest, Scope } from '../types.ts';
13
13
  import type { IncomingMessage } from 'node:http';
14
14
  import type { RouteParams } from '../kernel/routes.ts';
15
+ import type { Streams, StreamStore } from './stream.ts';
15
16
  export type { Html, RouteResult } from './respond.ts';
16
17
  export { page, fragment, navigablePage, isNavigationRequest, text, bytes, streamed, raw, withHeaders, } from './respond.ts';
17
18
  export { json } from './respond.ts';
@@ -19,27 +20,27 @@ import type { Html, RouteResult } from './respond.ts';
19
20
  export type Route = (url: URL, req: IncomingMessage, params: RouteParams) => Promise<RouteResult> | RouteResult;
20
21
  /**
21
22
  * What a route needs that only the running server has. Handed to `serve.routes` so
22
- * an app's screens can read live state without reaching for module-level globals.
23
+ * deployment screens can read live state without reaching for module-level globals.
23
24
  */
24
25
  export type ServeContext = {
25
- /** Everything this deployment ships, installed or not. */
26
+ /** The immutable manifest selected by this deployment. */
26
27
  manifest: Manifest;
27
- /**
28
- * Restricted to what is switched on for THIS request's tenant.
29
- *
30
- * It takes the request because the answer depends on it. Computing it once at
31
- * boot is what would show one tenant the module set of another — and that does
32
- * not fail, it answers wrongly, which is worse.
33
- */
28
+ /** The authored deployment and its external-client compatibility policy. */
29
+ deploymentName: string;
30
+ clientCompatibility: ClientCompatibilityPolicy | null;
31
+ /** Same manifest for every tenant; request-shaped for convenient route composition. */
34
32
  live: (req: IncomingMessage) => Promise<Manifest>;
35
- /** The app list for this request's tenant. The registry itself stays leased. */
36
- appsOf: (req: IncomingMessage) => Promise<AppInfo[]>;
37
33
  config: RuntimeConfig;
38
34
  scopeOf: (url: URL, req: IncomingMessage) => Promise<Scope>;
39
35
  localeOf: (url: URL, req: IncomingMessage) => string;
40
36
  translate: (locale: string) => Translator;
41
37
  /** A function call carrying this request's tenant, live manifest and scope. */
42
- call: (name: string, input: Record<string, unknown>, url: URL, req: IncomingMessage) => Promise<unknown>;
38
+ call: (name: string, input: Record<string, unknown>, url: URL, req: IncomingMessage, options?: {
39
+ idempotencyKey?: string | null;
40
+ idempotencyNamespace?: string | null;
41
+ idempotencyDigest?: string | null;
42
+ correlationId?: string | null;
43
+ }) => Promise<unknown>;
43
44
  /**
44
45
  * The same call with the permission check off.
45
46
  *
@@ -48,7 +49,32 @@ export type ServeContext = {
48
49
  * a permission resolver that went through the check would be asking permission
49
50
  * to find out whether it has permission. Nothing else has that excuse.
50
51
  */
51
- callUnchecked: (name: string, input: Record<string, unknown>, url: URL, req: IncomingMessage) => Promise<unknown>;
52
+ callUnchecked: (name: string, input: Record<string, unknown>, url: URL, req: IncomingMessage, options?: {
53
+ idempotencyKey?: string | null;
54
+ idempotencyNamespace?: string | null;
55
+ idempotencyDigest?: string | null;
56
+ correlationId?: string | null;
57
+ }) => Promise<unknown>;
58
+ /**
59
+ * Call inside exactly one company after this route has authenticated an
60
+ * external credential that is bound to that company.
61
+ *
62
+ * This is intentionally separate from `callUnchecked`: provider callbacks
63
+ * arrive without a staff session, so their request scope cannot select the
64
+ * legal entity. The company id must come from verified credential material,
65
+ * never from an unsigned path, query, header, or body field alone. The call
66
+ * remains in the request's tenant and cannot widen to another company.
67
+ */
68
+ callUncheckedForVerifiedCompany: (name: string, input: Record<string, unknown>, companyId: string, url: URL, req: IncomingMessage, options?: {
69
+ idempotencyKey?: string | null;
70
+ idempotencyNamespace?: string | null;
71
+ idempotencyDigest?: string | null;
72
+ correlationId?: string | null;
73
+ }) => Promise<unknown>;
74
+ /** Whether this request's effective allow-list contains one exact function key. */
75
+ allows: (name: string, url: URL, req: IncomingMessage) => Promise<boolean>;
76
+ /** What this deployment declared its navigation to mean. Null when it declared nothing. */
77
+ navigation: NavigationSpec | null;
52
78
  /** The document every screen sits in. Markup, not a string — see respond.ts. */
53
79
  document: (o: {
54
80
  lang: string;
@@ -56,23 +82,24 @@ export type ServeContext = {
56
82
  head?: Html;
57
83
  body: Html;
58
84
  }) => Html;
59
- /** Installed modules' stylesheets for this tenant, in dependency order. */
85
+ /** Composed modules' stylesheets for this tenant, in dependency order. */
60
86
  styles: (req: IncomingMessage) => Promise<Html>;
61
87
  /**
62
- * Render an extension point: every installed module's fills, in dependency
88
+ * Render an extension point: every composed module's fills, in dependency
63
89
  * order, as markup a template inserts verbatim.
64
90
  *
65
- * Empty when nobody fills it, and empty when an installed module omitted it.
91
+ * Empty when nobody fills it, and empty when a composed module omitted it.
66
92
  */
67
93
  joint: (url: URL, req: IncomingMessage, key: string, props?: Record<string, unknown>) => Promise<Markup>;
68
- /** False when an installed module omitted this joint — see jointShows in screens. */
94
+ /** False when a composed module omitted this joint — see jointShows in screens. */
69
95
  jointShows: (url: URL, req: IncomingMessage, key: string) => Promise<boolean>;
70
96
  /**
71
- * The navigation tree as this viewer sees it: what the deployment ships, what
72
- * this database has switched on, and what this request may call — in that order,
73
- * because each filter depends on the one before.
97
+ * The navigation tree as this viewer sees it: what the deployment composes and
98
+ * what this request may call.
74
99
  */
75
100
  menu: (url: URL, req: IncomingMessage) => Promise<MenuNode[]>;
101
+ /** Printable reports for a model whose read-only source this viewer may call. */
102
+ reportsOf: (url: URL, req: IncomingMessage, target: string) => Promise<import('../types.ts').ComposedReport[]>;
76
103
  /**
77
104
  * This request's sessions. A function because with subdomain tenants they live
78
105
  * in that tenant's database — one per tenant, not one per deployment.
@@ -93,6 +120,23 @@ export type PagesSpec = {
93
120
  resolve: string;
94
121
  /** Optional function taking `{ host }` and returning site id, title, locale and theme. */
95
122
  siteResolve?: string;
123
+ /**
124
+ * Optional function taking `{ siteId }` and returning the site's navigation.
125
+ * Its answer reaches a theme as `menu`; without it a theme that draws
126
+ * navigation draws nothing, which is a blank nav rather than an error.
127
+ */
128
+ menuResolve?: string;
129
+ /**
130
+ * Optional function taking `{ token }` and answering the same shape as
131
+ * `resolve`, for a draft nobody has published yet. Without it a deployment
132
+ * can mint preview links and has nowhere to spend them.
133
+ */
134
+ previewResolve?: string;
135
+ /**
136
+ * Where a preview link points. Defaults to `/_ket/preview`, inside the
137
+ * namespace the framework already owns, so no published page can claim it.
138
+ */
139
+ previewPath?: string;
96
140
  /** Theme region whose host carries the same data-ket-slot name. */
97
141
  region?: string;
98
142
  /** Message key for the title of a path that has no page. */
@@ -106,14 +150,34 @@ export type SessionResolveContext = {
106
150
  url: URL;
107
151
  req: IncomingMessage;
108
152
  };
153
+ /**
154
+ * Identity established by infrastructure in front of the deployment.
155
+ *
156
+ * The resolver is the trust boundary: callers must verify the proxy credential
157
+ * (for example a short-lived signed assertion) before returning an identity.
158
+ * KetJS then applies the same actor, scope and permission pipeline used by a
159
+ * cookie session without persisting a second login session in the tenant DB.
160
+ */
161
+ export type RequestIdentity = {
162
+ userId: string;
163
+ companies: string[];
164
+ company: string | null;
165
+ branch?: string | null;
166
+ branches?: string[] | null;
167
+ securityVersion?: number;
168
+ };
169
+ export type RequestIdentityResolveContext = {
170
+ adapter: Adapter;
171
+ manifest: Manifest;
172
+ url: URL;
173
+ req: IncomingMessage;
174
+ };
109
175
  export type ServeSpec = {
110
176
  pages?: PagesSpec;
111
177
  assets?: {
112
178
  prefix: string;
113
179
  dir: string;
114
180
  };
115
- /** Installed on an empty database so a first run has something to look at. */
116
- bootstrap?: string[];
117
181
  routes?: (ctx: ServeContext) => Record<string, Route>;
118
182
  /** Anything other than SQLite; the framework cannot depend on a driver. */
119
183
  openStore?: OpenStore;
@@ -121,6 +185,46 @@ export type ServeSpec = {
121
185
  openStorage?: OpenStorage;
122
186
  /** Inject a deployment-owned outbound provider for durable worker jobs. */
123
187
  openTransport?: OpenTransport;
188
+ /**
189
+ * Send operational records somewhere the framework does not know how to reach.
190
+ *
191
+ * The built-ins need nothing but Node, so anything requiring a client library
192
+ * belongs here rather than in the framework — the same fence as `openStore`.
193
+ * Level filtering, redaction and failure isolation are applied around whatever
194
+ * this returns, so a sink cannot break the work it is describing.
195
+ *
196
+ * Return a fresh driver per call rather than one memoised instance. A process
197
+ * that runs both roles — `ket dev` — opens the sink once for HTTP and once for
198
+ * the worker and closes each with its own role; a shared instance is closed by
199
+ * whichever shuts down first, and the other role's last records are written to a
200
+ * handle that is already gone.
201
+ */
202
+ openLog?: OpenLog;
203
+ /** Version and maintenance policy published by profile bootstrap routes. */
204
+ clientCompatibility?: ClientCompatibilityPolicy;
205
+ /** Backing store for the built-in resumable stream transport. */
206
+ streamStore?: StreamStore;
207
+ /**
208
+ * Authorize a public stream id and map it to the exact tenant-namespaced topic
209
+ * used by `BootedDeployment.streams`. Absent or null keeps the endpoint closed.
210
+ */
211
+ resolveStream?: (ctx: ServeContext, id: string, url: URL, req: IncomingMessage) => string | null | Promise<string | null>;
212
+ /**
213
+ * How long a stream connection is held open, and how long its tail waits
214
+ * before reading again when nothing woke it. See `ServerOptions`.
215
+ */
216
+ streamTimeoutMs?: number;
217
+ streamPollMs?: number;
218
+ /** Maximum buffered body accepted by the generic JSON function transport. */
219
+ maxJsonBodyBytes?: number;
220
+ /**
221
+ * A ceiling on how often one caller may reach a route, or null for no ceiling.
222
+ *
223
+ * Per-request rather than global on purpose: a durable check costs a database
224
+ * round trip, so pointing it at everything hands an attacker a lever. Name the
225
+ * routes where repetition is the abuse.
226
+ */
227
+ rateLimit?: (ctx: ServeContext, url: URL, req: IncomingMessage) => RatePolicy | null;
124
228
  /**
125
229
  * Turn on sessions. Present means the X-Ket-Company shim is gone and identity
126
230
  * comes from a signed cookie; absent means the shim stays and the banner says so.
@@ -130,44 +234,76 @@ export type ServeSpec = {
130
234
  };
131
235
  /** Revalidate live account state and memberships before scope and permissions. */
132
236
  resolveSession?: (ctx: SessionResolveContext) => Promise<SessionContext | null>;
237
+ /** Verify and resolve identity asserted by a trusted gateway for this request. */
238
+ resolveIdentity?: (ctx: RequestIdentityResolveContext) => Promise<RequestIdentity | null>;
239
+ /** Classify non-staff credentials so the generic function transport can fail closed. */
240
+ resolveAudience?: (url: URL, req: IncomingMessage) => string | null | Promise<string | null>;
133
241
  /**
134
- * Serve several tenants, one database each Odoo's model, and the one that
135
- * makes per-tenant module sets work. Absent, the app has a single datastore.
242
+ * Serve several tenants, one database each. Every tenant runs this same deployment.
136
243
  */
137
244
  tenants?: TenantSpec;
138
245
  /**
139
246
  * Which functions a signed-in user may call. Absent means no restriction, which
140
- * is what an app without roles is. Returning a list restricts every call the
247
+ * is what a deployment without roles is. Returning a list restricts every call the
141
248
  * request makes, including the ones a route makes on its behalf.
249
+ *
250
+ * The request is handed over because answering the question almost always means
251
+ * asking the database, and which database that is comes from the request. A
252
+ * resolver that had to invent one could only reach the tenant a bare URL happens
253
+ * to resolve to — which is the wrong one for every tenant but the default.
142
254
  */
143
- permissions?: (ctx: ServeContext, userId: string) => Promise<readonly string[] | null>;
255
+ permissions?: (ctx: ServeContext, userId: string, url: URL, req: IncomingMessage) => Promise<readonly string[] | null>;
144
256
  defaults?: Partial<RuntimeConfig>;
145
257
  };
146
- export type BootedApp = {
258
+ export type ClientCompatibilityPolicy = {
259
+ minimumVersions: {
260
+ ios: string;
261
+ android: string;
262
+ };
263
+ recommendedVersions?: {
264
+ ios: string;
265
+ android: string;
266
+ };
267
+ maintenance?: {
268
+ enabled: boolean;
269
+ messages?: Record<string, string>;
270
+ };
271
+ };
272
+ export type BootedDeployment = {
147
273
  name: string;
148
274
  manifest: Manifest;
149
- /** The datastore, when there is exactly one. Null when the app serves tenants. */
275
+ /** The datastore, when there is exactly one. Null when the deployment serves tenants. */
150
276
  adapter: Adapter | null;
151
- /** Likewise: with tenants, "which apps" is a question about a tenant. */
152
- apps: AppRegistry | null;
153
277
  /** Per-tenant access, and the only form that works in both modes. */
154
278
  tenants: Tenants;
155
279
  config: RuntimeConfig;
280
+ /** Writers for the same store served by the authorized stream endpoint. */
281
+ streams: Streams;
282
+ /**
283
+ * This deployment's logger, carrying its name and process role.
284
+ *
285
+ * A host that calls functions in process — a seeding script, a test harness —
286
+ * narrows it with `child` and hands it to `callFn`, so those calls are recorded
287
+ * the same way a served one is instead of silently escaping the pipeline.
288
+ */
289
+ logger: Logger;
156
290
  port: number;
157
291
  banner: () => Promise<string>;
158
292
  close: () => Promise<void>;
159
293
  };
160
- export type BootAppOptions = {
294
+ export type BootDeploymentOptions = {
161
295
  env?: Record<string, string | undefined>;
162
296
  port?: number;
163
297
  /** Boot progress. Long-running serve keeps its banner separate. */
164
298
  log?: (line: string) => void;
299
+ /** Redirect this process's operational records, without editing the spec. */
300
+ openLog?: OpenLog;
165
301
  };
166
302
  /**
167
- * Opens, migrates, installs, serves. Returns before listening is announced so a
303
+ * Opens, migrates, and serves. Returns before listening is announced so a
168
304
  * caller can print its own banner, or a test can boot on port 0 and never print.
169
305
  */
170
- export declare function bootApp(spec: AppSpec, o?: BootAppOptions): Promise<BootedApp>;
171
- /** bootApp, plus the banner and the signal handling a long-running process wants. */
172
- export declare function serveApp(spec: AppSpec, o?: BootAppOptions): Promise<BootedApp>;
306
+ export declare function bootDeployment(spec: DeploymentSpec, o?: BootDeploymentOptions): Promise<BootedDeployment>;
307
+ /** bootDeployment, plus the banner and the signal handling a long-running process wants. */
308
+ export declare function serveDeployment(spec: DeploymentSpec, o?: BootDeploymentOptions): Promise<BootedDeployment>;
173
309
  //# sourceMappingURL=boot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/server/boot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/server/boot.ts"],"names":[],"mappings":"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"}