@ketvietlab/ketjs 0.1.2 → 0.1.3
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.
- package/LICENSE +1 -1
- package/README.md +8 -2
- package/dist/agent/capabilities.d.ts +1 -3
- package/dist/agent/capabilities.d.ts.map +1 -1
- package/dist/agent/capabilities.js +10 -1
- package/dist/agent/capabilities.js.map +1 -1
- package/dist/agent/permissions.d.ts +43 -1
- package/dist/agent/permissions.d.ts.map +1 -1
- package/dist/agent/permissions.js +50 -2
- package/dist/agent/permissions.js.map +1 -1
- package/dist/cli.js +246 -97
- package/dist/cli.js.map +1 -1
- package/dist/codegen/dts.d.ts.map +1 -1
- package/dist/codegen/dts.js +1 -0
- package/dist/codegen/dts.js.map +1 -1
- package/dist/data/changeset.d.ts +12 -0
- package/dist/data/changeset.d.ts.map +1 -1
- package/dist/data/changeset.js +73 -17
- package/dist/data/changeset.js.map +1 -1
- package/dist/data/expr.d.ts +16 -0
- package/dist/data/expr.d.ts.map +1 -1
- package/dist/data/expr.js +33 -5
- package/dist/data/expr.js.map +1 -1
- package/dist/data/fleet.d.ts +41 -1
- package/dist/data/fleet.d.ts.map +1 -1
- package/dist/data/fleet.js +100 -11
- package/dist/data/fleet.js.map +1 -1
- package/dist/data/migrate.d.ts +20 -0
- package/dist/data/migrate.d.ts.map +1 -1
- package/dist/data/migrate.js +86 -3
- package/dist/data/migrate.js.map +1 -1
- package/dist/data/physical.d.ts +5 -0
- package/dist/data/physical.d.ts.map +1 -0
- package/dist/data/physical.js +196 -0
- package/dist/data/physical.js.map +1 -0
- package/dist/data/pool.d.ts +2 -1
- package/dist/data/pool.d.ts.map +1 -1
- package/dist/data/pool.js +159 -31
- package/dist/data/pool.js.map +1 -1
- package/dist/data/query.d.ts +10 -1
- package/dist/data/query.d.ts.map +1 -1
- package/dist/data/query.js +136 -27
- package/dist/data/query.js.map +1 -1
- package/dist/data/sqlite.d.ts.map +1 -1
- package/dist/data/sqlite.js +350 -52
- package/dist/data/sqlite.js.map +1 -1
- package/dist/data/time.d.ts +13 -0
- package/dist/data/time.d.ts.map +1 -1
- package/dist/data/time.js +61 -17
- package/dist/data/time.js.map +1 -1
- package/dist/index.d.ts +43 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -16
- package/dist/index.js.map +1 -1
- package/dist/kernel/audit.d.ts +27 -0
- package/dist/kernel/audit.d.ts.map +1 -0
- package/dist/kernel/audit.js +67 -0
- package/dist/kernel/audit.js.map +1 -0
- package/dist/kernel/classification.d.ts +26 -0
- package/dist/kernel/classification.d.ts.map +1 -0
- package/dist/kernel/classification.js +73 -0
- package/dist/kernel/classification.js.map +1 -0
- package/dist/kernel/compose.d.ts +6 -2
- package/dist/kernel/compose.d.ts.map +1 -1
- package/dist/kernel/compose.js +269 -15
- package/dist/kernel/compose.js.map +1 -1
- package/dist/kernel/define.d.ts +2 -3
- package/dist/kernel/define.d.ts.map +1 -1
- package/dist/kernel/define.js +22 -12
- package/dist/kernel/define.js.map +1 -1
- package/dist/kernel/diff.d.ts.map +1 -1
- package/dist/kernel/diff.js +28 -4
- package/dist/kernel/diff.js.map +1 -1
- package/dist/kernel/graph.js +1 -1
- package/dist/kernel/graph.js.map +1 -1
- package/dist/kernel/i18n.d.ts +10 -1
- package/dist/kernel/i18n.d.ts.map +1 -1
- package/dist/kernel/i18n.js +34 -1
- package/dist/kernel/i18n.js.map +1 -1
- package/dist/kernel/layout.d.ts +97 -0
- package/dist/kernel/layout.d.ts.map +1 -1
- package/dist/kernel/layout.js +294 -12
- package/dist/kernel/layout.js.map +1 -1
- package/dist/kernel/menu.d.ts +33 -2
- package/dist/kernel/menu.d.ts.map +1 -1
- package/dist/kernel/menu.js +99 -7
- package/dist/kernel/menu.js.map +1 -1
- package/dist/kernel/modules.d.ts +3 -3
- package/dist/kernel/modules.d.ts.map +1 -1
- package/dist/kernel/modules.js +21 -21
- package/dist/kernel/modules.js.map +1 -1
- package/dist/kernel/permissions.d.ts +10 -0
- package/dist/kernel/permissions.d.ts.map +1 -0
- package/dist/kernel/permissions.js +365 -0
- package/dist/kernel/permissions.js.map +1 -0
- package/dist/kernel/schedule.d.ts +23 -0
- package/dist/kernel/schedule.d.ts.map +1 -0
- package/dist/kernel/schedule.js +83 -0
- package/dist/kernel/schedule.js.map +1 -0
- package/dist/kernel/types.d.ts.map +1 -1
- package/dist/kernel/types.js +5 -4
- package/dist/kernel/types.js.map +1 -1
- package/dist/kernel/workspace.d.ts +92 -14
- package/dist/kernel/workspace.d.ts.map +1 -1
- package/dist/kernel/workspace.js +128 -49
- package/dist/kernel/workspace.js.map +1 -1
- package/dist/pdf/assets/Inter-Bold.ttf +0 -0
- package/dist/pdf/assets/Inter-Regular.ttf +0 -0
- package/dist/pdf/assets/Inter-SemiBold.ttf +0 -0
- package/dist/pdf/assets/LICENSE.txt +92 -0
- package/dist/pdf/font.d.ts +10 -0
- package/dist/pdf/font.d.ts.map +1 -0
- package/dist/pdf/font.js +83 -0
- package/dist/pdf/font.js.map +1 -0
- package/dist/pdf/image.d.ts +8 -0
- package/dist/pdf/image.d.ts.map +1 -0
- package/dist/pdf/image.js +94 -0
- package/dist/pdf/image.js.map +1 -0
- package/dist/pdf/index.d.ts +15 -0
- package/dist/pdf/index.d.ts.map +1 -0
- package/dist/pdf/index.js +17 -0
- package/dist/pdf/index.js.map +1 -0
- package/dist/pdf/markup.d.ts +19 -0
- package/dist/pdf/markup.d.ts.map +1 -0
- package/dist/pdf/markup.js +146 -0
- package/dist/pdf/markup.js.map +1 -0
- package/dist/pdf/render.d.ts +14 -0
- package/dist/pdf/render.d.ts.map +1 -0
- package/dist/pdf/render.js +387 -0
- package/dist/pdf/render.js.map +1 -0
- package/dist/scaffold/index.js +6 -6
- package/dist/scaffold/index.js.map +1 -1
- package/dist/scaffold/templates/{app.test.ts.tmpl → deployment.test.ts.tmpl} +3 -3
- package/dist/scaffold/templates/ket.workspace.ts.tmpl +4 -6
- package/dist/scaffold/templates/module.ts.tmpl +1 -4
- package/dist/server/assets.d.ts +23 -0
- package/dist/server/assets.d.ts.map +1 -0
- package/dist/server/assets.js +97 -0
- package/dist/server/assets.js.map +1 -0
- package/dist/server/boot.d.ts +157 -38
- package/dist/server/boot.d.ts.map +1 -1
- package/dist/server/boot.js +360 -138
- package/dist/server/boot.js.map +1 -1
- package/dist/server/config.d.ts +30 -10
- package/dist/server/config.d.ts.map +1 -1
- package/dist/server/config.js +73 -17
- package/dist/server/config.js.map +1 -1
- package/dist/server/ctx.d.ts +10 -0
- package/dist/server/ctx.d.ts.map +1 -1
- package/dist/server/ctx.js +266 -48
- package/dist/server/ctx.js.map +1 -1
- package/dist/server/development.d.ts +10 -0
- package/dist/server/development.d.ts.map +1 -0
- package/dist/server/development.js +15 -0
- package/dist/server/development.js.map +1 -0
- package/dist/server/fn.d.ts +22 -3
- package/dist/server/fn.d.ts.map +1 -1
- package/dist/server/fn.js +116 -32
- package/dist/server/fn.js.map +1 -1
- package/dist/server/form.d.ts +33 -0
- package/dist/server/form.d.ts.map +1 -0
- package/dist/server/form.js +47 -0
- package/dist/server/form.js.map +1 -0
- package/dist/server/http.d.ts +55 -3
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +306 -22
- package/dist/server/http.js.map +1 -1
- package/dist/server/idem.d.ts +3 -2
- package/dist/server/idem.d.ts.map +1 -1
- package/dist/server/idem.js +12 -4
- package/dist/server/idem.js.map +1 -1
- package/dist/server/jobs.js +1 -1
- package/dist/server/jobs.js.map +1 -1
- package/dist/server/log/combinators.d.ts +42 -0
- package/dist/server/log/combinators.d.ts.map +1 -0
- package/dist/server/log/combinators.js +270 -0
- package/dist/server/log/combinators.js.map +1 -0
- package/dist/server/log/console.d.ts +12 -0
- package/dist/server/log/console.d.ts.map +1 -0
- package/dist/server/log/console.js +96 -0
- package/dist/server/log/console.js.map +1 -0
- package/dist/server/log/file.d.ts +11 -0
- package/dist/server/log/file.d.ts.map +1 -0
- package/dist/server/log/file.js +61 -0
- package/dist/server/log/file.js.map +1 -0
- package/dist/server/log/index.d.ts +23 -0
- package/dist/server/log/index.d.ts.map +1 -0
- package/dist/server/log/index.js +45 -0
- package/dist/server/log/index.js.map +1 -0
- package/dist/server/log/logger.d.ts +53 -0
- package/dist/server/log/logger.d.ts.map +1 -0
- package/dist/server/log/logger.js +94 -0
- package/dist/server/log/logger.js.map +1 -0
- package/dist/server/log/memory.d.ts +11 -0
- package/dist/server/log/memory.d.ts.map +1 -0
- package/dist/server/log/memory.js +25 -0
- package/dist/server/log/memory.js.map +1 -0
- package/dist/server/log/types.d.ts +112 -0
- package/dist/server/log/types.d.ts.map +1 -0
- package/dist/server/log/types.js +58 -0
- package/dist/server/log/types.js.map +1 -0
- package/dist/server/policy.d.ts +29 -0
- package/dist/server/policy.d.ts.map +1 -0
- package/dist/server/policy.js +29 -0
- package/dist/server/policy.js.map +1 -0
- package/dist/server/queue.d.ts +1 -1
- package/dist/server/queue.d.ts.map +1 -1
- package/dist/server/queue.js.map +1 -1
- package/dist/server/ratelimit.d.ts +48 -0
- package/dist/server/ratelimit.d.ts.map +1 -0
- package/dist/server/ratelimit.js +102 -0
- package/dist/server/ratelimit.js.map +1 -0
- package/dist/server/respond.d.ts.map +1 -1
- package/dist/server/respond.js +16 -1
- package/dist/server/respond.js.map +1 -1
- package/dist/server/runtime.d.ts +18 -3
- package/dist/server/runtime.d.ts.map +1 -1
- package/dist/server/runtime.js +32 -2
- package/dist/server/runtime.js.map +1 -1
- package/dist/server/schedule.d.ts +18 -0
- package/dist/server/schedule.d.ts.map +1 -0
- package/dist/server/schedule.js +70 -0
- package/dist/server/schedule.js.map +1 -0
- package/dist/server/sequence.d.ts +42 -0
- package/dist/server/sequence.d.ts.map +1 -0
- package/dist/server/sequence.js +97 -0
- package/dist/server/sequence.js.map +1 -0
- package/dist/server/session.d.ts +21 -0
- package/dist/server/session.d.ts.map +1 -1
- package/dist/server/session.js +84 -10
- package/dist/server/session.js.map +1 -1
- package/dist/server/sessionstore.d.ts +3 -1
- package/dist/server/sessionstore.d.ts.map +1 -1
- package/dist/server/sessionstore.js +7 -3
- package/dist/server/sessionstore.js.map +1 -1
- package/dist/server/storage/index.d.ts +1 -1
- package/dist/server/storage/index.d.ts.map +1 -1
- package/dist/server/storage/index.js +61 -1
- package/dist/server/storage/index.js.map +1 -1
- package/dist/server/storage/types.d.ts +8 -0
- package/dist/server/storage/types.d.ts.map +1 -1
- package/dist/server/storage/types.js +58 -0
- package/dist/server/storage/types.js.map +1 -1
- package/dist/server/tenants.d.ts +20 -18
- package/dist/server/tenants.d.ts.map +1 -1
- package/dist/server/tenants.js +133 -84
- package/dist/server/tenants.js.map +1 -1
- package/dist/server/transport/types.js +2 -2
- package/dist/server/transport/types.js.map +1 -1
- package/dist/server/worker.d.ts +19 -3
- package/dist/server/worker.d.ts.map +1 -1
- package/dist/server/worker.js +168 -21
- package/dist/server/worker.js.map +1 -1
- package/dist/testing.d.ts +26 -10
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +41 -14
- package/dist/testing.js.map +1 -1
- package/dist/theme/contracts.d.ts +14 -1
- package/dist/theme/contracts.d.ts.map +1 -1
- package/dist/theme/contracts.js +35 -6
- package/dist/theme/contracts.js.map +1 -1
- package/dist/theme/index.d.ts +1 -1
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +1 -1
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/joint-runtime.d.ts +33 -0
- package/dist/theme/joint-runtime.d.ts.map +1 -0
- package/dist/theme/joint-runtime.js +121 -0
- package/dist/theme/joint-runtime.js.map +1 -0
- package/dist/theme/joints.d.ts.map +1 -1
- package/dist/theme/joints.js +15 -97
- package/dist/theme/joints.js.map +1 -1
- package/dist/theme/ktl/compile.d.ts +4 -0
- package/dist/theme/ktl/compile.d.ts.map +1 -1
- package/dist/theme/ktl/compile.js +54 -1
- package/dist/theme/ktl/compile.js.map +1 -1
- package/dist/theme/ktl/parser.d.ts +4 -0
- package/dist/theme/ktl/parser.d.ts.map +1 -1
- package/dist/theme/ktl/parser.js +8 -0
- package/dist/theme/ktl/parser.js.map +1 -1
- package/dist/theme/render.d.ts +8 -0
- package/dist/theme/render.d.ts.map +1 -1
- package/dist/theme/render.js +88 -118
- package/dist/theme/render.js.map +1 -1
- package/dist/theme/tokens.d.ts +6 -0
- package/dist/theme/tokens.d.ts.map +1 -1
- package/dist/theme/tokens.js +6 -0
- package/dist/theme/tokens.js.map +1 -1
- package/dist/theme/viewmodel.d.ts +24 -0
- package/dist/theme/viewmodel.d.ts.map +1 -1
- package/dist/theme/viewmodel.js +75 -6
- package/dist/theme/viewmodel.js.map +1 -1
- package/dist/types.d.ts +304 -56
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -2
- package/dist/kernel/apps.d.ts +0 -43
- package/dist/kernel/apps.d.ts.map +0 -1
- package/dist/kernel/apps.js +0 -234
- 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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"}
|
package/dist/server/boot.d.ts
CHANGED
|
@@ -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 {
|
|
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
|
-
*
|
|
23
|
+
* deployment screens can read live state without reaching for module-level globals.
|
|
23
24
|
*/
|
|
24
25
|
export type ServeContext = {
|
|
25
|
-
/**
|
|
26
|
+
/** The immutable manifest selected by this deployment. */
|
|
26
27
|
manifest: Manifest;
|
|
27
|
-
/**
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
|
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
|
|
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
|
-
/**
|
|
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
|
|
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
|
|
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
|
|
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
|
|
72
|
-
*
|
|
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,12 @@ 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;
|
|
96
129
|
/** Theme region whose host carries the same data-ket-slot name. */
|
|
97
130
|
region?: string;
|
|
98
131
|
/** Message key for the title of a path that has no page. */
|
|
@@ -106,14 +139,34 @@ export type SessionResolveContext = {
|
|
|
106
139
|
url: URL;
|
|
107
140
|
req: IncomingMessage;
|
|
108
141
|
};
|
|
142
|
+
/**
|
|
143
|
+
* Identity established by infrastructure in front of the deployment.
|
|
144
|
+
*
|
|
145
|
+
* The resolver is the trust boundary: callers must verify the proxy credential
|
|
146
|
+
* (for example a short-lived signed assertion) before returning an identity.
|
|
147
|
+
* KetJS then applies the same actor, scope and permission pipeline used by a
|
|
148
|
+
* cookie session without persisting a second login session in the tenant DB.
|
|
149
|
+
*/
|
|
150
|
+
export type RequestIdentity = {
|
|
151
|
+
userId: string;
|
|
152
|
+
companies: string[];
|
|
153
|
+
company: string | null;
|
|
154
|
+
branch?: string | null;
|
|
155
|
+
branches?: string[] | null;
|
|
156
|
+
securityVersion?: number;
|
|
157
|
+
};
|
|
158
|
+
export type RequestIdentityResolveContext = {
|
|
159
|
+
adapter: Adapter;
|
|
160
|
+
manifest: Manifest;
|
|
161
|
+
url: URL;
|
|
162
|
+
req: IncomingMessage;
|
|
163
|
+
};
|
|
109
164
|
export type ServeSpec = {
|
|
110
165
|
pages?: PagesSpec;
|
|
111
166
|
assets?: {
|
|
112
167
|
prefix: string;
|
|
113
168
|
dir: string;
|
|
114
169
|
};
|
|
115
|
-
/** Installed on an empty database so a first run has something to look at. */
|
|
116
|
-
bootstrap?: string[];
|
|
117
170
|
routes?: (ctx: ServeContext) => Record<string, Route>;
|
|
118
171
|
/** Anything other than SQLite; the framework cannot depend on a driver. */
|
|
119
172
|
openStore?: OpenStore;
|
|
@@ -121,6 +174,40 @@ export type ServeSpec = {
|
|
|
121
174
|
openStorage?: OpenStorage;
|
|
122
175
|
/** Inject a deployment-owned outbound provider for durable worker jobs. */
|
|
123
176
|
openTransport?: OpenTransport;
|
|
177
|
+
/**
|
|
178
|
+
* Send operational records somewhere the framework does not know how to reach.
|
|
179
|
+
*
|
|
180
|
+
* The built-ins need nothing but Node, so anything requiring a client library
|
|
181
|
+
* belongs here rather than in the framework — the same fence as `openStore`.
|
|
182
|
+
* Level filtering, redaction and failure isolation are applied around whatever
|
|
183
|
+
* this returns, so a sink cannot break the work it is describing.
|
|
184
|
+
*
|
|
185
|
+
* Return a fresh driver per call rather than one memoised instance. A process
|
|
186
|
+
* that runs both roles — `ket dev` — opens the sink once for HTTP and once for
|
|
187
|
+
* the worker and closes each with its own role; a shared instance is closed by
|
|
188
|
+
* whichever shuts down first, and the other role's last records are written to a
|
|
189
|
+
* handle that is already gone.
|
|
190
|
+
*/
|
|
191
|
+
openLog?: OpenLog;
|
|
192
|
+
/** Version and maintenance policy published by profile bootstrap routes. */
|
|
193
|
+
clientCompatibility?: ClientCompatibilityPolicy;
|
|
194
|
+
/** Backing store for the built-in resumable stream transport. */
|
|
195
|
+
streamStore?: StreamStore;
|
|
196
|
+
/**
|
|
197
|
+
* Authorize a public stream id and map it to the exact tenant-namespaced topic
|
|
198
|
+
* used by `BootedDeployment.streams`. Absent or null keeps the endpoint closed.
|
|
199
|
+
*/
|
|
200
|
+
resolveStream?: (ctx: ServeContext, id: string, url: URL, req: IncomingMessage) => string | null | Promise<string | null>;
|
|
201
|
+
/** Maximum buffered body accepted by the generic JSON function transport. */
|
|
202
|
+
maxJsonBodyBytes?: number;
|
|
203
|
+
/**
|
|
204
|
+
* A ceiling on how often one caller may reach a route, or null for no ceiling.
|
|
205
|
+
*
|
|
206
|
+
* Per-request rather than global on purpose: a durable check costs a database
|
|
207
|
+
* round trip, so pointing it at everything hands an attacker a lever. Name the
|
|
208
|
+
* routes where repetition is the abuse.
|
|
209
|
+
*/
|
|
210
|
+
rateLimit?: (ctx: ServeContext, url: URL, req: IncomingMessage) => RatePolicy | null;
|
|
124
211
|
/**
|
|
125
212
|
* Turn on sessions. Present means the X-Ket-Company shim is gone and identity
|
|
126
213
|
* comes from a signed cookie; absent means the shim stays and the banner says so.
|
|
@@ -130,44 +217,76 @@ export type ServeSpec = {
|
|
|
130
217
|
};
|
|
131
218
|
/** Revalidate live account state and memberships before scope and permissions. */
|
|
132
219
|
resolveSession?: (ctx: SessionResolveContext) => Promise<SessionContext | null>;
|
|
220
|
+
/** Verify and resolve identity asserted by a trusted gateway for this request. */
|
|
221
|
+
resolveIdentity?: (ctx: RequestIdentityResolveContext) => Promise<RequestIdentity | null>;
|
|
222
|
+
/** Classify non-staff credentials so the generic function transport can fail closed. */
|
|
223
|
+
resolveAudience?: (url: URL, req: IncomingMessage) => string | null | Promise<string | null>;
|
|
133
224
|
/**
|
|
134
|
-
* Serve several tenants, one database each
|
|
135
|
-
* makes per-tenant module sets work. Absent, the app has a single datastore.
|
|
225
|
+
* Serve several tenants, one database each. Every tenant runs this same deployment.
|
|
136
226
|
*/
|
|
137
227
|
tenants?: TenantSpec;
|
|
138
228
|
/**
|
|
139
229
|
* Which functions a signed-in user may call. Absent means no restriction, which
|
|
140
|
-
* is what
|
|
230
|
+
* is what a deployment without roles is. Returning a list restricts every call the
|
|
141
231
|
* request makes, including the ones a route makes on its behalf.
|
|
232
|
+
*
|
|
233
|
+
* The request is handed over because answering the question almost always means
|
|
234
|
+
* asking the database, and which database that is comes from the request. A
|
|
235
|
+
* resolver that had to invent one could only reach the tenant a bare URL happens
|
|
236
|
+
* to resolve to — which is the wrong one for every tenant but the default.
|
|
142
237
|
*/
|
|
143
|
-
permissions?: (ctx: ServeContext, userId: string) => Promise<readonly string[] | null>;
|
|
238
|
+
permissions?: (ctx: ServeContext, userId: string, url: URL, req: IncomingMessage) => Promise<readonly string[] | null>;
|
|
144
239
|
defaults?: Partial<RuntimeConfig>;
|
|
145
240
|
};
|
|
146
|
-
export type
|
|
241
|
+
export type ClientCompatibilityPolicy = {
|
|
242
|
+
minimumVersions: {
|
|
243
|
+
ios: string;
|
|
244
|
+
android: string;
|
|
245
|
+
};
|
|
246
|
+
recommendedVersions?: {
|
|
247
|
+
ios: string;
|
|
248
|
+
android: string;
|
|
249
|
+
};
|
|
250
|
+
maintenance?: {
|
|
251
|
+
enabled: boolean;
|
|
252
|
+
messages?: Record<string, string>;
|
|
253
|
+
};
|
|
254
|
+
};
|
|
255
|
+
export type BootedDeployment = {
|
|
147
256
|
name: string;
|
|
148
257
|
manifest: Manifest;
|
|
149
|
-
/** The datastore, when there is exactly one. Null when the
|
|
258
|
+
/** The datastore, when there is exactly one. Null when the deployment serves tenants. */
|
|
150
259
|
adapter: Adapter | null;
|
|
151
|
-
/** Likewise: with tenants, "which apps" is a question about a tenant. */
|
|
152
|
-
apps: AppRegistry | null;
|
|
153
260
|
/** Per-tenant access, and the only form that works in both modes. */
|
|
154
261
|
tenants: Tenants;
|
|
155
262
|
config: RuntimeConfig;
|
|
263
|
+
/** Writers for the same store served by the authorized stream endpoint. */
|
|
264
|
+
streams: Streams;
|
|
265
|
+
/**
|
|
266
|
+
* This deployment's logger, carrying its name and process role.
|
|
267
|
+
*
|
|
268
|
+
* A host that calls functions in process — a seeding script, a test harness —
|
|
269
|
+
* narrows it with `child` and hands it to `callFn`, so those calls are recorded
|
|
270
|
+
* the same way a served one is instead of silently escaping the pipeline.
|
|
271
|
+
*/
|
|
272
|
+
logger: Logger;
|
|
156
273
|
port: number;
|
|
157
274
|
banner: () => Promise<string>;
|
|
158
275
|
close: () => Promise<void>;
|
|
159
276
|
};
|
|
160
|
-
export type
|
|
277
|
+
export type BootDeploymentOptions = {
|
|
161
278
|
env?: Record<string, string | undefined>;
|
|
162
279
|
port?: number;
|
|
163
280
|
/** Boot progress. Long-running serve keeps its banner separate. */
|
|
164
281
|
log?: (line: string) => void;
|
|
282
|
+
/** Redirect this process's operational records, without editing the spec. */
|
|
283
|
+
openLog?: OpenLog;
|
|
165
284
|
};
|
|
166
285
|
/**
|
|
167
|
-
* Opens, migrates,
|
|
286
|
+
* Opens, migrates, and serves. Returns before listening is announced so a
|
|
168
287
|
* caller can print its own banner, or a test can boot on port 0 and never print.
|
|
169
288
|
*/
|
|
170
|
-
export declare function
|
|
171
|
-
/**
|
|
172
|
-
export declare function
|
|
289
|
+
export declare function bootDeployment(spec: DeploymentSpec, o?: BootDeploymentOptions): Promise<BootedDeployment>;
|
|
290
|
+
/** bootDeployment, plus the banner and the signal handling a long-running process wants. */
|
|
291
|
+
export declare function serveDeployment(spec: DeploymentSpec, o?: BootDeploymentOptions): Promise<BootedDeployment>;
|
|
173
292
|
//# sourceMappingURL=boot.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/server/boot.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAkB,MAAM,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEvD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/server/boot.ts"],"names":[],"mappings":"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"}
|