@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.
- 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 +25 -1
- package/dist/data/expr.d.ts.map +1 -1
- package/dist/data/expr.js +47 -6
- 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 +45 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -18
- 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 +174 -38
- package/dist/server/boot.d.ts.map +1 -1
- package/dist/server/boot.js +399 -140
- 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 +284 -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 +82 -3
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +373 -37
- 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/stream.d.ts +8 -2
- package/dist/server/stream.d.ts.map +1 -1
- package/dist/server/stream.js +44 -4
- package/dist/server/stream.js.map +1 -1
- package/dist/server/streamstore.d.ts +10 -0
- package/dist/server/streamstore.d.ts.map +1 -1
- package/dist/server/streamstore.js +72 -6
- package/dist/server/streamstore.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 +18 -0
- package/dist/theme/tokens.d.ts.map +1 -1
- package/dist/theme/tokens.js +33 -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 +320 -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
package/dist/kernel/define.js
CHANGED
|
@@ -6,13 +6,16 @@ const MODULE_KEYS = new Set([
|
|
|
6
6
|
'name',
|
|
7
7
|
'version',
|
|
8
8
|
'depends',
|
|
9
|
+
'compatible',
|
|
9
10
|
'models',
|
|
10
11
|
'extend',
|
|
11
12
|
'joints',
|
|
12
13
|
'fills',
|
|
13
14
|
'functions',
|
|
15
|
+
'permissions',
|
|
14
16
|
'jobs',
|
|
15
17
|
'views',
|
|
18
|
+
'reports',
|
|
16
19
|
'requires',
|
|
17
20
|
'tokens',
|
|
18
21
|
'templates',
|
|
@@ -23,19 +26,16 @@ const MODULE_KEYS = new Set([
|
|
|
23
26
|
'contentTypes',
|
|
24
27
|
'taxonomies',
|
|
25
28
|
'relations',
|
|
26
|
-
'app',
|
|
27
29
|
'title',
|
|
28
30
|
'summary',
|
|
29
31
|
'category',
|
|
30
|
-
'install',
|
|
31
|
-
'autoInstall',
|
|
32
|
-
'removable',
|
|
33
32
|
'messages',
|
|
34
33
|
'omits',
|
|
35
34
|
'menus',
|
|
36
35
|
'assets',
|
|
37
36
|
'styles',
|
|
38
37
|
'routes',
|
|
38
|
+
'reserves',
|
|
39
39
|
]);
|
|
40
40
|
export function defineModule(spec) {
|
|
41
41
|
if (!spec || typeof spec !== 'object')
|
|
@@ -62,13 +62,16 @@ export function defineModule(spec) {
|
|
|
62
62
|
name: spec.name,
|
|
63
63
|
version: spec.version ?? '0.0.0',
|
|
64
64
|
depends: Object.freeze([...(spec.depends ?? [])]),
|
|
65
|
+
compatible: Object.freeze({ ...(spec.compatible ?? {}) }),
|
|
65
66
|
models: spec.models ?? {},
|
|
66
67
|
extend: spec.extend ?? {},
|
|
67
68
|
joints: spec.joints ?? {},
|
|
68
69
|
fills: spec.fills ?? {},
|
|
69
70
|
functions: spec.functions ?? {},
|
|
71
|
+
permissions: spec.permissions ?? null,
|
|
70
72
|
jobs: spec.jobs ?? {},
|
|
71
73
|
views: spec.views ?? {},
|
|
74
|
+
reports: spec.reports ?? {},
|
|
72
75
|
requires: Object.freeze([...(spec.requires ?? [])]),
|
|
73
76
|
tokens: spec.tokens ?? {},
|
|
74
77
|
templates: spec.templates ?? {},
|
|
@@ -76,6 +79,7 @@ export function defineModule(spec) {
|
|
|
76
79
|
assets: spec.assets ?? null,
|
|
77
80
|
styles: Object.freeze([...(spec.styles ?? [])]),
|
|
78
81
|
routes: spec.routes ?? {},
|
|
82
|
+
reserves: Object.freeze([...(spec.reserves ?? [])]),
|
|
79
83
|
menus: spec.menus ?? {},
|
|
80
84
|
omits: Object.freeze([...(spec.omits ?? [])]),
|
|
81
85
|
islands: spec.islands ?? {},
|
|
@@ -83,32 +87,30 @@ export function defineModule(spec) {
|
|
|
83
87
|
contentTypes: spec.contentTypes ?? {},
|
|
84
88
|
taxonomies: spec.taxonomies ?? {},
|
|
85
89
|
relations: spec.relations ?? {},
|
|
86
|
-
app: spec.app === true,
|
|
87
90
|
title: spec.title ?? spec.name,
|
|
88
91
|
summary: spec.summary ?? '',
|
|
89
92
|
category: spec.category ?? 'Khác',
|
|
90
|
-
install: spec.install ?? (spec.autoInstall === true ? 'auto' : 'manual'),
|
|
91
|
-
removable: spec.removable !== false,
|
|
92
93
|
messages: spec.messages ?? {},
|
|
93
94
|
});
|
|
94
95
|
}
|
|
95
96
|
// A theme is a module with a restricted role. It may provide templates, fill
|
|
96
97
|
// joints and declare tokens; it may NOT declare models, extend models, or register
|
|
97
|
-
// server functions. Third-party themes are only safe to
|
|
98
|
+
// server functions. Third-party themes are only safe to compose because this
|
|
98
99
|
// restriction is enforced here rather than left to convention.
|
|
99
100
|
const THEME_FORBIDDEN = [
|
|
100
101
|
'models',
|
|
101
102
|
'extend',
|
|
102
103
|
'functions',
|
|
104
|
+
'permissions',
|
|
103
105
|
'jobs',
|
|
104
106
|
'islands',
|
|
105
107
|
'contentTypes',
|
|
106
108
|
'taxonomies',
|
|
109
|
+
'reports',
|
|
107
110
|
];
|
|
108
111
|
/**
|
|
109
|
-
* A theme
|
|
110
|
-
*
|
|
111
|
-
* own category: a theme nobody can switch on is a theme nobody can use.
|
|
112
|
+
* A theme follows the same module contract, with additional restrictions because
|
|
113
|
+
* its templates render untrusted content inside the deployment.
|
|
112
114
|
*/
|
|
113
115
|
export function defineTheme(spec) {
|
|
114
116
|
// Assets and styles a theme may ship — that is most of what a theme *is*. Routes
|
|
@@ -122,6 +124,14 @@ export function defineTheme(spec) {
|
|
|
122
124
|
hint: 'a route is server code; a theme may ship assets and styles, and place an island for behaviour',
|
|
123
125
|
});
|
|
124
126
|
}
|
|
127
|
+
if (spec.reserves?.length) {
|
|
128
|
+
throw new KetError({
|
|
129
|
+
code: 'E_THEME_OVERREACH',
|
|
130
|
+
module: spec.name,
|
|
131
|
+
message: `theme "${spec.name}" reserves server route prefixes, which themes are not allowed to do`,
|
|
132
|
+
hint: 'move the route contract into a module',
|
|
133
|
+
});
|
|
134
|
+
}
|
|
125
135
|
for (const k of THEME_FORBIDDEN) {
|
|
126
136
|
const v = spec[k];
|
|
127
137
|
if (v && Object.keys(v).length > 0) {
|
|
@@ -135,6 +145,6 @@ export function defineTheme(spec) {
|
|
|
135
145
|
});
|
|
136
146
|
}
|
|
137
147
|
}
|
|
138
|
-
return defineModule({
|
|
148
|
+
return defineModule({ category: 'Giao diện', ...spec, kind: 'theme' });
|
|
139
149
|
}
|
|
140
150
|
//# sourceMappingURL=define.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/kernel/define.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,iFAAiF;AACjF,wCAAwC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAGtC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,MAAM;IACN,SAAS;IACT,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,WAAW;IACX,MAAM;IACN,OAAO;IACP,UAAU;IACV,QAAQ;IACR,WAAW;IACX,UAAU;IACV,MAAM;IACN,SAAS;IACT,UAAU;IACV,cAAc;IACd,YAAY;IACZ,WAAW;IACX,
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/kernel/define.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/kernel/diff.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAA;AACpD,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3F,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,GAAG,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/kernel/diff.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAA;AACpD,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3F,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,GAAG,QAAQ,EAAE,CA+N3E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CASpD"}
|
package/dist/kernel/diff.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Upgrade diff — the thing
|
|
1
|
+
// Upgrade diff — the thing the domain contract, WordPress and Shopify structurally cannot do.
|
|
2
2
|
//
|
|
3
3
|
// Because the manifest records every joint, field and signature with provenance,
|
|
4
4
|
// two manifests can be compared and every downstream breakage named BEFORE deploy
|
|
@@ -10,15 +10,18 @@ export function diffManifests(before, after) {
|
|
|
10
10
|
if (after.joints[key])
|
|
11
11
|
continue;
|
|
12
12
|
const users = after.fills.filter((f) => f.joint === key).map((f) => f.by);
|
|
13
|
-
push('breaking', 'JOINT_REMOVED', `joint "${key}" was removed`, users.length
|
|
14
|
-
? `still filled by: ${users.join(', ')}`
|
|
15
|
-
: 'no installed module fills it - safe to proceed');
|
|
13
|
+
push('breaking', 'JOINT_REMOVED', `joint "${key}" was removed`, users.length ? `still filled by: ${users.join(', ')}` : 'no composed module fills it - safe to proceed');
|
|
16
14
|
}
|
|
17
15
|
for (const [mkey, bmodel] of Object.entries(before.models)) {
|
|
18
16
|
const amodel = after.models[mkey];
|
|
19
17
|
if (amodel && amodel.scope !== bmodel.scope) {
|
|
20
18
|
push('breaking', 'MODEL_SCOPE_CHANGED', `model "${mkey}" moved from ${bmodel.scope} to ${amodel.scope}`, 'existing rows carry the old shape; widening leaks and narrowing hides data');
|
|
21
19
|
}
|
|
20
|
+
if (amodel && Boolean(amodel.append) !== Boolean(bmodel.append)) {
|
|
21
|
+
push('risky', 'MODEL_APPEND_CHANGED', `model "${mkey}" is ${amodel.append ? 'now' : 'no longer'} append-only`, amodel.append
|
|
22
|
+
? 'code that updated these rows will now be refused at runtime'
|
|
23
|
+
: 'a record whose value was that it never changed can now be edited');
|
|
24
|
+
}
|
|
22
25
|
if (!amodel) {
|
|
23
26
|
const extenders = new Set(Object.values(bmodel.fields)
|
|
24
27
|
.filter((f) => f.by !== bmodel.owner)
|
|
@@ -42,6 +45,16 @@ export function diffManifests(before, after) {
|
|
|
42
45
|
else if (f.optional && !af.optional) {
|
|
43
46
|
push('risky', 'FIELD_NOW_REQUIRED', `field "${mkey}.${fname}" became required`, 'existing NULL rows violate it - backfill first');
|
|
44
47
|
}
|
|
48
|
+
else if (Boolean(f.sensitive) !== Boolean(af.sensitive)) {
|
|
49
|
+
push('risky', 'FIELD_SENSITIVITY_CHANGED', `field "${mkey}.${fname}" is ${af.sensitive ? 'now' : 'no longer'} sensitive`, af.sensitive
|
|
50
|
+
? 'values already written to write records and idempotency rows are not masked retroactively'
|
|
51
|
+
: 'its values will now reach write records, the agent descriptor and dry-run previews');
|
|
52
|
+
}
|
|
53
|
+
else if (Boolean(f.personal) !== Boolean(af.personal)) {
|
|
54
|
+
push('risky', 'FIELD_CLASSIFICATION_CHANGED', `field "${mkey}.${fname}" is ${af.personal ? 'now' : 'no longer'} personal data`, af.personal
|
|
55
|
+
? 'existing rows are in scope for export and erasure from this version on'
|
|
56
|
+
: 'check that the obligation really ended rather than the declaration being dropped');
|
|
57
|
+
}
|
|
45
58
|
}
|
|
46
59
|
}
|
|
47
60
|
for (const [fkey, bfn] of Object.entries(before.functions)) {
|
|
@@ -84,6 +97,17 @@ export function diffManifests(before, after) {
|
|
|
84
97
|
if (job.queue !== next.queue)
|
|
85
98
|
push('risky', 'JOB_QUEUE_CHANGED', `"${key}" moved from queue "${job.queue}" to "${next.queue}"`, `existing records remain in "${job.queue}" until drained or retried`);
|
|
86
99
|
}
|
|
100
|
+
for (const [key, report] of Object.entries(before.reports ?? {})) {
|
|
101
|
+
const next = after.reports?.[key];
|
|
102
|
+
if (!next) {
|
|
103
|
+
push('breaking', 'REPORT_REMOVED', `report "${key}" was removed`, 'saved templates and print actions no longer resolve');
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
if (report.target !== next.target)
|
|
107
|
+
push('breaking', 'REPORT_TARGET_CHANGED', `report "${key}" moved from ${report.target} to ${next.target}`);
|
|
108
|
+
if (report.source !== next.source)
|
|
109
|
+
push('risky', 'REPORT_SOURCE_CHANGED', `report "${key}" changed source from ${report.source} to ${next.source}`);
|
|
110
|
+
}
|
|
87
111
|
for (const r of Object.keys(before.regions.provided)) {
|
|
88
112
|
if (!after.regions.provided[r] && after.regions.required.includes(r)) {
|
|
89
113
|
push('breaking', 'REGION_LOST', `region "${r}" is no longer provided by any theme`);
|
package/dist/kernel/diff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/kernel/diff.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/kernel/diff.ts"],"names":[],"mappings":"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"}
|
package/dist/kernel/graph.js
CHANGED
|
@@ -19,7 +19,7 @@ export function topoSort(modules) {
|
|
|
19
19
|
code: 'E_MISSING_DEPENDENCY',
|
|
20
20
|
module: m.name,
|
|
21
21
|
message: `module "${m.name}" depends on "${d}", which is not installed`,
|
|
22
|
-
hint: `add "${d}" to the
|
|
22
|
+
hint: `add "${d}" to the deployment module list, or remove it from ${m.name}.depends`,
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
25
|
}
|
package/dist/kernel/graph.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/kernel/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAGtC,MAAM,UAAU,QAAQ,CAAC,OAAoB;IAC3C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAA;IAC3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,QAAQ,CAAC;gBACjB,IAAI,EAAE,qBAAqB;gBAC3B,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,OAAO,EAAE,kCAAkC,MAAM,CAAC,IAAI,GAAG;gBACzD,IAAI,EAAE,kFAAkF;aACzF,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACjC,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,MAAM,IAAI,QAAQ,CAAC;oBACjB,IAAI,EAAE,sBAAsB;oBAC5B,MAAM,EAAE,CAAC,CAAC,IAAI;oBACd,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,iBAAiB,CAAC,2BAA2B;oBACvE,IAAI,EAAE,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/kernel/graph.ts"],"names":[],"mappings":"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"}
|
package/dist/kernel/i18n.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export type TranslateOptions = {
|
|
|
13
13
|
* Conventionally bound to `_`, after gettext:
|
|
14
14
|
*
|
|
15
15
|
* const _ = translator(manifest, locale)
|
|
16
|
-
* _('backend.
|
|
16
|
+
* _('backend.pages.title')
|
|
17
17
|
* _('shop.cart', { count: 5 })
|
|
18
18
|
*/
|
|
19
19
|
export type Translator = {
|
|
@@ -36,6 +36,15 @@ export type Translator = {
|
|
|
36
36
|
* breaks on the longer.
|
|
37
37
|
*/
|
|
38
38
|
export declare const PSEUDO_LOCALE = "qps";
|
|
39
|
+
/**
|
|
40
|
+
* A shared date/time formatter for server rendering and timezone calculations.
|
|
41
|
+
*
|
|
42
|
+
* ECMA-402 formatters are immutable after construction, expensive to create and
|
|
43
|
+
* cheap to reuse. Canonicalizing the option entries means callers get the same
|
|
44
|
+
* formatter even when equivalent object literals list their properties in a
|
|
45
|
+
* different order.
|
|
46
|
+
*/
|
|
47
|
+
export declare function dateTimeFormatter(locale: string, options?: Intl.DateTimeFormatOptions): Intl.DateTimeFormat;
|
|
39
48
|
export declare function translator(manifest: Manifest, locale: string, o?: TranslateOptions): Translator;
|
|
40
49
|
/** Which keys each locale is missing, measured against the union of all of them. */
|
|
41
50
|
export declare function missingMessages(manifest: Manifest, locales?: string[]): Record<string, string[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/kernel/i18n.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,gEAAgE;AAChE,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAA;AAC3E,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAC7C,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE9C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oFAAoF;IACpF,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CAClD,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAA;IACvD,MAAM,EAAE,MAAM,CAAA;IACd,0EAA0E;IAC1E,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAC/B,CAAA;AAID;;;;;GAKG;AACH,eAAO,MAAM,aAAa,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/kernel/i18n.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,gEAAgE;AAChE,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAA;AAC3E,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAC7C,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE9C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oFAAoF;IACpF,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CAClD,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAA;IACvD,MAAM,EAAE,MAAM,CAAA;IACd,0EAA0E;IAC1E,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAC/B,CAAA;AAID;;;;;GAKG;AACH,eAAO,MAAM,aAAa,QAAQ,CAAA;AAyBlC;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,IAAI,CAAC,qBAA0B,GACvC,IAAI,CAAC,cAAc,CASrB;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAE,gBAAqB,GAAG,UAAU,CAkCnG;AAED,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAahG;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAMvE"}
|
package/dist/kernel/i18n.js
CHANGED
|
@@ -17,12 +17,45 @@ const PLACEHOLDER = /\{(\w+)\}/g;
|
|
|
17
17
|
*/
|
|
18
18
|
export const PSEUDO_LOCALE = 'qps';
|
|
19
19
|
const pseudo = (s) => `⟦${s.replace(/[aeiouAEIOU]/g, (c) => c + c.toLowerCase())}⟧`;
|
|
20
|
+
const pluralRulesByLocale = new Map();
|
|
21
|
+
const dateTimeFormats = new Map();
|
|
22
|
+
const intlLocale = (locale) => (locale === PSEUDO_LOCALE ? 'en' : locale);
|
|
23
|
+
const pluralRulesFor = (locale) => {
|
|
24
|
+
const key = intlLocale(locale);
|
|
25
|
+
let rules = pluralRulesByLocale.get(key);
|
|
26
|
+
if (!rules) {
|
|
27
|
+
rules = new Intl.PluralRules(key);
|
|
28
|
+
pluralRulesByLocale.set(key, rules);
|
|
29
|
+
}
|
|
30
|
+
return rules;
|
|
31
|
+
};
|
|
32
|
+
const dateTimeOptionsKey = (options) => JSON.stringify(Object.entries(options)
|
|
33
|
+
.filter(([, value]) => value !== undefined)
|
|
34
|
+
.sort(([left], [right]) => left.localeCompare(right)));
|
|
35
|
+
/**
|
|
36
|
+
* A shared date/time formatter for server rendering and timezone calculations.
|
|
37
|
+
*
|
|
38
|
+
* ECMA-402 formatters are immutable after construction, expensive to create and
|
|
39
|
+
* cheap to reuse. Canonicalizing the option entries means callers get the same
|
|
40
|
+
* formatter even when equivalent object literals list their properties in a
|
|
41
|
+
* different order.
|
|
42
|
+
*/
|
|
43
|
+
export function dateTimeFormatter(locale, options = {}) {
|
|
44
|
+
const resolvedLocale = intlLocale(locale);
|
|
45
|
+
const key = `${resolvedLocale}\0${dateTimeOptionsKey(options)}`;
|
|
46
|
+
let formatter = dateTimeFormats.get(key);
|
|
47
|
+
if (!formatter) {
|
|
48
|
+
formatter = new Intl.DateTimeFormat(resolvedLocale, options);
|
|
49
|
+
dateTimeFormats.set(key, formatter);
|
|
50
|
+
}
|
|
51
|
+
return formatter;
|
|
52
|
+
}
|
|
20
53
|
export function translator(manifest, locale, o = {}) {
|
|
21
54
|
const fallback = o.fallback ?? 'vi';
|
|
22
55
|
const catalogs = manifest.messages ?? {};
|
|
23
56
|
const primary = catalogs[locale] ?? {};
|
|
24
57
|
const secondary = catalogs[fallback] ?? {};
|
|
25
|
-
const plural =
|
|
58
|
+
const plural = pluralRulesFor(locale);
|
|
26
59
|
const resolve = (key) => {
|
|
27
60
|
if (key in primary)
|
|
28
61
|
return { message: primary[key], exact: true };
|
package/dist/kernel/i18n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/kernel/i18n.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,8EAA8E;AAC9E,iFAAiF;AACjF,kFAAkF;AAClF,qCAAqC;AACrC,EAAE;AACF,gFAAgF;AAChF,iFAAiF;AACjF,2EAA2E;AAqC3E,MAAM,WAAW,GAAG,YAAY,CAAA;AAEhC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAA;AAClC,MAAM,MAAM,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAA;AAEnG,MAAM,
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/kernel/i18n.ts"],"names":[],"mappings":"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"}
|
package/dist/kernel/layout.d.ts
CHANGED
|
@@ -2,16 +2,113 @@ import type { Manifest } from '../types.ts';
|
|
|
2
2
|
export type Placement = {
|
|
3
3
|
type: string;
|
|
4
4
|
settings?: Record<string, unknown>;
|
|
5
|
+
/**
|
|
6
|
+
* Stable identity, assigned on save. Optional on the way in - a caller may
|
|
7
|
+
* omit it and be given one - and present on everything that has been stored.
|
|
8
|
+
*/
|
|
9
|
+
id?: string;
|
|
10
|
+
/** Sections this one holds, by the slot name its type declares. */
|
|
11
|
+
slots?: Record<string, Placement[]>;
|
|
5
12
|
};
|
|
6
13
|
export type LayoutError = {
|
|
14
|
+
/** Index within the parent's list. Kept for callers written before nesting. */
|
|
7
15
|
at: number;
|
|
8
16
|
type: string;
|
|
9
17
|
field?: string;
|
|
18
|
+
/** Where in the tree, as `index.slot.index`. Absent at the top level. */
|
|
19
|
+
path?: string;
|
|
10
20
|
message: string;
|
|
11
21
|
};
|
|
22
|
+
/** A page is a page, not a filesystem: deep enough for real work, and bounded. */
|
|
23
|
+
export declare const MAX_LAYOUT_DEPTH = 6;
|
|
24
|
+
/**
|
|
25
|
+
* Nodes in the whole tree, not placements at the top.
|
|
26
|
+
*
|
|
27
|
+
* The old ceiling was a hundred top-level placements. Counting the tree instead
|
|
28
|
+
* keeps the same number honest: without it, a hundred containers each holding a
|
|
29
|
+
* hundred children would pass a check that was written to bound a page.
|
|
30
|
+
*/
|
|
31
|
+
export declare const MAX_LAYOUT_NODES = 100;
|
|
32
|
+
/** Every placement in the tree, parents before children. */
|
|
33
|
+
export declare const walkPlacements: (layout: readonly Placement[], path?: string) => Generator<{
|
|
34
|
+
placement: Placement;
|
|
35
|
+
at: number;
|
|
36
|
+
path: string;
|
|
37
|
+
}>;
|
|
38
|
+
export declare const countPlacements: (layout: readonly Placement[]) => number;
|
|
12
39
|
export declare function validateLayout(manifest: Manifest, layout: unknown): {
|
|
13
40
|
ok: boolean;
|
|
14
41
|
errors: LayoutError[];
|
|
15
42
|
};
|
|
16
43
|
export declare const formatLayoutErrors: (errors: LayoutError[]) => string;
|
|
44
|
+
/** A placement id is opaque, but it has to survive a round trip through JSON. */
|
|
45
|
+
export declare const isPlacementId: (value: unknown) => value is string;
|
|
46
|
+
export type IdentifiedPlacement = Placement & {
|
|
47
|
+
id: string;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Give every placement in the tree an id, deriving one only where none exists.
|
|
51
|
+
*
|
|
52
|
+
* Derived from the content, not the position, and disambiguated by how many
|
|
53
|
+
* identical placements came before it. Deriving from the index instead would
|
|
54
|
+
* mean that the first save after a reorder - the one that turns legacy content
|
|
55
|
+
* into identified content - renamed everything it touched, which is precisely
|
|
56
|
+
* the case the id exists to distinguish.
|
|
57
|
+
*
|
|
58
|
+
* A subtree is part of what a container says, so the derivation walks children
|
|
59
|
+
* first and folds their ids in: two containers holding different things are
|
|
60
|
+
* different containers, even when their own settings match.
|
|
61
|
+
*
|
|
62
|
+
* An id already present is never replaced, so identity survives every later
|
|
63
|
+
* save regardless of what this function would have derived.
|
|
64
|
+
*/
|
|
65
|
+
export declare const withPlacementIds: (layout: readonly Placement[], digest: (input: string) => string, seen?: Map<string, number>) => IdentifiedPlacement[];
|
|
66
|
+
/** Ids a layout cannot have: malformed, or the same one twice anywhere in it. */
|
|
67
|
+
export declare const placementIdErrors: (layout: readonly Placement[]) => LayoutError[];
|
|
68
|
+
export type PlacementChange = {
|
|
69
|
+
id: string;
|
|
70
|
+
type: string;
|
|
71
|
+
change: 'added';
|
|
72
|
+
at: number;
|
|
73
|
+
path: string;
|
|
74
|
+
} | {
|
|
75
|
+
id: string;
|
|
76
|
+
type: string;
|
|
77
|
+
change: 'removed';
|
|
78
|
+
at: number;
|
|
79
|
+
path: string;
|
|
80
|
+
} | {
|
|
81
|
+
id: string;
|
|
82
|
+
type: string;
|
|
83
|
+
change: 'moved';
|
|
84
|
+
from: string;
|
|
85
|
+
at: number;
|
|
86
|
+
path: string;
|
|
87
|
+
} | {
|
|
88
|
+
id: string;
|
|
89
|
+
type: string;
|
|
90
|
+
change: 'settings';
|
|
91
|
+
at: number;
|
|
92
|
+
path: string;
|
|
93
|
+
fields: string[];
|
|
94
|
+
} | {
|
|
95
|
+
id: string;
|
|
96
|
+
type: string;
|
|
97
|
+
change: 'retyped';
|
|
98
|
+
at: number;
|
|
99
|
+
path: string;
|
|
100
|
+
from: string;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* What changed between two layouts, said per placement rather than per index.
|
|
104
|
+
*
|
|
105
|
+
* The walk is the whole tree, so a setting changed six levels down is reported
|
|
106
|
+
* on the node that changed. Comparing only the top level would have folded a
|
|
107
|
+
* subtree edit into "the container's settings are the same" and said nothing.
|
|
108
|
+
*
|
|
109
|
+
* Only placements carrying ids can be compared this way. Anything without one
|
|
110
|
+
* is reported as removed and added, which is the truthful answer: with no id
|
|
111
|
+
* there is no evidence the two are the same section.
|
|
112
|
+
*/
|
|
113
|
+
export declare const diffPlacements: (before: readonly Placement[], after: readonly Placement[]) => PlacementChange[];
|
|
17
114
|
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/kernel/layout.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/kernel/layout.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAW,MAAM,aAAa,CAAA;AAEpD,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,+EAA+E;IAC/E,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,IAAI,CAAA;AAEjC;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,MAAM,CAAA;AAoBnC,4DAA4D;AAC5D,eAAO,MAAM,cAAc,WACjB,SAAS,SAAS,EAAE,oBAE3B,SAAS,CAAC;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAQ9D,CAAA;AAED,eAAO,MAAM,eAAe,WAAY,SAAS,SAAS,EAAE,KAAG,MAI9D,CAAA;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,CAiB1G;AAsID,eAAO,MAAM,kBAAkB,WAAY,WAAW,EAAE,KAAG,MACkD,CAAA;AA2B7G,iFAAiF;AACjF,eAAO,MAAM,aAAa,UAAW,OAAO,KAAG,KAAK,IAAI,MACU,CAAA;AAElE,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAE5D;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB,WACnB,SAAS,SAAS,EAAE,UACpB,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,SAC3B,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KACxB,mBAAmB,EAgBlB,CAAA;AAEJ,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,WAAY,SAAS,SAAS,EAAE,KAAG,WAAW,EAgC3E,CAAA;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrF;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,GAC5F;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAS3F;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,WACjB,SAAS,SAAS,EAAE,SACrB,SAAS,SAAS,EAAE,KAC1B,eAAe,EA+DjB,CAAA"}
|