@betterportal/config-manager 10.6.21 → 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 +2 -0
- package/lib/.bsb/clients/service-betterportal-config-manager.d.ts +1 -1
- package/lib/.bsb/clients/service-betterportal-config-manager.js +1 -1
- package/lib/bp-contracts/org.betterportal.config-manager.json +1 -1
- package/lib/plugins/service-betterportal-config-manager/.bp-generated/registry.d.ts +12 -12
- package/lib/plugins/service-betterportal-config-manager/adminApi.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/adminApi.js +3 -11
- package/lib/plugins/service-betterportal-config-manager/adminApi.js.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/bp-routes/preview-environments/_renderer.bootstrap5/GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/bp-routes/preview-environments/_renderer.bootstrap5/GET.js +3 -9
- package/lib/plugins/service-betterportal-config-manager/bp-routes/preview-environments/_renderer.bootstrap5/GET.js.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/previewApi.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/previewApi.js +83 -62
- package/lib/plugins/service-betterportal-config-manager/previewApi.js.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/previewEnvironmentManagement.d.ts +1 -1
- package/lib/plugins/service-betterportal-config-manager/tenantManagement.d.ts +4 -4
- package/lib/schemas/service-betterportal-config-manager.json +1 -1
- package/lib/schemas/service-betterportal-config-manager.plugin.json +1 -1
- package/package.json +7 -7
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.
|
|
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.
|
|
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.
|
|
7
|
+
"version": "10.6.23",
|
|
8
8
|
"category": "service",
|
|
9
9
|
"deploymentModes": [
|
|
10
10
|
"self-hosted"
|
|
@@ -4022,7 +4022,7 @@ export declare const registry: {
|
|
|
4022
4022
|
hostnames: string[];
|
|
4023
4023
|
seo: {
|
|
4024
4024
|
visibility: "auto" | "public" | "private";
|
|
4025
|
-
serviceFailure: "known-routes" | "omit-service"
|
|
4025
|
+
serviceFailure: "error" | "known-routes" | "omit-service";
|
|
4026
4026
|
serviceCache: "none" | "1h" | "24h" | "7d";
|
|
4027
4027
|
canonicalOrigin?: string | undefined;
|
|
4028
4028
|
};
|
|
@@ -4091,7 +4091,7 @@ export declare const registry: {
|
|
|
4091
4091
|
hostnames: string[];
|
|
4092
4092
|
seo: {
|
|
4093
4093
|
visibility: "auto" | "public" | "private";
|
|
4094
|
-
serviceFailure: "known-routes" | "omit-service"
|
|
4094
|
+
serviceFailure: "error" | "known-routes" | "omit-service";
|
|
4095
4095
|
serviceCache: "none" | "1h" | "24h" | "7d";
|
|
4096
4096
|
canonicalOrigin?: string | undefined;
|
|
4097
4097
|
};
|
|
@@ -4230,7 +4230,7 @@ export declare const registry: {
|
|
|
4230
4230
|
hostnames: string[];
|
|
4231
4231
|
seo: {
|
|
4232
4232
|
visibility: "auto" | "public" | "private";
|
|
4233
|
-
serviceFailure: "known-routes" | "omit-service"
|
|
4233
|
+
serviceFailure: "error" | "known-routes" | "omit-service";
|
|
4234
4234
|
serviceCache: "none" | "1h" | "24h" | "7d";
|
|
4235
4235
|
canonicalOrigin?: string | undefined;
|
|
4236
4236
|
};
|
|
@@ -4299,7 +4299,7 @@ export declare const registry: {
|
|
|
4299
4299
|
hostnames: string[];
|
|
4300
4300
|
seo: {
|
|
4301
4301
|
visibility: "auto" | "public" | "private";
|
|
4302
|
-
serviceFailure: "known-routes" | "omit-service"
|
|
4302
|
+
serviceFailure: "error" | "known-routes" | "omit-service";
|
|
4303
4303
|
serviceCache: "none" | "1h" | "24h" | "7d";
|
|
4304
4304
|
canonicalOrigin?: string | undefined;
|
|
4305
4305
|
};
|
|
@@ -4445,7 +4445,7 @@ export declare const registry: {
|
|
|
4445
4445
|
hostnames: string[];
|
|
4446
4446
|
seo: {
|
|
4447
4447
|
visibility: "auto" | "public" | "private";
|
|
4448
|
-
serviceFailure: "known-routes" | "omit-service"
|
|
4448
|
+
serviceFailure: "error" | "known-routes" | "omit-service";
|
|
4449
4449
|
serviceCache: "none" | "1h" | "24h" | "7d";
|
|
4450
4450
|
canonicalOrigin?: string | undefined;
|
|
4451
4451
|
};
|
|
@@ -4514,7 +4514,7 @@ export declare const registry: {
|
|
|
4514
4514
|
hostnames: string[];
|
|
4515
4515
|
seo: {
|
|
4516
4516
|
visibility: "auto" | "public" | "private";
|
|
4517
|
-
serviceFailure: "known-routes" | "omit-service"
|
|
4517
|
+
serviceFailure: "error" | "known-routes" | "omit-service";
|
|
4518
4518
|
serviceCache: "none" | "1h" | "24h" | "7d";
|
|
4519
4519
|
canonicalOrigin?: string | undefined;
|
|
4520
4520
|
};
|
|
@@ -4650,7 +4650,7 @@ export declare const registry: {
|
|
|
4650
4650
|
hostnames: string[];
|
|
4651
4651
|
seo: {
|
|
4652
4652
|
visibility: "auto" | "public" | "private";
|
|
4653
|
-
serviceFailure: "known-routes" | "omit-service"
|
|
4653
|
+
serviceFailure: "error" | "known-routes" | "omit-service";
|
|
4654
4654
|
serviceCache: "none" | "1h" | "24h" | "7d";
|
|
4655
4655
|
canonicalOrigin?: string | undefined;
|
|
4656
4656
|
};
|
|
@@ -4719,7 +4719,7 @@ export declare const registry: {
|
|
|
4719
4719
|
hostnames: string[];
|
|
4720
4720
|
seo: {
|
|
4721
4721
|
visibility: "auto" | "public" | "private";
|
|
4722
|
-
serviceFailure: "known-routes" | "omit-service"
|
|
4722
|
+
serviceFailure: "error" | "known-routes" | "omit-service";
|
|
4723
4723
|
serviceCache: "none" | "1h" | "24h" | "7d";
|
|
4724
4724
|
canonicalOrigin?: string | undefined;
|
|
4725
4725
|
};
|
|
@@ -4786,7 +4786,7 @@ export declare const registry: {
|
|
|
4786
4786
|
hostnames: string[];
|
|
4787
4787
|
seo: {
|
|
4788
4788
|
visibility: "auto" | "public" | "private";
|
|
4789
|
-
serviceFailure: "known-routes" | "omit-service"
|
|
4789
|
+
serviceFailure: "error" | "known-routes" | "omit-service";
|
|
4790
4790
|
serviceCache: "none" | "1h" | "24h" | "7d";
|
|
4791
4791
|
canonicalOrigin?: string | undefined;
|
|
4792
4792
|
};
|
|
@@ -4850,7 +4850,7 @@ export declare const registry: {
|
|
|
4850
4850
|
hostnames: string[];
|
|
4851
4851
|
seo: {
|
|
4852
4852
|
visibility: "auto" | "public" | "private";
|
|
4853
|
-
serviceFailure: "known-routes" | "omit-service"
|
|
4853
|
+
serviceFailure: "error" | "known-routes" | "omit-service";
|
|
4854
4854
|
serviceCache: "none" | "1h" | "24h" | "7d";
|
|
4855
4855
|
canonicalOrigin?: string | undefined;
|
|
4856
4856
|
};
|
|
@@ -4914,7 +4914,7 @@ export declare const registry: {
|
|
|
4914
4914
|
hostnames: string[];
|
|
4915
4915
|
seo: {
|
|
4916
4916
|
visibility: "auto" | "public" | "private";
|
|
4917
|
-
serviceFailure: "known-routes" | "omit-service"
|
|
4917
|
+
serviceFailure: "error" | "known-routes" | "omit-service";
|
|
4918
4918
|
serviceCache: "none" | "1h" | "24h" | "7d";
|
|
4919
4919
|
canonicalOrigin?: string | undefined;
|
|
4920
4920
|
};
|
|
@@ -4978,7 +4978,7 @@ export declare const registry: {
|
|
|
4978
4978
|
hostnames: string[];
|
|
4979
4979
|
seo: {
|
|
4980
4980
|
visibility: "auto" | "public" | "private";
|
|
4981
|
-
serviceFailure: "known-routes" | "omit-service"
|
|
4981
|
+
serviceFailure: "error" | "known-routes" | "omit-service";
|
|
4982
4982
|
serviceCache: "none" | "1h" | "24h" | "7d";
|
|
4983
4983
|
canonicalOrigin?: string | undefined;
|
|
4984
4984
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adminApi.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/adminApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAEjB,mBAAmB,EACnB,SAAS,EACV,MAAM,yBAAyB,CAAC;AAcjC,OAAO,KAAK,EAAuE,kBAAkB,EAAE,eAAe,EAAgE,MAAM,yBAAyB,CAAC;AACtN,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAoJzD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GACvC,MAAM,GAAG,SAAS,CAepB;AAwGD,iBAAS,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkEpF;AAGD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,GAAG,MAAM,CA4CpG;AA4VD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG;IACvG,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACzB,CAwEA;AAkPD,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,iBAAiB,EACtB,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,gBAAgB,GACxB,IAAI,CAiiDN;AAwPD,wBAAgB,uBAAuB,CAAC,CAAC,EAAE;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"adminApi.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/adminApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAEjB,mBAAmB,EACnB,SAAS,EACV,MAAM,yBAAyB,CAAC;AAcjC,OAAO,KAAK,EAAuE,kBAAkB,EAAE,eAAe,EAAgE,MAAM,yBAAyB,CAAC;AACtN,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAoJzD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GACvC,MAAM,GAAG,SAAS,CAepB;AAwGD,iBAAS,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkEpF;AAGD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,GAAG,MAAM,CA4CpG;AA4VD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG;IACvG,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACzB,CAwEA;AAkPD,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,iBAAiB,EACtB,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,gBAAgB,GACxB,IAAI,CAiiDN;AAwPD,wBAAgB,uBAAuB,CAAC,CAAC,EAAE;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD,GAAG,MAAM,CAkaT"}
|
|
@@ -2718,19 +2718,11 @@ export function renderConfigClientShell(d) {
|
|
|
2718
2718
|
const text = await response.text().catch(() => "");
|
|
2719
2719
|
throw new Error(label + " returned " + (contentType || "non-JSON") + " HTTP " + response.status + (text ? ": " + text.slice(0, 160) : ""));
|
|
2720
2720
|
};
|
|
2721
|
-
const bpHeaders = () => {
|
|
2722
|
-
try {
|
|
2723
|
-
const stored = JSON.parse(localStorage.getItem("bp.headers") || "{}");
|
|
2724
|
-
const auth = Object.entries(stored).find(([name]) => name.toLowerCase() === "authorization")?.[1];
|
|
2725
|
-
return auth && typeof auth.value === "string" ? { Authorization: auth.value } : {};
|
|
2726
|
-
} catch {
|
|
2727
|
-
return {};
|
|
2728
|
-
}
|
|
2729
|
-
};
|
|
2730
2721
|
const requestTicket = async () => {
|
|
2731
|
-
|
|
2722
|
+
if (!window.BetterPortalAuth) throw new Error("Authentication runtime is unavailable. Reload this page.");
|
|
2723
|
+
const response = await window.BetterPortalAuth.fetch(cfg.ticketUrl, {
|
|
2732
2724
|
method: "POST",
|
|
2733
|
-
headers: {
|
|
2725
|
+
headers: { "Content-Type": "application/json", Accept: "application/json" },
|
|
2734
2726
|
body: JSON.stringify({
|
|
2735
2727
|
hostname: cfg.hostname,
|
|
2736
2728
|
tenantId: cfg.tenantId,
|