@betterportal/config-manager 10.6.28 → 10.6.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. package/lib/.bsb/clients/service-betterportal-config-manager.d.ts +1 -1
  2. package/lib/.bsb/clients/service-betterportal-config-manager.js +1 -1
  3. package/lib/bp-contracts/org.betterportal.config-manager.json +1 -1
  4. package/lib/plugins/service-betterportal-config-manager/adminApi.d.ts +2 -2
  5. package/lib/plugins/service-betterportal-config-manager/adminApi.d.ts.map +1 -1
  6. package/lib/plugins/service-betterportal-config-manager/adminApi.js +152 -148
  7. package/lib/plugins/service-betterportal-config-manager/adminApi.js.map +1 -1
  8. package/lib/plugins/service-betterportal-config-manager/index.d.ts.map +1 -1
  9. package/lib/plugins/service-betterportal-config-manager/index.js +1 -0
  10. package/lib/plugins/service-betterportal-config-manager/index.js.map +1 -1
  11. package/lib/plugins/service-betterportal-config-manager/previewEnvironmentManagement.d.ts +1 -1
  12. package/lib/plugins/service-betterportal-config-manager/storage/appData.d.ts +230 -0
  13. package/lib/plugins/service-betterportal-config-manager/storage/appData.d.ts.map +1 -0
  14. package/lib/plugins/service-betterportal-config-manager/storage/appData.js +193 -0
  15. package/lib/plugins/service-betterportal-config-manager/storage/appData.js.map +1 -0
  16. package/lib/plugins/service-betterportal-config-manager/storage/postgres.d.ts +5 -6
  17. package/lib/plugins/service-betterportal-config-manager/storage/postgres.d.ts.map +1 -1
  18. package/lib/plugins/service-betterportal-config-manager/storage/postgres.js +185 -73
  19. package/lib/plugins/service-betterportal-config-manager/storage/postgres.js.map +1 -1
  20. package/lib/schemas/service-betterportal-config-manager.json +1 -1
  21. package/lib/schemas/service-betterportal-config-manager.plugin.json +1 -1
  22. package/package.json +3 -3
@@ -0,0 +1,193 @@
1
+ import { isDeepStrictEqual } from "node:util";
2
+ import { appRoutePatternKey, isApiRoute } from "../routeMounts.js";
3
+ export class AppDataConflictError extends Error {
4
+ status = 409;
5
+ statusCode = 409;
6
+ constructor() { super("App data changed concurrently; reload before replacing the same record"); }
7
+ }
8
+ /** The versioned app document contains settings, not operational collections. */
9
+ export function appSettings(app) {
10
+ const { routes: _routes, menu: _menu, ...settings } = structuredClone(app);
11
+ if (settings.auth) {
12
+ const { roles: _roles, ...auth } = settings.auth;
13
+ settings.auth = auth;
14
+ }
15
+ return settings;
16
+ }
17
+ /** Real columns for identity and relationships; route options remain typed configuration. */
18
+ export class AppData {
19
+ prefix;
20
+ scope;
21
+ roles;
22
+ grants;
23
+ routes;
24
+ menus;
25
+ constructor(prefix, scope) {
26
+ this.prefix = prefix;
27
+ this.scope = scope;
28
+ if (!/^[a-z_][a-z0-9_]*$/i.test(prefix))
29
+ throw new Error("Invalid table prefix");
30
+ this.roles = `"${prefix}_roles"`;
31
+ this.grants = `"${prefix}_role_grants"`;
32
+ this.routes = `"${prefix}_routes"`;
33
+ this.menus = `"${prefix}_menu_items"`;
34
+ }
35
+ async create(client) {
36
+ const parent = `app_kind text not null default 'apps' check (app_kind = 'apps'),
37
+ foreign key (scope_id, app_kind, app_id) references "${this.prefix}_entities"
38
+ (scope_id, kind, entity_id) on delete cascade deferrable initially deferred`;
39
+ await client.query(`create table if not exists ${this.roles} (
40
+ scope_id text not null, app_id text not null, id text not null, title text not null,
41
+ description text, position integer not null, primary key (scope_id, app_id, id), ${parent})`);
42
+ await client.query(`create table if not exists ${this.grants} (
43
+ scope_id text not null, app_id text not null, role_id text not null,
44
+ service_id text not null, view_id text not null, actions text[] not null
45
+ check (cardinality(actions) > 0 and actions <@ array['read', 'create', 'update', 'delete']::text[]),
46
+ grant_position integer not null,
47
+ primary key (scope_id, app_id, role_id, grant_position),
48
+ foreign key (scope_id, app_id, role_id) references ${this.roles} (scope_id, app_id, id)
49
+ on delete cascade deferrable initially deferred)`);
50
+ await client.query(`create table if not exists ${this.routes} (
51
+ scope_id text not null, app_id text not null, id text not null,
52
+ kind text not null check (kind in ('page','api')), path text not null, path_key text,
53
+ service_id text not null, view_id text not null, title text, icon text,
54
+ enabled boolean not null, operations text[] not null check (cardinality(operations) > 0),
55
+ position integer not null, options jsonb not null,
56
+ primary key (scope_id, app_id, id),
57
+ unique (scope_id, app_id, path_key) deferrable initially deferred, ${parent})`);
58
+ // API operations may share a path. NULL keeps page paths unique without merging API records.
59
+ await client.query(`alter table ${this.routes} alter column path_key drop not null`);
60
+ await client.query(`update ${this.routes} set path_key=null
61
+ where path_key is not null and (kind='api' or left(path,13)='/_bp/service/')`);
62
+ await client.query(`create table if not exists ${this.menus} (
63
+ scope_id text not null, app_id text not null, id text not null, parent_id text,
64
+ position integer not null, type text not null check (type in ('link','group','section','divider','external')),
65
+ title text, icon text, route_id text, href text, enabled boolean not null,
66
+ service_status text not null, auth_status text not null, roles_any_of text[], default_expanded boolean,
67
+ primary key (scope_id, app_id, id),
68
+ foreign key (scope_id, app_id, parent_id) references ${this.menus} (scope_id, app_id, id) deferrable initially deferred,
69
+ foreign key (scope_id, app_id, route_id) references ${this.routes} (scope_id, app_id, id) deferrable initially deferred,
70
+ ${parent})`);
71
+ }
72
+ rows(app) {
73
+ const roles = new Map(), grants = new Map();
74
+ const routes = new Map(), menus = new Map();
75
+ const add = (rows, key, row) => {
76
+ if (rows.has(key))
77
+ throw new Error("Duplicate app data identity");
78
+ rows.set(key, row);
79
+ };
80
+ app?.auth?.roles.forEach((role, position) => {
81
+ add(roles, role.id, { id: role.id, title: role.title, description: role.description ?? null, position });
82
+ role.permissions.forEach((grant, grant_position) => {
83
+ const row = { role_id: role.id, service_id: grant.serviceId, view_id: grant.viewId, actions: grant.permissions, grant_position };
84
+ add(grants, JSON.stringify([role.id, grant_position]), row);
85
+ });
86
+ });
87
+ app?.routes.forEach((route, position) => {
88
+ const { id, kind, path, serviceId, viewId, title, icon, enabled, operations, ...options } = route;
89
+ add(routes, id, { id, kind, path, path_key: isApiRoute(route) ? null : appRoutePatternKey(path), service_id: serviceId, view_id: viewId,
90
+ title: title ?? null, icon: icon ?? null, enabled, operations, position, options });
91
+ });
92
+ const visit = (items, parent_id) => items.forEach((item, position) => {
93
+ add(menus, item.id, { id: item.id, parent_id, position, type: item.type, title: item.title ?? null, icon: item.icon ?? null,
94
+ route_id: item.routeId ?? null, href: item.href ?? null, enabled: item.enabled, service_status: item.serviceStatus,
95
+ auth_status: item.authStatus, roles_any_of: item.rolesAnyOf ?? null, default_expanded: item.defaultExpanded ?? null });
96
+ visit(item.children, item.id);
97
+ });
98
+ visit(app?.menu ?? [], null);
99
+ return new Map([[this.roles, roles], [this.grants, grants], [this.routes, routes], [this.menus, menus]]);
100
+ }
101
+ changed(before, after) {
102
+ return !isDeepStrictEqual(this.rows(before), this.rows(after));
103
+ }
104
+ /** Apply only changed rows; unrelated collections never get replaced. Caller holds the app lock. */
105
+ async save(client, appId, before, after, current = before) {
106
+ const previous = this.rows(before), next = this.rows(after), latest = this.rows(current);
107
+ for (const roleId of previous.get(this.roles).keys()) {
108
+ if (next.get(this.roles).has(roleId))
109
+ continue;
110
+ const grants = (rows) => [...rows].filter(([, row]) => row.role_id === roleId);
111
+ if (!isDeepStrictEqual(grants(previous.get(this.grants)), grants(latest.get(this.grants))))
112
+ throw new AppDataConflictError();
113
+ }
114
+ for (const [table, rows] of next) {
115
+ const old = previous.get(table);
116
+ for (const key of new Set([...old.keys(), ...rows.keys()])) {
117
+ const a = old.get(key), b = rows.get(key);
118
+ if (isDeepStrictEqual(a, b))
119
+ continue;
120
+ // Legacy snapshot writers must never erase a concurrent edit to the same record.
121
+ if (!isDeepStrictEqual(a, latest.get(table).get(key))) {
122
+ throw new AppDataConflictError();
123
+ }
124
+ const identity = table === this.grants ? ["role_id", "grant_position"] : ["id"];
125
+ if (!b) {
126
+ await client.query(`delete from ${table} where scope_id=$1 and app_id=$2 and ${identity.map((column, i) => `${column}=$${i + 3}`).join(" and ")}`, [this.scope, appId, ...identity.map(column => a[column])]);
127
+ }
128
+ else {
129
+ const columns = Object.keys(b);
130
+ await client.query(`insert into ${table} (scope_id, app_id, ${columns.join(",")})
131
+ values ($1,$2,${columns.map((_, i) => `$${i + 3}`).join(",")})
132
+ on conflict (scope_id, app_id, ${identity.join(",")}) do update set
133
+ ${columns.filter(column => !identity.includes(column)).map(column => `${column}=excluded.${column}`).join(",")}`, [this.scope, appId, ...columns.map(column => column === "options" ? JSON.stringify(b[column]) : b[column])]);
134
+ }
135
+ }
136
+ }
137
+ }
138
+ /** One statement keeps app settings and all child collections on the same MVCC snapshot. */
139
+ async read(client, entitiesTable) {
140
+ const tables = { entities: entitiesTable, roles: this.roles, grants: this.grants, routes: this.routes, menus: this.menus };
141
+ const result = await client.query(`select ${Object.entries(tables).map(([name, table]) => `coalesce((select json_agg(r${name === "entities" ? " order by ordinal" : ""}) from ${table} r where scope_id=$1),'[]'::json) as ${name}`).join(",")}`, [this.scope]);
142
+ return result.rows[0];
143
+ }
144
+ hydrate(apps, data) {
145
+ const byId = new Map(apps.map(app => [app.id, app]));
146
+ for (const app of apps) {
147
+ app.routes = [];
148
+ app.menu = [];
149
+ if (app.auth)
150
+ app.auth.roles = [];
151
+ }
152
+ const roles = new Map();
153
+ for (const row of data.roles.sort((a, b) => a.position - b.position || a.id.localeCompare(b.id))) {
154
+ const app = byId.get(row.app_id);
155
+ if (!app?.auth)
156
+ throw new Error("Role references an app without auth");
157
+ const role = { id: row.id, title: row.title, ...(row.description !== null ? { description: row.description } : {}), permissions: [] };
158
+ app.auth.roles.push(role);
159
+ roles.set(JSON.stringify([row.app_id, row.id]), role);
160
+ }
161
+ for (const row of data.grants.sort((a, b) => a.grant_position - b.grant_position)) {
162
+ const role = roles.get(JSON.stringify([row.app_id, row.role_id]));
163
+ role.permissions.push({ serviceId: row.service_id, viewId: row.view_id, permissions: row.actions });
164
+ }
165
+ for (const row of data.routes.sort((a, b) => a.position - b.position || a.id.localeCompare(b.id))) {
166
+ const route = { ...row.options, id: row.id, kind: row.kind, path: row.path,
167
+ serviceId: row.service_id, viewId: row.view_id, enabled: row.enabled, operations: row.operations };
168
+ if (row.title !== null)
169
+ route.title = row.title;
170
+ if (row.icon !== null)
171
+ route.icon = row.icon;
172
+ byId.get(row.app_id).routes.push(route);
173
+ }
174
+ const menus = new Map();
175
+ const rows = data.menus.sort((a, b) => a.position - b.position || a.id.localeCompare(b.id));
176
+ for (const row of rows) {
177
+ const item = { id: row.id, type: row.type, enabled: row.enabled,
178
+ serviceStatus: row.service_status, authStatus: row.auth_status, children: [] };
179
+ for (const [column, field] of Object.entries({ title: "title", icon: "icon", route_id: "routeId", href: "href",
180
+ roles_any_of: "rolesAnyOf", default_expanded: "defaultExpanded" })) {
181
+ if (row[column] !== null)
182
+ item[field] = row[column];
183
+ }
184
+ menus.set(JSON.stringify([row.app_id, row.id]), item);
185
+ }
186
+ for (const row of rows) {
187
+ const item = menus.get(JSON.stringify([row.app_id, row.id]));
188
+ const parent = row.parent_id ? menus.get(JSON.stringify([row.app_id, row.parent_id])).children : byId.get(row.app_id).menu;
189
+ parent.push(item);
190
+ }
191
+ }
192
+ }
193
+ //# sourceMappingURL=appData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appData.js","sourceRoot":"","sources":["../../../../src/plugins/service-betterportal-config-manager/storage/appData.ts"],"names":[],"mappings":"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"}
@@ -73,22 +73,20 @@ export declare class PostgresStorage extends BaseStorage {
73
73
  private schemaReady;
74
74
  private legacyPaths;
75
75
  private readonly snapshots;
76
- private cachedConfig;
77
- private configLoad;
78
- private configGeneration;
79
- private credentialIndex?;
76
+ private readonly appData;
80
77
  constructor(options: PostgresStorageOptions);
81
78
  initialize(paths?: LegacyPaths): Promise<void>;
82
79
  loadConfig(): Promise<BetterPortalConfig>;
80
+ /** Read only the matching credential; revocation is visible without replica cache invalidation. */
81
+ validateApiKey(apiKey: string): ReturnType<BaseStorage["validateApiKey"]>;
83
82
  saveConfig(config: BetterPortalConfig, options?: {
84
83
  notify?: boolean;
85
84
  completeAction?: PendingActionCompletion;
86
85
  }): Promise<void>;
86
+ mutateApp<T>(appId: string, update: (config: BetterPortalConfig) => Promise<T>): Promise<T>;
87
87
  private writeReferences;
88
88
  invalidate(): void;
89
- validateApiKey(apiKey: string): ReturnType<BaseStorage["validateApiKey"]>;
90
89
  private readSnapshot;
91
- private readConfig;
92
90
  private cloneSnapshot;
93
91
  close(): Promise<void>;
94
92
  touchServiceActivity(serviceId: string, field: "lastSeenAt" | "lastSyncAt"): Promise<void>;
@@ -127,6 +125,7 @@ export declare class PostgresStorage extends BaseStorage {
127
125
  private ensureSchema;
128
126
  private migrate;
129
127
  private migrateEntities;
128
+ private migrateAppData;
130
129
  private importLegacyFiles;
131
130
  private insertWebhookDelivery;
132
131
  private insertOutbox;
@@ -1 +1 @@
1
- {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../../src/plugins/service-betterportal-config-manager/storage/postgres.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../../src/plugins/service-betterportal-config-manager/storage/postgres.ts"],"names":[],"mappings":"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"}