@betterportal/config-manager 10.6.22 → 10.6.23

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/README.md CHANGED
@@ -7,3 +7,5 @@ PostgreSQL presence updates use a separate activity table (created on startup),
7
7
  Identical preview deployment POST retries replay the original response, including credentials, for 15 minutes. Only the latest request per deployment is retained, encrypted with the control-plane identity; preserve that identity across replicas and restarts. GET never returns the replay record. Expired replay records are removed by maintenance. An identical POST within this window is a retry, not a fresh production-config sync.
8
8
 
9
9
  Config streams revalidate credentials on updates, coalesce concurrent changes and omit unchanged payloads. Webhook delivery remains at-least-once: receivers must deduplicate by `x-bp-webhook-id`. Each attempt has a 10-second request deadline and is leased immediately before delivery.
10
+
11
+ Preview API writes retry revision conflicts up to five total attempts, reloading configuration and rechecking authorization and credential replay each time. Continued contention returns HTTP 503 with `Retry-After: 1`; callers may retry the same request. This also covers preview deletion and expiry cleanup during GET.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Auto-generated BSB virtual client for service-betterportal-config-manager
3
3
  * DO NOT EDIT - Regenerated on every build
4
- * @version 10.6.22
4
+ * @version 10.6.23
5
5
  */
6
6
  import { ServiceClient, BSBService } from "@bsb/base";
7
7
  import type { Observable, BSBServiceClientDefinition, EventInputType } from "@bsb/base";
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Auto-generated BSB virtual client for service-betterportal-config-manager
3
3
  * DO NOT EDIT - Regenerated on every build
4
- * @version 10.6.22
4
+ * @version 10.6.23
5
5
  */
6
6
  import { ServiceClient, importPortableSchema, createFireAndForgetEvent, createBroadcastEvent, createEventSchemas } from "@bsb/base";
7
7
  const _webhookDeliveryAvailableSchema = importPortableSchema(JSON.parse("{\"anyvaliVersion\":\"1.0\",\"schemaVersion\":\"1.1\",\"root\":{\"kind\":\"object\",\"properties\":{},\"required\":[],\"unknownKeys\":\"strip\"},\"definitions\":{},\"extensions\":{}}"));
@@ -4,7 +4,7 @@
4
4
  "pluginId": "org.betterportal.config-manager",
5
5
  "title": "BetterPortal Config Manager",
6
6
  "description": "Admin-facing BetterPortal service for discovering and managing service config surfaces.",
7
- "version": "10.6.22",
7
+ "version": "10.6.23",
8
8
  "category": "service",
9
9
  "deploymentModes": [
10
10
  "self-hosted"
@@ -1 +1 @@
1
- {"version":3,"file":"previewApi.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/previewApi.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,iBAAiB,EAEtB,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AAYjC,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,GAAG,EAAE,iBAAiB,CAAC;IACvB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;CAC7B,GAAG,IAAI,CAgFP"}
1
+ {"version":3,"file":"previewApi.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/previewApi.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,iBAAiB,EAEtB,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AAYjC,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,GAAG,EAAE,iBAAiB,CAAC;IACvB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;CAC7B,GAAG,IAAI,CAoFP"}
@@ -1,10 +1,12 @@
1
+ import { setTimeout as delay } from "node:timers/promises";
2
+ import { ConfigRevisionConflictError } from "./storage/core.js";
1
3
  import { createCipheriv, createDecipheriv, createHash, randomBytes } from "node:crypto";
2
4
  import { jsonResponse, eventObservability } from "@betterportal/framework";
3
5
  import { PREVIEW_DEPLOYMENT_API_BASE, PreviewEnvironmentError, authenticatePreviewGroup, deleteExpiredPreviewDeployments, deletePreviewDeployment, provisionPreviewDeployment } from "./previewEnvironments.js";
4
6
  const NO_STORE = { "Cache-Control": "no-store" };
5
7
  export function registerPreviewDeploymentApi(input) {
6
8
  const route = `${PREVIEW_DEPLOYMENT_API_BASE}/:groupId/deployments/:key`;
7
- input.app.get(route, async (event) => withPreviewApiErrors(event, async () => {
9
+ input.app.get(route, async (event) => withPreviewApiErrors(event, input.storage, async () => {
8
10
  const config = await input.storage.loadConfig();
9
11
  const group = config.previewEnvironmentGroups.find((candidate) => candidate.id === event.context.params?.groupId);
10
12
  if (!group)
@@ -19,56 +21,60 @@ export function registerPreviewDeploymentApi(input) {
19
21
  const { credentialReplay: _replay, ...publicDeployment } = deployment;
20
22
  return jsonResponse(publicDeployment, 200, NO_STORE);
21
23
  }));
22
- input.app.post(route, async (event) => withPreviewApiErrors(event, async () => {
23
- const config = await input.storage.loadConfig();
24
- const groupId = event.context.params?.groupId ?? "";
25
- const key = event.context.params?.key ?? "";
26
- const group = config.previewEnvironmentGroups.find((candidate) => candidate.id === groupId);
27
- if (!group)
28
- throw new PreviewEnvironmentError("Preview group was not found", 404);
29
- await authenticatePreviewGroup(group, event.req.headers.get("authorization"));
30
- const body = await readObject(event);
31
- if (body.setupMode !== undefined && body.setupMode !== "pull") {
32
- throw new PreviewEnvironmentError("Only pull setup mode is supported for preview deployments");
33
- }
34
- const existing = config.previewEnvironmentDeployments.find((candidate) => candidate.groupId === groupId && candidate.key === key);
35
- const hostname = typeof body.hostname === "string" ? body.hostname : existing?.hostname;
36
- if (!hostname)
37
- throw new PreviewEnvironmentError("hostname is required when creating a preview");
38
- const request = {
39
- key,
40
- name: typeof body.name === "string" ? body.name : undefined,
41
- hostname,
42
- expiresInDays: parseExpiry(body.expiresInDays),
43
- services: parseServices(body.services).sort((a, b) => a.serviceId.localeCompare(b.serviceId))
44
- };
45
- const requestHash = createHash("sha256").update(JSON.stringify(request)).digest("hex");
46
- const aad = `${groupId}:${key}:${requestHash}`;
47
- const replay = existing?.credentialReplay;
48
- if (replay?.requestHash === requestHash && Date.parse(replay.expiresAt) > Date.now()) {
49
- const payload = openReplay(replay.ciphertext, input.replayEncryptionKey, aad);
50
- return jsonResponse(payload, payload.created ? 201 : 200, NO_STORE);
51
- }
52
- const result = provisionPreviewDeployment(config, groupId, request, input.controlPlaneUrl);
53
- const payload = {
54
- created: result.created,
55
- preview: {
56
- key: result.deployment.key,
57
- name: result.deployment.name,
58
- hostname: result.deployment.hostname,
59
- expiresAt: result.deployment.expiresAt ?? null
60
- },
61
- credentials: result.credentials
62
- };
63
- result.deployment.credentialReplay = {
64
- requestHash,
65
- ciphertext: sealReplay(payload, input.replayEncryptionKey, aad),
66
- expiresAt: new Date(Date.now() + 15 * 60_000).toISOString()
67
- };
68
- await input.storage.saveConfig(config);
69
- return jsonResponse(payload, result.created ? 201 : 200, NO_STORE);
70
- }));
71
- input.app.delete(route, async (event) => withPreviewApiErrors(event, async () => {
24
+ input.app.post(route, async (event) => {
25
+ // Request bodies are streams: parse once, but reauthenticate and recompute on every attempt.
26
+ let bodyPromise;
27
+ return withPreviewApiErrors(event, input.storage, async () => {
28
+ const config = await input.storage.loadConfig();
29
+ const groupId = event.context.params?.groupId ?? "";
30
+ const key = event.context.params?.key ?? "";
31
+ const group = config.previewEnvironmentGroups.find((candidate) => candidate.id === groupId);
32
+ if (!group)
33
+ throw new PreviewEnvironmentError("Preview group was not found", 404);
34
+ await authenticatePreviewGroup(group, event.req.headers.get("authorization"));
35
+ const body = await (bodyPromise ??= readObject(event));
36
+ if (body.setupMode !== undefined && body.setupMode !== "pull") {
37
+ throw new PreviewEnvironmentError("Only pull setup mode is supported for preview deployments");
38
+ }
39
+ const existing = config.previewEnvironmentDeployments.find((candidate) => candidate.groupId === groupId && candidate.key === key);
40
+ const hostname = typeof body.hostname === "string" ? body.hostname : existing?.hostname;
41
+ if (!hostname)
42
+ throw new PreviewEnvironmentError("hostname is required when creating a preview");
43
+ const request = {
44
+ key,
45
+ name: typeof body.name === "string" ? body.name : undefined,
46
+ hostname,
47
+ expiresInDays: parseExpiry(body.expiresInDays),
48
+ services: parseServices(body.services).sort((a, b) => a.serviceId.localeCompare(b.serviceId))
49
+ };
50
+ const requestHash = createHash("sha256").update(JSON.stringify(request)).digest("hex");
51
+ const aad = `${groupId}:${key}:${requestHash}`;
52
+ const replay = existing?.credentialReplay;
53
+ if (replay?.requestHash === requestHash && Date.parse(replay.expiresAt) > Date.now()) {
54
+ const payload = openReplay(replay.ciphertext, input.replayEncryptionKey, aad);
55
+ return jsonResponse(payload, payload.created ? 201 : 200, NO_STORE);
56
+ }
57
+ const result = provisionPreviewDeployment(config, groupId, request, input.controlPlaneUrl);
58
+ const payload = {
59
+ created: result.created,
60
+ preview: {
61
+ key: result.deployment.key,
62
+ name: result.deployment.name,
63
+ hostname: result.deployment.hostname,
64
+ expiresAt: result.deployment.expiresAt ?? null
65
+ },
66
+ credentials: result.credentials
67
+ };
68
+ result.deployment.credentialReplay = {
69
+ requestHash,
70
+ ciphertext: sealReplay(payload, input.replayEncryptionKey, aad),
71
+ expiresAt: new Date(Date.now() + 15 * 60_000).toISOString()
72
+ };
73
+ await input.storage.saveConfig(config);
74
+ return jsonResponse(payload, result.created ? 201 : 200, NO_STORE);
75
+ });
76
+ });
77
+ input.app.delete(route, async (event) => withPreviewApiErrors(event, input.storage, async () => {
72
78
  const config = await input.storage.loadConfig();
73
79
  const groupId = event.context.params?.groupId ?? "";
74
80
  const key = event.context.params?.key ?? "";
@@ -98,18 +104,33 @@ function openReplay(value, secret, aad) {
98
104
  decipher.setAuthTag(bytes.subarray(12, 28));
99
105
  return JSON.parse(Buffer.concat([decipher.update(bytes.subarray(28)), decipher.final()]).toString("utf8"));
100
106
  }
101
- async function withPreviewApiErrors(event, action) {
102
- try {
103
- return await action();
104
- }
105
- catch (error) {
106
- if (error instanceof PreviewEnvironmentError) {
107
- return jsonResponse({ error: error.message }, error.status, NO_STORE);
107
+ async function withPreviewApiErrors(event, storage, action) {
108
+ for (let attempt = 0;; attempt++) {
109
+ try {
110
+ return await action();
111
+ }
112
+ catch (error) {
113
+ if (error instanceof ConfigRevisionConflictError) {
114
+ // Never resave the rejected snapshot: discard cached state and rerun the
115
+ // full operation, including authorization and credential replay lookup.
116
+ storage.invalidate();
117
+ if (attempt < 4) {
118
+ await delay(25 * 2 ** attempt * (1 + Math.random()));
119
+ continue;
120
+ }
121
+ return jsonResponse({ error: "Preview configuration is busy; retry submission" }, 503, {
122
+ ...NO_STORE,
123
+ "Retry-After": "1"
124
+ });
125
+ }
126
+ if (error instanceof PreviewEnvironmentError) {
127
+ return jsonResponse({ error: error.message }, error.status, NO_STORE);
128
+ }
129
+ eventObservability(event)?.logger.error("Preview deployment API failed: {msg}", {
130
+ msg: error instanceof Error ? error.message : String(error)
131
+ });
132
+ return jsonResponse({ error: "Preview operation failed" }, 500, NO_STORE);
108
133
  }
109
- eventObservability(event)?.logger.error("Preview deployment API failed: {msg}", {
110
- msg: error instanceof Error ? error.message : String(error)
111
- });
112
- return jsonResponse({ error: "Preview operation failed" }, 500, NO_STORE);
113
134
  }
114
135
  }
115
136
  async function readObject(event) {
@@ -1 +1 @@
1
- {"version":3,"file":"previewApi.js","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/previewApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"previewApi.js","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/previewApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,YAAY,EACZ,kBAAkB,EAKnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,wBAAwB,EACxB,+BAA+B,EAC/B,uBAAuB,EACvB,0BAA0B,EAC3B,MAAM,0BAA0B,CAAC;AAElC,MAAM,QAAQ,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;AAEjD,MAAM,UAAU,4BAA4B,CAAC,KAK5C;IACC,MAAM,KAAK,GAAG,GAAG,2BAA2B,4BAA4B,CAAC;IAEzE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QAC1F,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClH,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,uBAAuB,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;QAClF,MAAM,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;QAC9E,MAAM,OAAO,GAAG,+BAA+B,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,OAAO,CAAC,MAAM;YAAE,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,MAAM,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CACzE,SAAS,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE,IAAI,SAAS,CAAC,GAAG,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAC9E,CAAC;QACF,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,uBAAuB,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;QAC5F,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,GAAG,UAAU,CAAC;QACtE,OAAO,YAAY,CAAC,gBAAwC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC,CAAC;IAEJ,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACpC,6FAA6F;QAC7F,IAAI,WAAyD,CAAC;QAC9D,OAAO,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;YACpD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;YAC5F,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,uBAAuB,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YAClF,MAAM,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;YAC9E,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YACvD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;gBAC9D,MAAM,IAAI,uBAAuB,CAAC,2DAA2D,CAAC,CAAC;YACjG,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,KAAK,OAAO,IAAI,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;YAClI,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC;YACxF,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,uBAAuB,CAAC,8CAA8C,CAAC,CAAC;YACjG,MAAM,OAAO,GAAG;gBACd,GAAG;gBACH,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBAC3D,QAAQ;gBACR,aAAa,EAAE,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;gBAC9C,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;aAC9F,CAAC;YACF,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvF,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,QAAQ,EAAE,gBAAgB,CAAC;YAC1C,IAAI,MAAM,EAAE,WAAW,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBACrF,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;gBAC9E,OAAO,YAAY,CAAC,OAAO,EAAG,OAAgC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAChG,CAAC;YACD,MAAM,MAAM,GAAG,0BAA0B,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;YAC3F,MAAM,OAAO,GAAG;gBACd,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,OAAO,EAAE;oBACP,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG;oBAC1B,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI;oBAC5B,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ;oBACpC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,IAAI;iBAC/C;gBACD,WAAW,EAAE,MAAM,CAAC,WAAW;aACR,CAAC;YAC1B,MAAM,CAAC,UAAU,CAAC,gBAAgB,GAAG;gBACnC,WAAW;gBACX,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC;gBAC/D,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,WAAW,EAAE;aAC5D,CAAC;YACF,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QAC7F,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;QAC5F,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,uBAAuB,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;QAClF,MAAM,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAG,MAAM,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,KAAK,OAAO,IAAI,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QACpI,IAAI,UAAU,EAAE,CAAC;YACf,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;YAC/C,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,UAAU,CAAC,KAAgB,EAAE,MAAc,EAAE,GAAW;IAC/D,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,cAAc,CAAC,aAAa,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/F,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3F,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,MAAc,EAAE,GAAW;IAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACtH,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAc,CAAC;AAC1H,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,KAAwB,EACxB,OAA4B,EAC5B,MAA+B;IAE/B,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,2BAA2B,EAAE,CAAC;gBACjD,yEAAyE;gBACzE,wEAAwE;gBACxE,OAAO,CAAC,UAAU,EAAE,CAAC;gBACrB,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;oBAChB,MAAM,KAAK,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;oBACrD,SAAS;gBACX,CAAC;gBACD,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE,iDAAiD,EAAE,EAAE,GAAG,EAAE;oBACrF,GAAG,QAAQ;oBACX,aAAa,EAAE,GAAG;iBACnB,CAAC,CAAC;YACL,CAAC;YACD,IAAI,KAAK,YAAY,uBAAuB,EAAE,CAAC;gBAC7C,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACxE,CAAC;YACD,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE;gBAC9E,GAAG,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC5D,CAAC,CAAC;YACH,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,KAAwB;IAChD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,uBAAuB,CAAC,wCAAwC,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,IAA+B,CAAC;AACzC,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,uBAAuB,CAAC,uDAAuD,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE;QAC/E,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,MAAM,IAAI,uBAAuB,CAAC,mBAAmB,SAAS,mBAAmB,CAAC,CAAC;QAChH,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,uBAAuB,CAAC,0CAA0C,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -46,7 +46,7 @@
46
46
  "outputSchema": null
47
47
  }
48
48
  },
49
- "version": "10.6.22",
49
+ "version": "10.6.23",
50
50
  "configSchema": {
51
51
  "anyvaliVersion": "1.0",
52
52
  "schemaVersion": "1.1",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "service-betterportal-config-manager",
3
3
  "name": "service-betterportal-config-manager",
4
- "version": "10.6.22",
4
+ "version": "10.6.23",
5
5
  "description": "BetterPortal config management admin service",
6
6
  "category": "service",
7
7
  "tags": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@betterportal/config-manager",
3
- "version": "10.6.22",
3
+ "version": "10.6.23",
4
4
  "description": "BetterPortal admin config management service for Node.js",
5
5
  "main": "lib/index.js",
6
6
  "types": "src/index.ts",
@@ -35,8 +35,8 @@
35
35
  "typescript": "^6.0.3"
36
36
  },
37
37
  "dependencies": {
38
- "@betterportal/framework": "10.6.22",
39
- "@betterportal/plugin-bsb": "10.6.22",
38
+ "@betterportal/framework": "10.6.23",
39
+ "@betterportal/plugin-bsb": "10.6.23",
40
40
  "@bsb/base": "^9.7.3",
41
41
  "anyvali": "^1.1.6",
42
42
  "jsx-htmx": "4.0.100"