@adminiumjs/meta 0.2.1 → 0.2.2
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/dist/bootstrap.d.ts +10 -2
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +12 -3
- package/dist/bootstrap.js.map +1 -1
- package/dist/columns.d.ts.map +1 -1
- package/dist/columns.js +1 -0
- package/dist/columns.js.map +1 -1
- package/dist/connect.d.ts.map +1 -1
- package/dist/connect.js +1 -0
- package/dist/connect.js.map +1 -1
- package/dist/ids.d.ts +4 -0
- package/dist/ids.d.ts.map +1 -1
- package/dist/ids.js +8 -0
- package/dist/ids.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/migrate-lock.d.ts +104 -0
- package/dist/migrate-lock.d.ts.map +1 -0
- package/dist/migrate-lock.js +197 -0
- package/dist/migrate-lock.js.map +1 -0
- package/dist/migrations/0001_core_auth.d.ts.map +1 -1
- package/dist/migrations/0001_core_auth.js +1 -0
- package/dist/migrations/0001_core_auth.js.map +1 -1
- package/dist/migrations/0002_rbac.d.ts.map +1 -1
- package/dist/migrations/0002_rbac.js +1 -0
- package/dist/migrations/0002_rbac.js.map +1 -1
- package/dist/migrations/0003_connections_schema.d.ts.map +1 -1
- package/dist/migrations/0003_connections_schema.js +1 -0
- package/dist/migrations/0003_connections_schema.js.map +1 -1
- package/dist/migrations/0004_pages_views.d.ts.map +1 -1
- package/dist/migrations/0004_pages_views.js +1 -0
- package/dist/migrations/0004_pages_views.js.map +1 -1
- package/dist/migrations/0005_ops.d.ts.map +1 -1
- package/dist/migrations/0005_ops.js +1 -0
- package/dist/migrations/0005_ops.js.map +1 -1
- package/dist/migrations/0006_platform.d.ts.map +1 -1
- package/dist/migrations/0006_platform.js +1 -0
- package/dist/migrations/0006_platform.js.map +1 -1
- package/dist/migrations/0007_llm_runs.d.ts.map +1 -1
- package/dist/migrations/0007_llm_runs.js +1 -0
- package/dist/migrations/0007_llm_runs.js.map +1 -1
- package/dist/migrations/0008_llm_overrides.d.ts.map +1 -1
- package/dist/migrations/0008_llm_overrides.js +1 -0
- package/dist/migrations/0008_llm_overrides.js.map +1 -1
- package/dist/migrations/0009_views_kind.d.ts.map +1 -1
- package/dist/migrations/0009_views_kind.js +1 -0
- package/dist/migrations/0009_views_kind.js.map +1 -1
- package/dist/migrations/0010_llm_prompt_version_width.d.ts.map +1 -1
- package/dist/migrations/0010_llm_prompt_version_width.js +1 -0
- package/dist/migrations/0010_llm_prompt_version_width.js.map +1 -1
- package/dist/migrations/0011_i18n_runtime.d.ts.map +1 -1
- package/dist/migrations/0011_i18n_runtime.js +1 -0
- package/dist/migrations/0011_i18n_runtime.js.map +1 -1
- package/dist/migrations/0012_locale_width.d.ts.map +1 -1
- package/dist/migrations/0012_locale_width.js +1 -0
- package/dist/migrations/0012_locale_width.js.map +1 -1
- package/dist/migrations/0013_connection_last_error_hint.d.ts +17 -0
- package/dist/migrations/0013_connection_last_error_hint.d.ts.map +1 -0
- package/dist/migrations/0013_connection_last_error_hint.js +22 -0
- package/dist/migrations/0013_connection_last_error_hint.js.map +1 -0
- package/dist/migrations/0014_public_surface.d.ts +40 -0
- package/dist/migrations/0014_public_surface.d.ts.map +1 -0
- package/dist/migrations/0014_public_surface.js +186 -0
- package/dist/migrations/0014_public_surface.js.map +1 -0
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +5 -0
- package/dist/migrations/index.js.map +1 -1
- package/dist/migrator.d.ts +22 -3
- package/dist/migrator.d.ts.map +1 -1
- package/dist/migrator.js +27 -6
- package/dist/migrator.js.map +1 -1
- package/dist/prefix.d.ts.map +1 -1
- package/dist/prefix.js +1 -0
- package/dist/prefix.js.map +1 -1
- package/dist/relocate.d.ts +118 -0
- package/dist/relocate.d.ts.map +1 -0
- package/dist/relocate.js +376 -0
- package/dist/relocate.js.map +1 -0
- package/dist/repos/api-keys.d.ts.map +1 -1
- package/dist/repos/api-keys.js +1 -0
- package/dist/repos/api-keys.js.map +1 -1
- package/dist/repos/audit.d.ts.map +1 -1
- package/dist/repos/audit.js +1 -0
- package/dist/repos/audit.js.map +1 -1
- package/dist/repos/connections.d.ts +5 -0
- package/dist/repos/connections.d.ts.map +1 -1
- package/dist/repos/connections.js +8 -0
- package/dist/repos/connections.js.map +1 -1
- package/dist/repos/email-templates.d.ts.map +1 -1
- package/dist/repos/email-templates.js +1 -0
- package/dist/repos/email-templates.js.map +1 -1
- package/dist/repos/exports.d.ts.map +1 -1
- package/dist/repos/exports.js +1 -0
- package/dist/repos/exports.js.map +1 -1
- package/dist/repos/files.d.ts.map +1 -1
- package/dist/repos/files.js +1 -0
- package/dist/repos/files.js.map +1 -1
- package/dist/repos/i18n-version.d.ts.map +1 -1
- package/dist/repos/i18n-version.js +1 -0
- package/dist/repos/i18n-version.js.map +1 -1
- package/dist/repos/imports.d.ts.map +1 -1
- package/dist/repos/imports.js +1 -0
- package/dist/repos/imports.js.map +1 -1
- package/dist/repos/index.d.ts +1 -0
- package/dist/repos/index.d.ts.map +1 -1
- package/dist/repos/index.js +2 -0
- package/dist/repos/index.js.map +1 -1
- package/dist/repos/jobs.d.ts.map +1 -1
- package/dist/repos/jobs.js +1 -0
- package/dist/repos/jobs.js.map +1 -1
- package/dist/repos/llm-overrides.d.ts.map +1 -1
- package/dist/repos/llm-overrides.js +1 -0
- package/dist/repos/llm-overrides.js.map +1 -1
- package/dist/repos/llm-runs.d.ts.map +1 -1
- package/dist/repos/llm-runs.js +1 -0
- package/dist/repos/llm-runs.js.map +1 -1
- package/dist/repos/locales.d.ts.map +1 -1
- package/dist/repos/locales.js +1 -0
- package/dist/repos/locales.js.map +1 -1
- package/dist/repos/notification-prefs.d.ts.map +1 -1
- package/dist/repos/notification-prefs.js +1 -0
- package/dist/repos/notification-prefs.js.map +1 -1
- package/dist/repos/notifications.d.ts.map +1 -1
- package/dist/repos/notifications.js +1 -0
- package/dist/repos/notifications.js.map +1 -1
- package/dist/repos/overrides.d.ts.map +1 -1
- package/dist/repos/overrides.js +1 -0
- package/dist/repos/overrides.js.map +1 -1
- package/dist/repos/pages.d.ts +147 -1
- package/dist/repos/pages.d.ts.map +1 -1
- package/dist/repos/pages.js +318 -23
- package/dist/repos/pages.js.map +1 -1
- package/dist/repos/password-resets.d.ts.map +1 -1
- package/dist/repos/password-resets.js +1 -0
- package/dist/repos/password-resets.js.map +1 -1
- package/dist/repos/permissions.d.ts +15 -0
- package/dist/repos/permissions.d.ts.map +1 -1
- package/dist/repos/permissions.js +39 -0
- package/dist/repos/permissions.js.map +1 -1
- package/dist/repos/public-api.d.ts +116 -0
- package/dist/repos/public-api.d.ts.map +1 -0
- package/dist/repos/public-api.js +249 -0
- package/dist/repos/public-api.js.map +1 -0
- package/dist/repos/roles.d.ts.map +1 -1
- package/dist/repos/roles.js +1 -0
- package/dist/repos/roles.js.map +1 -1
- package/dist/repos/scheduled-reports.d.ts.map +1 -1
- package/dist/repos/scheduled-reports.js +1 -0
- package/dist/repos/scheduled-reports.js.map +1 -1
- package/dist/repos/sessions.d.ts +9 -0
- package/dist/repos/sessions.d.ts.map +1 -1
- package/dist/repos/sessions.js +26 -0
- package/dist/repos/sessions.js.map +1 -1
- package/dist/repos/settings.d.ts.map +1 -1
- package/dist/repos/settings.js +1 -0
- package/dist/repos/settings.js.map +1 -1
- package/dist/repos/snapshots.d.ts.map +1 -1
- package/dist/repos/snapshots.js +1 -0
- package/dist/repos/snapshots.js.map +1 -1
- package/dist/repos/translations.d.ts.map +1 -1
- package/dist/repos/translations.js +1 -0
- package/dist/repos/translations.js.map +1 -1
- package/dist/repos/user-prefs.d.ts.map +1 -1
- package/dist/repos/user-prefs.js +1 -0
- package/dist/repos/user-prefs.js.map +1 -1
- package/dist/repos/users.d.ts +31 -0
- package/dist/repos/users.d.ts.map +1 -1
- package/dist/repos/users.js +80 -4
- package/dist/repos/users.js.map +1 -1
- package/dist/repos/util.d.ts.map +1 -1
- package/dist/repos/util.js +1 -0
- package/dist/repos/util.js.map +1 -1
- package/dist/repos/views.d.ts.map +1 -1
- package/dist/repos/views.js +1 -0
- package/dist/repos/views.js.map +1 -1
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +1 -0
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/json-payloads.d.ts +2 -1
- package/dist/schema/json-payloads.d.ts.map +1 -1
- package/dist/schema/json-payloads.js +7 -0
- package/dist/schema/json-payloads.js.map +1 -1
- package/dist/schema/settings-registry.d.ts +45 -0
- package/dist/schema/settings-registry.d.ts.map +1 -1
- package/dist/schema/settings-registry.js +60 -0
- package/dist/schema/settings-registry.js.map +1 -1
- package/dist/schema/tables.d.ts +91 -1
- package/dist/schema/tables.d.ts.map +1 -1
- package/dist/schema/tables.js +5 -0
- package/dist/schema/tables.js.map +1 -1
- package/package.json +2 -2
package/dist/repos/pages.d.ts
CHANGED
|
@@ -59,6 +59,51 @@ export interface PageNavRow {
|
|
|
59
59
|
isEnabled: boolean | 0 | 1;
|
|
60
60
|
updatedAt: number;
|
|
61
61
|
}
|
|
62
|
+
/** Row projection for the Studio page manager — every column but `config`. */
|
|
63
|
+
export interface PageSummary {
|
|
64
|
+
id: string;
|
|
65
|
+
connectionId: string | null;
|
|
66
|
+
slug: string;
|
|
67
|
+
type: string;
|
|
68
|
+
title: string;
|
|
69
|
+
icon: string | null;
|
|
70
|
+
navGroup: string | null;
|
|
71
|
+
navOrder: number;
|
|
72
|
+
origin: string;
|
|
73
|
+
manifestId: string | null;
|
|
74
|
+
isEnabled: boolean;
|
|
75
|
+
revision: number;
|
|
76
|
+
updatedAt: number;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* The editable nav/identity fields. Every key is optional; `icon` and
|
|
80
|
+
* `navGroup` accept an explicit `null` to clear, which is why they are read
|
|
81
|
+
* with an `undefined` check rather than `??`.
|
|
82
|
+
*/
|
|
83
|
+
export interface PageMetaPatch {
|
|
84
|
+
slug?: string | undefined;
|
|
85
|
+
title?: string | undefined;
|
|
86
|
+
icon?: string | null | undefined;
|
|
87
|
+
navGroup?: string | null | undefined;
|
|
88
|
+
navOrder?: number | undefined;
|
|
89
|
+
isEnabled?: boolean | undefined;
|
|
90
|
+
/** Page-template id. Changing it requires a matching `envelope`. */
|
|
91
|
+
type?: string | undefined;
|
|
92
|
+
/** Owning connection. Changing it requires a matching `envelope`. */
|
|
93
|
+
connectionId?: string | null | undefined;
|
|
94
|
+
/**
|
|
95
|
+
* A full replacement envelope, from a recompose against a different
|
|
96
|
+
* template or table.
|
|
97
|
+
*
|
|
98
|
+
* Supplied instead of merging because the per-template BODIES are not
|
|
99
|
+
* interchangeable: a `page-crud` body is `{columns, detail, form}` and an
|
|
100
|
+
* archetype body is `{layout, toolbar, overlays}`, so merging one over the
|
|
101
|
+
* other leaves keys the new renderer cannot read and the old one still can.
|
|
102
|
+
* The nav/title mirror still applies on top, so the row and the document
|
|
103
|
+
* agree afterwards exactly as they do for a metadata-only edit.
|
|
104
|
+
*/
|
|
105
|
+
envelope?: Record<string, unknown> | undefined;
|
|
106
|
+
}
|
|
62
107
|
/** One generated page as the server glue hands it over (engine-validated). */
|
|
63
108
|
export interface GeneratedPageInput {
|
|
64
109
|
/** Stable `page_<slug>` id from the generator. */
|
|
@@ -101,6 +146,22 @@ export interface UpsertGeneratedResult {
|
|
|
101
146
|
preserved: string[];
|
|
102
147
|
/** Generated-origin ids whose stored document was human-edited — not overwritten. */
|
|
103
148
|
skippedEdited: string[];
|
|
149
|
+
/**
|
|
150
|
+
* Generated pages skipped because another row of the same connection already
|
|
151
|
+
* holds their slug — almost always a user-authored page (Studio → Pages)
|
|
152
|
+
* that claimed it first. Writing anyway violates
|
|
153
|
+
* `uq_adminium_pages_conn_slug`, and because the whole upsert is one
|
|
154
|
+
* transaction that unique violation would roll the ENTIRE generation run
|
|
155
|
+
* back and 500 `POST /connections/:id/generate` — permanently, since the
|
|
156
|
+
* offending row is not something regeneration can clear. So the collision is
|
|
157
|
+
* reported rather than thrown: the run completes, every other page lands,
|
|
158
|
+
* and the caller surfaces a warning naming the slug so an admin can rename
|
|
159
|
+
* either side. Entries are `{ id, slug }` of the SKIPPED generated page.
|
|
160
|
+
*/
|
|
161
|
+
blockedSlugs: {
|
|
162
|
+
id: string;
|
|
163
|
+
slug: string;
|
|
164
|
+
}[];
|
|
104
165
|
/**
|
|
105
166
|
* Human-edited generated-origin ids the new set no longer contains — kept,
|
|
106
167
|
* not pruned (user delta wins extends to deletion, 04 §6.3). The row is
|
|
@@ -119,8 +180,19 @@ export declare function pagesRepo(meta: MetaDb): {
|
|
|
119
180
|
* reported in `preserved` and never modified.
|
|
120
181
|
*/
|
|
121
182
|
upsertGenerated(connectionId: string, pages: readonly GeneratedPageInput[], opts?: UpsertGeneratedOptions): Promise<UpsertGeneratedResult>;
|
|
122
|
-
/**
|
|
183
|
+
/**
|
|
184
|
+
* Create a non-generated page (user/manifest/system flows, seeds).
|
|
185
|
+
*
|
|
186
|
+
* `id` is optional and defaults to a fresh `page_<ULID>`. Callers that
|
|
187
|
+
* must know the id before they build the document — the envelope embeds
|
|
188
|
+
* its own id (01 §6.1) — mint one with `newId('page')` and pass it here.
|
|
189
|
+
* Do NOT hand it a deterministic `page_<slug>`-shaped id: those belong to
|
|
190
|
+
* the generator's `pageIdFor` allocator, and a user page squatting on one
|
|
191
|
+
* lands in `upsertGenerated`'s `preserved` list forever, silently
|
|
192
|
+
* preventing that generated page from ever materializing.
|
|
193
|
+
*/
|
|
123
194
|
create(input: {
|
|
195
|
+
id?: string;
|
|
124
196
|
connectionId?: string | null;
|
|
125
197
|
slug: string;
|
|
126
198
|
type: string;
|
|
@@ -133,6 +205,80 @@ export declare function pagesRepo(meta: MetaDb): {
|
|
|
133
205
|
createdBy?: string | null;
|
|
134
206
|
}, at?: number): Promise<Page>;
|
|
135
207
|
findById(id: string): Promise<Page | null>;
|
|
208
|
+
/**
|
|
209
|
+
* Every page, all connections, nav-ordered — the Studio page manager's
|
|
210
|
+
* list (09 §8.1). Returns the row projection plus `origin`/`type`, which
|
|
211
|
+
* the manager needs to explain why a page behaves the way it does (a
|
|
212
|
+
* `generated` row warns about regeneration, a `manifest` row is
|
|
213
|
+
* undeletable). Deliberately excludes `config`: the list renders ~100 rows
|
|
214
|
+
* and the envelopes are the largest column in the table.
|
|
215
|
+
*/
|
|
216
|
+
listAll(): Promise<PageSummary[]>;
|
|
217
|
+
/**
|
|
218
|
+
* Write the row's nav projection AND the matching envelope fields
|
|
219
|
+
* (04 §6.3 "user delta wins"), in one transaction.
|
|
220
|
+
*
|
|
221
|
+
* Writing both halves is the whole point. The row columns are what the
|
|
222
|
+
* bootstrap nav tree reads, so a column-only write is what makes the edit
|
|
223
|
+
* *visible*; the envelope write is what makes it *durable*. `upsertGenerated`
|
|
224
|
+
* compares slug/title/icon/navGroup/navOrder against the regenerated values
|
|
225
|
+
* and rewrites the row when they differ, and its edited-page guard keys
|
|
226
|
+
* solely on `config.generatedHash`. A column-only edit therefore leaves the
|
|
227
|
+
* hash valid, so the very next generation run silently reverts it — the
|
|
228
|
+
* exact dead end `generate/run.ts` documents for the LLM nav path. Mirroring
|
|
229
|
+
* the change into the envelope without re-stamping the hash makes
|
|
230
|
+
* `isEditedEnvelope` true, so the row lands in `skippedEdited` and the
|
|
231
|
+
* admin's edit survives, while the page keeps `origin: 'generated'` and
|
|
232
|
+
* stays in the connection's page count.
|
|
233
|
+
*
|
|
234
|
+
* `expectedRevision`, when given, is the 08 §2.6 `If-Match` check: a
|
|
235
|
+
* mismatch returns `'conflict'` rather than clobbering a concurrent write.
|
|
236
|
+
* Returns `'not-found'` for an unknown id, otherwise the reloaded page.
|
|
237
|
+
*/
|
|
238
|
+
updateMeta(pageId: string, patch: PageMetaPatch, opts?: {
|
|
239
|
+
expectedRevision?: number;
|
|
240
|
+
at?: number;
|
|
241
|
+
}): Promise<Page | "not-found" | "conflict">;
|
|
242
|
+
/**
|
|
243
|
+
* Replace a page's per-template config BODY (the envelope's `config` key)
|
|
244
|
+
* while leaving every other envelope field alone — the Studio item editor's
|
|
245
|
+
* write (crud `columns[]`, an archetype `layout`, …).
|
|
246
|
+
*
|
|
247
|
+
* Distinct from `replaceConfig`, which swaps the whole document. Like
|
|
248
|
+
* `setLayout` this deliberately does not re-stamp `config.generatedHash`;
|
|
249
|
+
* the resulting staleness is what protects the edit from the next
|
|
250
|
+
* generation run. The body is validated by the server route before it
|
|
251
|
+
* reaches here.
|
|
252
|
+
*/
|
|
253
|
+
setTemplateConfig(pageId: string, body: Record<string, unknown>, opts?: {
|
|
254
|
+
expectedRevision?: number;
|
|
255
|
+
at?: number;
|
|
256
|
+
}): Promise<Page | "not-found" | "conflict">;
|
|
257
|
+
/**
|
|
258
|
+
* Bulk nav placement write — one drag in the sidebar organizer renumbers
|
|
259
|
+
* every sibling, so this takes the whole group at once and runs in a single
|
|
260
|
+
* transaction (a partial reorder is a visibly scrambled sidebar).
|
|
261
|
+
*
|
|
262
|
+
* Renumbers densely from 0 in the given order rather than preserving the
|
|
263
|
+
* caller's numbers: producers emit three different strides today (10,11,12
|
|
264
|
+
* for dashboards, 20,30,40 for crud, 25,35,45 for archetypes) and
|
|
265
|
+
* `nav_order` is an `int`, so there is no midpoint to insert into. Dense
|
|
266
|
+
* renumbering is the only scheme that stays correct without a column
|
|
267
|
+
* migration. Envelopes are mirrored for the same durability reason as
|
|
268
|
+
* `updateMeta`. Unknown ids are ignored; returns how many rows moved.
|
|
269
|
+
*/
|
|
270
|
+
reorderNav(entries: readonly {
|
|
271
|
+
id: string;
|
|
272
|
+
navGroup: string | null;
|
|
273
|
+
}[], at?: number): Promise<number>;
|
|
274
|
+
/**
|
|
275
|
+
* Delete a page. `adminium_views` (saved filters AND per-user layout
|
|
276
|
+
* overrides) and `adminium_scheduled_reports` cascade via their FKs; the
|
|
277
|
+
* caller is responsible for the `page:<id>:*` grants, which live in the
|
|
278
|
+
* polymorphic `adminium_role_permissions.resource_ref` column that no FK
|
|
279
|
+
* can reach (see `permissionsRepo.revokeAllForResource`).
|
|
280
|
+
*/
|
|
281
|
+
delete(pageId: string): Promise<boolean>;
|
|
136
282
|
/**
|
|
137
283
|
* Write the shared default dashboard layout into the envelope's
|
|
138
284
|
* `config.layout` slot (04-widget-registry.md §6.3; the renderer and engine
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../src/repos/pages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../src/repos/pages.ts"],"names":[],"mappings":"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"}
|
package/dist/repos/pages.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
1
2
|
/**
|
|
2
3
|
* pagesRepo — adminium_pages (07-meta-store.md §3.16).
|
|
3
4
|
*
|
|
@@ -23,7 +24,7 @@
|
|
|
23
24
|
* legacy full prune applies.
|
|
24
25
|
*/
|
|
25
26
|
import { newId } from '../ids.js';
|
|
26
|
-
import { MetaValidationError, jsonEquals, packJson, readBool, readJson, writeBool, } from './util.js';
|
|
27
|
+
import { MetaValidationError, affected, jsonEquals, packJson, readBool, readJson, writeBool, } from './util.js';
|
|
27
28
|
export const PAGE_ORIGINS = ['generated', 'user', 'manifest', 'system', 'llm'];
|
|
28
29
|
/**
|
|
29
30
|
* True when a stored generated-origin envelope no longer matches its embedded
|
|
@@ -43,6 +44,56 @@ function isEditedEnvelope(stored, hashEnvelope) {
|
|
|
43
44
|
return false;
|
|
44
45
|
return hashEnvelope(envelope) !== embedded;
|
|
45
46
|
}
|
|
47
|
+
/** Narrow an opaque stored value to an object we can spread over. */
|
|
48
|
+
function asRecord(value) {
|
|
49
|
+
return typeof value === 'object' && value !== null ? value : {};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Mirror a row's nav/identity fields into the stored envelope (01 §6.1
|
|
53
|
+
* `title` / `nav` blocks), preserving every other key.
|
|
54
|
+
*
|
|
55
|
+
* Two rules make this safe on documents this repo is not allowed to
|
|
56
|
+
* understand:
|
|
57
|
+
*
|
|
58
|
+
* - `config.generatedHash` is left exactly as found. Re-stamping it is what
|
|
59
|
+
* would make the edit invisible to `isEditedEnvelope` and therefore
|
|
60
|
+
* revertible by the next generation run; leaving it stale is the designed
|
|
61
|
+
* "a human touched this" signal (04 §6.3).
|
|
62
|
+
* - Blocks that are absent or the wrong shape are not invented. A document
|
|
63
|
+
* with no `nav` object gets none — hand-authored and llm-seed rows are not
|
|
64
|
+
* full envelopes yet, and fabricating a partial `nav` block would fail
|
|
65
|
+
* `pageEnvelopeSchema` on the next read for a page that validates fine
|
|
66
|
+
* today.
|
|
67
|
+
*/
|
|
68
|
+
function mergeEnvelopeMeta(stored, next) {
|
|
69
|
+
const envelope = asRecord(stored);
|
|
70
|
+
const out = { ...envelope };
|
|
71
|
+
const title = envelope['title'];
|
|
72
|
+
if (typeof title === 'object' && title !== null) {
|
|
73
|
+
out['title'] = { ...title, fallback: next.title };
|
|
74
|
+
}
|
|
75
|
+
const nav = envelope['nav'];
|
|
76
|
+
if (typeof nav === 'object' && nav !== null) {
|
|
77
|
+
const navOut = {
|
|
78
|
+
...nav,
|
|
79
|
+
order: next.navOrder,
|
|
80
|
+
slug: next.slug,
|
|
81
|
+
};
|
|
82
|
+
// `nav.group` and `nav.icon` are `z.string().min(1)` — a null row value
|
|
83
|
+
// means "unset", which the envelope expresses by omitting the key rather
|
|
84
|
+
// than by storing null.
|
|
85
|
+
if (next.navGroup === null)
|
|
86
|
+
delete navOut['group'];
|
|
87
|
+
else
|
|
88
|
+
navOut['group'] = next.navGroup;
|
|
89
|
+
if (next.icon === null)
|
|
90
|
+
delete navOut['icon'];
|
|
91
|
+
else
|
|
92
|
+
navOut['icon'] = next.icon;
|
|
93
|
+
out['nav'] = navOut;
|
|
94
|
+
}
|
|
95
|
+
return out;
|
|
96
|
+
}
|
|
46
97
|
function decode(row) {
|
|
47
98
|
return {
|
|
48
99
|
id: row.id,
|
|
@@ -100,10 +151,71 @@ export function pagesRepo(meta) {
|
|
|
100
151
|
preserved: [],
|
|
101
152
|
skippedEdited: [],
|
|
102
153
|
keptEdited: [],
|
|
154
|
+
blockedSlugs: [],
|
|
103
155
|
};
|
|
156
|
+
// Prune BEFORE upserting. Both halves of that matter:
|
|
157
|
+
//
|
|
158
|
+
// - resolving the set first keeps the "should this orphan die?"
|
|
159
|
+
// predicate in one place instead of two that can drift, and lets the
|
|
160
|
+
// slug index below ignore rows this run is about to delete (a dropped
|
|
161
|
+
// page whose slug a renamed page now wants is a hand-off, not a
|
|
162
|
+
// collision);
|
|
163
|
+
// - deleting first is what makes that hand-off physically possible.
|
|
164
|
+
// uq_adminium_pages_conn_slug is checked per statement, not at
|
|
165
|
+
// commit, so inserting the new owner while the old row still exists
|
|
166
|
+
// raises a UNIQUE violation and rolls the whole run back — the exact
|
|
167
|
+
// failure `blockedSlugs` exists to prevent.
|
|
168
|
+
//
|
|
169
|
+
// Ordering is otherwise unobservable: the prune set is disjoint from
|
|
170
|
+
// the ids being written (`ids.has(row.id)` skips them), and the whole
|
|
171
|
+
// pass is one transaction.
|
|
172
|
+
const toPrune = [];
|
|
173
|
+
if (prune) {
|
|
174
|
+
for (const row of existing) {
|
|
175
|
+
if (row.origin !== 'generated' || ids.has(row.id))
|
|
176
|
+
continue;
|
|
177
|
+
if (opts.hashEnvelope !== undefined &&
|
|
178
|
+
isEditedEnvelope(readJson(row.config), opts.hashEnvelope)) {
|
|
179
|
+
// User delta wins extends to deletion (04 §6.3): the generator
|
|
180
|
+
// dropped this page (table removed/hidden between runs), but a
|
|
181
|
+
// human customized the stored document, so pruning would
|
|
182
|
+
// destroy work that cannot be regenerated. Keep the row exactly
|
|
183
|
+
// as-is — origin stays 'generated', it stays enabled, and its
|
|
184
|
+
// snapshot lineage is untouched. Unedited orphans are
|
|
185
|
+
// byte-identically regenerable and still delete below.
|
|
186
|
+
result.keptEdited.push(row.id);
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
toPrune.push(row.id);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
const pruning = new Set(toPrune);
|
|
193
|
+
for (const id of toPrune) {
|
|
194
|
+
await trx.deleteFrom('adminium_pages').where('id', '=', id).execute();
|
|
195
|
+
result.pruned += 1;
|
|
196
|
+
}
|
|
197
|
+
// Slug → owning id, for rows that will still exist and will NOT be
|
|
198
|
+
// rewritten by this run. Rows the run itself writes are excluded
|
|
199
|
+
// because each is free to keep or change its own slug; they register
|
|
200
|
+
// their claim as they are processed, which also catches two generated
|
|
201
|
+
// inputs asking for one slug.
|
|
202
|
+
const slugOwner = new Map();
|
|
203
|
+
for (const row of existing) {
|
|
204
|
+
if (ids.has(row.id) || pruning.has(row.id))
|
|
205
|
+
continue;
|
|
206
|
+
slugOwner.set(row.slug, row.id);
|
|
207
|
+
}
|
|
104
208
|
for (const input of pages) {
|
|
105
209
|
const row = byId.get(input.id);
|
|
106
210
|
const packed = packJson(input.config);
|
|
211
|
+
if (slugOwner.has(input.slug)) {
|
|
212
|
+
// Someone else already owns this slug and is not going anywhere.
|
|
213
|
+
// Writing it would break uq_adminium_pages_conn_slug and abort the
|
|
214
|
+
// whole run (see `blockedSlugs`). Report and move on.
|
|
215
|
+
result.blockedSlugs.push({ id: input.id, slug: input.slug });
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
slugOwner.set(input.slug, input.id);
|
|
107
219
|
if (row === undefined) {
|
|
108
220
|
await trx
|
|
109
221
|
.insertInto('adminium_pages')
|
|
@@ -176,37 +288,30 @@ export function pagesRepo(meta) {
|
|
|
176
288
|
.execute();
|
|
177
289
|
result.updated += 1;
|
|
178
290
|
}
|
|
179
|
-
if (prune) {
|
|
180
|
-
for (const row of existing) {
|
|
181
|
-
if (row.origin !== 'generated' || ids.has(row.id))
|
|
182
|
-
continue;
|
|
183
|
-
if (opts.hashEnvelope !== undefined &&
|
|
184
|
-
isEditedEnvelope(readJson(row.config), opts.hashEnvelope)) {
|
|
185
|
-
// User delta wins extends to deletion (04 §6.3): the generator
|
|
186
|
-
// dropped this page (table removed/hidden between runs), but a
|
|
187
|
-
// human customized the stored document, so pruning would
|
|
188
|
-
// destroy work that cannot be regenerated. Keep the row exactly
|
|
189
|
-
// as-is — origin stays 'generated', it stays enabled, and its
|
|
190
|
-
// snapshot lineage is untouched. Unedited orphans are
|
|
191
|
-
// byte-identically regenerable and still delete below.
|
|
192
|
-
result.keptEdited.push(row.id);
|
|
193
|
-
continue;
|
|
194
|
-
}
|
|
195
|
-
await trx.deleteFrom('adminium_pages').where('id', '=', row.id).execute();
|
|
196
|
-
result.pruned += 1;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
291
|
return result;
|
|
200
292
|
});
|
|
201
293
|
},
|
|
202
|
-
/**
|
|
294
|
+
/**
|
|
295
|
+
* Create a non-generated page (user/manifest/system flows, seeds).
|
|
296
|
+
*
|
|
297
|
+
* `id` is optional and defaults to a fresh `page_<ULID>`. Callers that
|
|
298
|
+
* must know the id before they build the document — the envelope embeds
|
|
299
|
+
* its own id (01 §6.1) — mint one with `newId('page')` and pass it here.
|
|
300
|
+
* Do NOT hand it a deterministic `page_<slug>`-shaped id: those belong to
|
|
301
|
+
* the generator's `pageIdFor` allocator, and a user page squatting on one
|
|
302
|
+
* lands in `upsertGenerated`'s `preserved` list forever, silently
|
|
303
|
+
* preventing that generated page from ever materializing.
|
|
304
|
+
*/
|
|
203
305
|
async create(input, at = Date.now()) {
|
|
204
306
|
const origin = input.origin ?? 'user';
|
|
205
307
|
if (!PAGE_ORIGINS.includes(origin)) {
|
|
206
308
|
throw new MetaValidationError(`invalid page origin ${JSON.stringify(origin)}`);
|
|
207
309
|
}
|
|
310
|
+
if (input.id !== undefined && input.id.length > 36) {
|
|
311
|
+
throw new MetaValidationError(`page id exceeds char(36): ${input.id}`);
|
|
312
|
+
}
|
|
208
313
|
const row = {
|
|
209
|
-
id: newId('page'),
|
|
314
|
+
id: input.id ?? newId('page'),
|
|
210
315
|
connectionId: input.connectionId ?? null,
|
|
211
316
|
slug: input.slug,
|
|
212
317
|
type: input.type,
|
|
@@ -235,6 +340,196 @@ export function pagesRepo(meta) {
|
|
|
235
340
|
.executeTakeFirst();
|
|
236
341
|
return row === undefined ? null : decode(row);
|
|
237
342
|
},
|
|
343
|
+
/**
|
|
344
|
+
* Every page, all connections, nav-ordered — the Studio page manager's
|
|
345
|
+
* list (09 §8.1). Returns the row projection plus `origin`/`type`, which
|
|
346
|
+
* the manager needs to explain why a page behaves the way it does (a
|
|
347
|
+
* `generated` row warns about regeneration, a `manifest` row is
|
|
348
|
+
* undeletable). Deliberately excludes `config`: the list renders ~100 rows
|
|
349
|
+
* and the envelopes are the largest column in the table.
|
|
350
|
+
*/
|
|
351
|
+
async listAll() {
|
|
352
|
+
const rows = await db
|
|
353
|
+
.selectFrom('adminium_pages')
|
|
354
|
+
.select([
|
|
355
|
+
'id',
|
|
356
|
+
'connectionId',
|
|
357
|
+
'slug',
|
|
358
|
+
'type',
|
|
359
|
+
'title',
|
|
360
|
+
'icon',
|
|
361
|
+
'navGroup',
|
|
362
|
+
'navOrder',
|
|
363
|
+
'origin',
|
|
364
|
+
'manifestId',
|
|
365
|
+
'isEnabled',
|
|
366
|
+
'revision',
|
|
367
|
+
'updatedAt',
|
|
368
|
+
])
|
|
369
|
+
.orderBy('navOrder', 'asc')
|
|
370
|
+
.orderBy('slug', 'asc')
|
|
371
|
+
.execute();
|
|
372
|
+
return rows.map((row) => ({ ...row, isEnabled: readBool(row.isEnabled) }));
|
|
373
|
+
},
|
|
374
|
+
/**
|
|
375
|
+
* Write the row's nav projection AND the matching envelope fields
|
|
376
|
+
* (04 §6.3 "user delta wins"), in one transaction.
|
|
377
|
+
*
|
|
378
|
+
* Writing both halves is the whole point. The row columns are what the
|
|
379
|
+
* bootstrap nav tree reads, so a column-only write is what makes the edit
|
|
380
|
+
* *visible*; the envelope write is what makes it *durable*. `upsertGenerated`
|
|
381
|
+
* compares slug/title/icon/navGroup/navOrder against the regenerated values
|
|
382
|
+
* and rewrites the row when they differ, and its edited-page guard keys
|
|
383
|
+
* solely on `config.generatedHash`. A column-only edit therefore leaves the
|
|
384
|
+
* hash valid, so the very next generation run silently reverts it — the
|
|
385
|
+
* exact dead end `generate/run.ts` documents for the LLM nav path. Mirroring
|
|
386
|
+
* the change into the envelope without re-stamping the hash makes
|
|
387
|
+
* `isEditedEnvelope` true, so the row lands in `skippedEdited` and the
|
|
388
|
+
* admin's edit survives, while the page keeps `origin: 'generated'` and
|
|
389
|
+
* stays in the connection's page count.
|
|
390
|
+
*
|
|
391
|
+
* `expectedRevision`, when given, is the 08 §2.6 `If-Match` check: a
|
|
392
|
+
* mismatch returns `'conflict'` rather than clobbering a concurrent write.
|
|
393
|
+
* Returns `'not-found'` for an unknown id, otherwise the reloaded page.
|
|
394
|
+
*/
|
|
395
|
+
async updateMeta(pageId, patch, opts = {}) {
|
|
396
|
+
const at = opts.at ?? Date.now();
|
|
397
|
+
const page = await this.findById(pageId);
|
|
398
|
+
if (page === null)
|
|
399
|
+
return 'not-found';
|
|
400
|
+
if (opts.expectedRevision !== undefined && opts.expectedRevision !== page.revision) {
|
|
401
|
+
return 'conflict';
|
|
402
|
+
}
|
|
403
|
+
const next = {
|
|
404
|
+
slug: patch.slug ?? page.slug,
|
|
405
|
+
title: patch.title ?? page.title,
|
|
406
|
+
icon: patch.icon === undefined ? page.icon : patch.icon,
|
|
407
|
+
navGroup: patch.navGroup === undefined ? page.navGroup : patch.navGroup,
|
|
408
|
+
navOrder: patch.navOrder ?? page.navOrder,
|
|
409
|
+
isEnabled: patch.isEnabled ?? page.isEnabled,
|
|
410
|
+
};
|
|
411
|
+
// A recompose supplies the whole document; a metadata edit merges into
|
|
412
|
+
// the one already stored. Either way the nav/title mirror lands on top,
|
|
413
|
+
// so the row and the envelope never disagree.
|
|
414
|
+
const base = patch.envelope ?? page.config;
|
|
415
|
+
await db
|
|
416
|
+
.updateTable('adminium_pages')
|
|
417
|
+
.set({
|
|
418
|
+
...next,
|
|
419
|
+
...(patch.type === undefined ? {} : { type: patch.type }),
|
|
420
|
+
...(patch.connectionId === undefined ? {} : { connectionId: patch.connectionId }),
|
|
421
|
+
isEnabled: writeBool(meta, next.isEnabled),
|
|
422
|
+
config: packJson(mergeEnvelopeMeta(base, next)),
|
|
423
|
+
revision: page.revision + 1,
|
|
424
|
+
updatedAt: at,
|
|
425
|
+
})
|
|
426
|
+
.where('id', '=', pageId)
|
|
427
|
+
.execute();
|
|
428
|
+
return (await this.findById(pageId)) ?? 'not-found';
|
|
429
|
+
},
|
|
430
|
+
/**
|
|
431
|
+
* Replace a page's per-template config BODY (the envelope's `config` key)
|
|
432
|
+
* while leaving every other envelope field alone — the Studio item editor's
|
|
433
|
+
* write (crud `columns[]`, an archetype `layout`, …).
|
|
434
|
+
*
|
|
435
|
+
* Distinct from `replaceConfig`, which swaps the whole document. Like
|
|
436
|
+
* `setLayout` this deliberately does not re-stamp `config.generatedHash`;
|
|
437
|
+
* the resulting staleness is what protects the edit from the next
|
|
438
|
+
* generation run. The body is validated by the server route before it
|
|
439
|
+
* reaches here.
|
|
440
|
+
*/
|
|
441
|
+
async setTemplateConfig(pageId, body, opts = {}) {
|
|
442
|
+
const at = opts.at ?? Date.now();
|
|
443
|
+
const page = await this.findById(pageId);
|
|
444
|
+
if (page === null)
|
|
445
|
+
return 'not-found';
|
|
446
|
+
if (opts.expectedRevision !== undefined && opts.expectedRevision !== page.revision) {
|
|
447
|
+
return 'conflict';
|
|
448
|
+
}
|
|
449
|
+
const envelope = asRecord(page.config);
|
|
450
|
+
await db
|
|
451
|
+
.updateTable('adminium_pages')
|
|
452
|
+
.set({
|
|
453
|
+
config: packJson({ ...envelope, config: body }),
|
|
454
|
+
revision: page.revision + 1,
|
|
455
|
+
updatedAt: at,
|
|
456
|
+
})
|
|
457
|
+
.where('id', '=', pageId)
|
|
458
|
+
.execute();
|
|
459
|
+
return (await this.findById(pageId)) ?? 'not-found';
|
|
460
|
+
},
|
|
461
|
+
/**
|
|
462
|
+
* Bulk nav placement write — one drag in the sidebar organizer renumbers
|
|
463
|
+
* every sibling, so this takes the whole group at once and runs in a single
|
|
464
|
+
* transaction (a partial reorder is a visibly scrambled sidebar).
|
|
465
|
+
*
|
|
466
|
+
* Renumbers densely from 0 in the given order rather than preserving the
|
|
467
|
+
* caller's numbers: producers emit three different strides today (10,11,12
|
|
468
|
+
* for dashboards, 20,30,40 for crud, 25,35,45 for archetypes) and
|
|
469
|
+
* `nav_order` is an `int`, so there is no midpoint to insert into. Dense
|
|
470
|
+
* renumbering is the only scheme that stays correct without a column
|
|
471
|
+
* migration. Envelopes are mirrored for the same durability reason as
|
|
472
|
+
* `updateMeta`. Unknown ids are ignored; returns how many rows moved.
|
|
473
|
+
*/
|
|
474
|
+
async reorderNav(entries, at = Date.now()) {
|
|
475
|
+
return db.transaction().execute(async (trx) => {
|
|
476
|
+
const ids = entries.map((entry) => entry.id);
|
|
477
|
+
if (ids.length === 0)
|
|
478
|
+
return 0;
|
|
479
|
+
const rows = await trx
|
|
480
|
+
.selectFrom('adminium_pages')
|
|
481
|
+
.selectAll()
|
|
482
|
+
.where('id', 'in', ids)
|
|
483
|
+
.execute();
|
|
484
|
+
const byId = new Map(rows.map((row) => [row.id, row]));
|
|
485
|
+
// Dense per-group ordering, in the order the caller listed them.
|
|
486
|
+
const nextOrder = new Map();
|
|
487
|
+
let moved = 0;
|
|
488
|
+
for (const entry of entries) {
|
|
489
|
+
const row = byId.get(entry.id);
|
|
490
|
+
if (row === undefined)
|
|
491
|
+
continue;
|
|
492
|
+
const order = nextOrder.get(entry.navGroup) ?? 0;
|
|
493
|
+
nextOrder.set(entry.navGroup, order + 1);
|
|
494
|
+
if (row.navGroup === entry.navGroup && row.navOrder === order)
|
|
495
|
+
continue;
|
|
496
|
+
const page = decode(row);
|
|
497
|
+
await trx
|
|
498
|
+
.updateTable('adminium_pages')
|
|
499
|
+
.set({
|
|
500
|
+
navGroup: entry.navGroup,
|
|
501
|
+
navOrder: order,
|
|
502
|
+
config: packJson(mergeEnvelopeMeta(page.config, {
|
|
503
|
+
slug: page.slug,
|
|
504
|
+
title: page.title,
|
|
505
|
+
icon: page.icon,
|
|
506
|
+
navGroup: entry.navGroup,
|
|
507
|
+
navOrder: order,
|
|
508
|
+
})),
|
|
509
|
+
revision: page.revision + 1,
|
|
510
|
+
updatedAt: at,
|
|
511
|
+
})
|
|
512
|
+
.where('id', '=', entry.id)
|
|
513
|
+
.execute();
|
|
514
|
+
moved += 1;
|
|
515
|
+
}
|
|
516
|
+
return moved;
|
|
517
|
+
});
|
|
518
|
+
},
|
|
519
|
+
/**
|
|
520
|
+
* Delete a page. `adminium_views` (saved filters AND per-user layout
|
|
521
|
+
* overrides) and `adminium_scheduled_reports` cascade via their FKs; the
|
|
522
|
+
* caller is responsible for the `page:<id>:*` grants, which live in the
|
|
523
|
+
* polymorphic `adminium_role_permissions.resource_ref` column that no FK
|
|
524
|
+
* can reach (see `permissionsRepo.revokeAllForResource`).
|
|
525
|
+
*/
|
|
526
|
+
async delete(pageId) {
|
|
527
|
+
const result = await db
|
|
528
|
+
.deleteFrom('adminium_pages')
|
|
529
|
+
.where('id', '=', pageId)
|
|
530
|
+
.executeTakeFirst();
|
|
531
|
+
return affected(result.numDeletedRows) > 0;
|
|
532
|
+
},
|
|
238
533
|
/**
|
|
239
534
|
* Write the shared default dashboard layout into the envelope's
|
|
240
535
|
* `config.layout` slot (04-widget-registry.md §6.3; the renderer and engine
|
package/dist/repos/pages.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/repos/pages.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/repos/pages.ts"],"names":[],"mappings":"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"}
|