@r8s/recipes 0.3.2 → 0.3.4
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/auth/components.d.ts +20 -0
- package/dist/auth/components.d.ts.map +1 -1
- package/dist/auth/components.js +1 -0
- package/dist/auth/components.js.map +1 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +95 -12
- package/dist/auth.js.map +1 -1
- package/dist/database.d.ts +65 -7
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +110 -17
- package/dist/database.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/object-storage.d.ts +67 -0
- package/dist/object-storage.d.ts.map +1 -0
- package/dist/object-storage.js +138 -0
- package/dist/object-storage.js.map +1 -0
- package/dist/s3-provider.d.ts.map +1 -1
- package/dist/s3-provider.js +21 -4
- package/dist/s3-provider.js.map +1 -1
- package/package.json +1 -1
|
@@ -138,6 +138,25 @@ export interface ClientConfig {
|
|
|
138
138
|
serviceAccountsEnabled?: boolean;
|
|
139
139
|
/** Direct access grants enabled */
|
|
140
140
|
directAccessGrantsEnabled?: boolean;
|
|
141
|
+
/**
|
|
142
|
+
* Put Keycloak group memberships in the JWT `groups` claim.
|
|
143
|
+
*
|
|
144
|
+
* Renders a dedicated client scope (`<clientId>-groups`) with an
|
|
145
|
+
* `oidc-group-membership-mapper` and wires it as a default client scope —
|
|
146
|
+
* the path Netbird (and other group-aware apps) use to sync IdP groups.
|
|
147
|
+
*/
|
|
148
|
+
groupsClaim?: boolean;
|
|
149
|
+
/**
|
|
150
|
+
* Plain named client scopes this client may request (e.g. `['api']` —
|
|
151
|
+
* the scope netbird's PKCE flow adds on top of `openid profile email
|
|
152
|
+
* offline_access`). Modern Keycloak rejects authorization requests
|
|
153
|
+
* naming unregistered scopes with `invalid_scope`, so a requested scope
|
|
154
|
+
* must exist: each name renders a realm-level client scope (no mappers —
|
|
155
|
+
* pure pass-through, tokens unchanged) and is assigned to this client as
|
|
156
|
+
* an optional client scope. Names already rendered by `groupsClaim` are
|
|
157
|
+
* not shadowed.
|
|
158
|
+
*/
|
|
159
|
+
clientScopes?: string[];
|
|
141
160
|
/** Client secret (from secrets backend) */
|
|
142
161
|
secret?: string;
|
|
143
162
|
}
|
|
@@ -150,6 +169,7 @@ export interface ClientProps extends ClientConfig {
|
|
|
150
169
|
* <Client id="api" type="bearer-only" />
|
|
151
170
|
* <Client id="web" type="public" redirectUris={['https://app.example.com/*']} />
|
|
152
171
|
* <Client id="backend" type="confidential" secret="${env:BACKEND_SECRET}" />
|
|
172
|
+
* <Client id="netbird" type="confidential" redirectUris={['https://netbird.example.com/*']} groupsClaim clientScopes={['api']} />
|
|
153
173
|
*/
|
|
154
174
|
export declare function Client(props: ClientProps): import("@r8s/core").r8sElement;
|
|
155
175
|
export interface RealmsProps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/auth/components.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/auth/components.tsx"],"names":[],"mappings":"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"}
|
package/dist/auth/components.js
CHANGED
|
@@ -121,6 +121,7 @@ function Clients(props) {
|
|
|
121
121
|
* <Client id="api" type="bearer-only" />
|
|
122
122
|
* <Client id="web" type="public" redirectUris={['https://app.example.com/*']} />
|
|
123
123
|
* <Client id="backend" type="confidential" secret="${env:BACKEND_SECRET}" />
|
|
124
|
+
* <Client id="netbird" type="confidential" redirectUris={['https://netbird.example.com/*']} groupsClaim clientScopes={['api']} />
|
|
124
125
|
*/
|
|
125
126
|
function Client(props) {
|
|
126
127
|
return (0, core_1.jsx)(core_1.Fragment, {});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/auth/components.tsx"],"names":[],"mappings":";;;AA0EA,0BAEC;AAsBD,wBAEC;AAsBD,sBAkFC;AAUD,0BAEC;
|
|
1
|
+
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/auth/components.tsx"],"names":[],"mappings":";;;AA0EA,0BAEC;AAsBD,wBAEC;AAsBD,sBAkFC;AAUD,0BAEC;AA4DD,wBAEC;AAUD,wBAEC;AAlSD,oCAAqD;AACrD,iDAAkD;AAoElD;;;;GAIG;AACH,SAAgB,OAAO,CAAC,KAAmB;IACzC,OAAO,IAAA,UAAG,EAAC,eAAQ,EAAE,EAAE,CAAC,CAAA;AAC1B,CAAC;AAiBD;;;;GAIG;AACH,SAAgB,MAAM,CAAC,KAAkB;IACvC,OAAO,IAAA,UAAG,EAAC,eAAQ,EAAE,EAAE,CAAC,CAAA;AAC1B,CAAC;AAEY,QAAA,YAAY,GAAG,IAAA,wBAAa,EAAgB,EAAE,CAAC,CAAA;AAO5D;;;;;;;;;;;;GAYG;AACH,SAAgB,KAAK,CAAC,KAAiB;IACrC,MAAM,EACJ,EAAE,EACF,WAAW,EACX,OAAO,GAAG,IAAI,EACd,iBAAiB,EAAE,qBAAqB,GAAG,EAAE,EAC7C,OAAO,EAAE,WAAW,GAAG,EAAE,EACzB,QAAQ,GACT,GAAG,KAAK,CAAA;IAET,uDAAuD;IACvD,MAAM,OAAO,GAAmB,CAAC,GAAG,WAAW,CAAC,CAAA;IAChD,MAAM,iBAAiB,GAA6B,CAAC,GAAG,qBAAqB,CAAC,CAAA;IAC9E,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;IAElE,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;YAC1D,kBAAkB;YAClB,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC3B,MAAM,YAAY,GAAI,KAAa,CAAC,KAAK,CAAA;gBACzC,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC;oBACzD,CAAC,CAAC,YAAY,CAAC,QAAQ;oBACvB,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;gBAC3B,KAAK,MAAM,WAAW,IAAI,cAAc,EAAE,CAAC;oBACzC,IACE,WAAW;wBACX,OAAO,WAAW,KAAK,QAAQ;wBAC/B,MAAM,IAAI,WAAW;wBACrB,WAAW,CAAC,IAAI,KAAK,MAAM,EAC3B,CAAC;wBACD,OAAO,CAAC,IAAI,CAAE,WAAmB,CAAC,KAAK,CAAC,CAAA;oBAC1C,CAAC;gBACH,CAAC;YACH,CAAC;YACD,kBAAkB;YAClB,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC3B,MAAM,UAAU,GAAI,KAAa,CAAC,KAAqB,CAAA;gBACvD,iBAAiB,CAAC,IAAI,CAAC;oBACrB,KAAK,EAAE,UAAU;oBACjB,WAAW,EAAE,UAAU,CAAC,WAAW,IAAI,UAAU;oBACjD,UAAU,EAAE,MAAM;oBAClB,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,IAAI;oBACnC,UAAU,EAAE,UAAU,CAAC,UAAU,IAAI,IAAI;oBACzC,MAAM,EAAE;wBACN,QAAQ,EAAE,UAAU,CAAC,QAAQ;wBAC7B,YAAY,EAAE,UAAU,CAAC,YAAY;wBACrC,QAAQ,EAAE,qCAAqC,UAAU,CAAC,QAAQ,oBAAoB;wBACtF,gBAAgB,EAAE,qCAAqC,UAAU,CAAC,QAAQ,wBAAwB;qBACnG;iBACF,CAAC,CAAA;YACJ,CAAC;YACD,iBAAiB;YACjB,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,MAAM,WAAW,GAAI,KAAa,CAAC,KAAoB,CAAA;gBACvD,iBAAiB,CAAC,IAAI,CAAC;oBACrB,KAAK,EAAE,QAAQ;oBACf,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,QAAQ;oBAChD,UAAU,EAAE,MAAM;oBAClB,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,IAAI;oBACpC,UAAU,EAAE,WAAW,CAAC,UAAU,IAAI,IAAI;oBAC1C,MAAM,EAAE;wBACN,QAAQ,EAAE,WAAW,CAAC,QAAQ;wBAC9B,YAAY,EAAE,WAAW,CAAC,YAAY;qBACvC;iBACF,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAgB;QACzB,EAAE;QACF,WAAW;QACX,OAAO;QACP,iBAAiB;KAClB,CAAA;IAED,0DAA0D;IAC1D,MAAM,cAAc,GAAG,IAAA,iBAAU,EAAC,oBAAY,CAAC,CAAA;IAC/C,MAAM,SAAS,GAAG,CAAC,GAAG,cAAc,EAAE,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;IAE5D,gFAAgF;IAChF,OAAO,IAAA,UAAG,EAAC,oBAAY,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAA;AACnE,CAAC;AAOD;;GAEG;AACH,SAAgB,OAAO,CAAC,KAAmB;IACzC,OAAO,IAAA,UAAG,EAAC,eAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;AACpD,CAAC;AAmDD;;;;;;;;GAQG;AACH,SAAgB,MAAM,CAAC,KAAkB;IACvC,OAAO,IAAA,UAAG,EAAC,eAAQ,EAAE,EAAE,CAAC,CAAA;AAC1B,CAAC;AAOD;;GAEG;AACH,SAAgB,MAAM,CAAC,KAAkB;IACvC,OAAO,IAAA,UAAG,EAAC,eAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;AACpD,CAAC"}
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAa/C,MAAM,WAAW,SAAS;IACxB,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAA;IACZ,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oCAAoC;IACpC,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwEG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAa/C,MAAM,WAAW,SAAS;IACxB,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAA;IACZ,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oCAAoC;IACpC,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwEG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,kCAiMpC"}
|
package/dist/auth.js
CHANGED
|
@@ -132,6 +132,54 @@ function Auth(props) {
|
|
|
132
132
|
// Process children (Realms) to create KeycloakRealmImport resources
|
|
133
133
|
const realms = collectRealms(children);
|
|
134
134
|
for (const realm of realms) {
|
|
135
|
+
// One `<clientId>-groups` client scope per groupsClaim client — the
|
|
136
|
+
// oidc-group-membership-mapper puts the user's Keycloak group
|
|
137
|
+
// memberships in the JWT `groups` claim (the path Netbird et al. use
|
|
138
|
+
// to sync IdP groups). Config keys are verified against Keycloak's
|
|
139
|
+
// GroupMembershipMapper + OIDCAttributeMapperHelper (dotted keys, no
|
|
140
|
+
// spacing); values are strings — the realm representation's mapper
|
|
141
|
+
// config is Map<String, String> and `useFullPath` string-compares.
|
|
142
|
+
const groupScopes = (realm.clients ?? [])
|
|
143
|
+
.filter((client) => client.groupsClaim)
|
|
144
|
+
.map((client) => ({
|
|
145
|
+
name: `${client.id}-groups`,
|
|
146
|
+
protocol: 'openid-connect',
|
|
147
|
+
attributes: { 'include.in.token.scope': 'true' },
|
|
148
|
+
protocolMappers: [
|
|
149
|
+
{
|
|
150
|
+
name: 'groups',
|
|
151
|
+
protocol: 'openid-connect',
|
|
152
|
+
protocolMapper: 'oidc-group-membership-mapper',
|
|
153
|
+
config: {
|
|
154
|
+
'full.path': 'false',
|
|
155
|
+
'id.token.claim': 'true',
|
|
156
|
+
'access.token.claim': 'true',
|
|
157
|
+
'claim.name': 'groups',
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
],
|
|
161
|
+
}));
|
|
162
|
+
// Plain named scopes declared via <Client clientScopes={[...]}> —
|
|
163
|
+
// minimal realm-level definitions with NO mappers (pure pass-through:
|
|
164
|
+
// the scope must exist so the authorization request validates — modern
|
|
165
|
+
// Keycloak answers unknown requested scopes with invalid_scope — while
|
|
166
|
+
// tokens stay unchanged). Deduped by name across clients; a name
|
|
167
|
+
// already defined by a groupsClaim scope wins (mapper-carrying).
|
|
168
|
+
const clientScopeDefs = new Map();
|
|
169
|
+
for (const groupScope of groupScopes)
|
|
170
|
+
clientScopeDefs.set(groupScope.name, groupScope);
|
|
171
|
+
for (const client of realm.clients ?? []) {
|
|
172
|
+
for (const scopeName of client.clientScopes ?? []) {
|
|
173
|
+
if (!clientScopeDefs.has(scopeName)) {
|
|
174
|
+
clientScopeDefs.set(scopeName, {
|
|
175
|
+
name: scopeName,
|
|
176
|
+
protocol: 'openid-connect',
|
|
177
|
+
attributes: { 'include.in.token.scope': 'true' },
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
const clientScopes = [...clientScopeDefs.values()];
|
|
135
183
|
resources.push((0, core_1.jsx)('KeycloakRealmImport', {
|
|
136
184
|
apiVersion: 'k8s.keycloak.org/v2alpha1',
|
|
137
185
|
kind: 'KeycloakRealmImport',
|
|
@@ -150,18 +198,53 @@ function Auth(props) {
|
|
|
150
198
|
trustEmail: idp.trustEmail ?? false,
|
|
151
199
|
config: idp.config,
|
|
152
200
|
})),
|
|
153
|
-
clients: realm.clients?.map((client) =>
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
201
|
+
clients: realm.clients?.map((client) => {
|
|
202
|
+
// Scope names already covered by the default set (this
|
|
203
|
+
// client's own groupsClaim scope) don't repeat as optional
|
|
204
|
+
const declaredScopes = (client.clientScopes ?? []).filter((name) => !(client.groupsClaim && name === `${client.id}-groups`));
|
|
205
|
+
return {
|
|
206
|
+
clientId: client.id,
|
|
207
|
+
name: client.name ?? client.id,
|
|
208
|
+
publicClient: client.type === 'public',
|
|
209
|
+
// Redirect URIs exist exactly for the authorization-code
|
|
210
|
+
// (standard) flow — a confidential client that declares any is
|
|
211
|
+
// browser-facing (e.g. the netbird PKCE/dashboard flow), so the
|
|
212
|
+
// flow must be on for it to work
|
|
213
|
+
standardFlowEnabled: client.type === 'public' || (client.redirectUris?.length ?? 0) > 0,
|
|
214
|
+
bearerOnly: client.type === 'bearer-only',
|
|
215
|
+
serviceAccountsEnabled: client.type === 'confidential' ? true : undefined,
|
|
216
|
+
secret: client.secret,
|
|
217
|
+
redirectUris: client.redirectUris,
|
|
218
|
+
webOrigins: client.webOrigins,
|
|
219
|
+
directAccessGrantsEnabled: client.directAccessGrantsEnabled ?? false,
|
|
220
|
+
// Scopes this client may request at runtime (optional client
|
|
221
|
+
// scopes — granted when named in the request's scope param)
|
|
222
|
+
...(declaredScopes.length ? { optionalClientScopes: declaredScopes } : {}),
|
|
223
|
+
...(client.groupsClaim
|
|
224
|
+
? {
|
|
225
|
+
// Keycloak replaces the client's default-scope set with
|
|
226
|
+
// this field when present, so the long-stable stock
|
|
227
|
+
// scopes ride along — dropping them would strip
|
|
228
|
+
// profile/email claims from this client's tokens.
|
|
229
|
+
// Deliberately NOT adding 'acr' (KC 24+) / 'basic'
|
|
230
|
+
// (KC 25+): defaultClientScopes referencing an unknown
|
|
231
|
+
// scope fails the realm import on older Keycloaks, while
|
|
232
|
+
// omitting them only skips auth_time/sid/acr claims.
|
|
233
|
+
defaultClientScopes: [
|
|
234
|
+
'profile',
|
|
235
|
+
'email',
|
|
236
|
+
'roles',
|
|
237
|
+
'web-origins',
|
|
238
|
+
`${client.id}-groups`,
|
|
239
|
+
],
|
|
240
|
+
}
|
|
241
|
+
: {}),
|
|
242
|
+
};
|
|
243
|
+
}),
|
|
244
|
+
// Realm-level client scopes (rendered only when a groupsClaim
|
|
245
|
+
// or clientScopes declaration exists — imports without either
|
|
246
|
+
// stay byte-identical)
|
|
247
|
+
...(clientScopes.length > 0 ? { clientScopes } : {}),
|
|
165
248
|
},
|
|
166
249
|
},
|
|
167
250
|
}));
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.tsx"],"names":[],"mappings":";;AA6GA,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.tsx"],"names":[],"mappings":"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"}
|
package/dist/database.d.ts
CHANGED
|
@@ -83,16 +83,71 @@ export interface DatabaseProps {
|
|
|
83
83
|
postInitSQL?: string[];
|
|
84
84
|
/**
|
|
85
85
|
* Where database credentials come from. Default `'backend'`: when a
|
|
86
|
-
* secrets backend is configured on the Platform, the
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
86
|
+
* provisioning secrets backend is configured on the Platform, the
|
|
87
|
+
* credentials secret (`<name>-db-credentials`) is provisioned through
|
|
88
|
+
* it (rotation → pod restarts) and CNPG adopts it via
|
|
89
|
+
* `bootstrap.initdb.secret` — see `databaseCredentialsRef` for the
|
|
90
|
+
* exact resolution contract. `'cnpg'` forces CNPG-managed bootstrap
|
|
91
|
+
* credentials **even with a backend** — the operator generates the
|
|
92
|
+
* secret in-cluster (incl. `fqdn-uri`), matching apps that reference
|
|
93
|
+
* the CNPG-generated secret directly.
|
|
94
|
+
*
|
|
95
|
+
* Without a backend (or under passive backends that render no
|
|
96
|
+
* referenceable credentials Secret) the contract is the CNPG-generated
|
|
97
|
+
* `<name>-app` secret: `bootstrap.initdb.secret` is omitted and the
|
|
98
|
+
* operator generates the credentials in-cluster. App packages resolve
|
|
99
|
+
* the password secret through `databaseCredentialsRef` — never hardcode
|
|
100
|
+
* a `-db-credentials` name.
|
|
91
101
|
*/
|
|
92
102
|
credentialsMode?: 'backend' | 'cnpg';
|
|
93
103
|
/** Child components rendered with this database's connection info in context */
|
|
94
104
|
children?: unknown;
|
|
95
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Resolve the bootstrap credentials Secret for a CNPG `Database` — the
|
|
108
|
+
* single resolution contract for app packages. Every DB-password
|
|
109
|
+
* `secretKeyRef` must point at the Secret this helper resolves, never at
|
|
110
|
+
* a hardcoded name.
|
|
111
|
+
*
|
|
112
|
+
* Resolution rule:
|
|
113
|
+
*
|
|
114
|
+
* | secrets backend | credentialsMode | resolved Secret | provisioned by |
|
|
115
|
+
* |--------------------------------|-----------------|--------------------------|----------------|
|
|
116
|
+
* | openbao / vault | 'backend' | `<name>-db-credentials` | the backend (CNPG adopts it via `bootstrap.initdb.secret`; rotation → pod restarts) |
|
|
117
|
+
* | sealed-secrets | 'backend' | `<name>-db-credentials` | the `SealedSecret` the Database recipe renders (sealed by the operator) |
|
|
118
|
+
* | none | (any) | `<name>-app` | CNPG generates it in-cluster (`bootstrap.initdb.secret` is omitted) |
|
|
119
|
+
* | openbao / vault / sealed-secrets | 'cnpg' | `<name>-app` | CNPG generates it in-cluster |
|
|
120
|
+
* | kubernetes / manual-secrets (passive) | 'backend' | `<name>-app` | CNPG generates it in-cluster — nothing provisions a referenceable Secret |
|
|
121
|
+
*
|
|
122
|
+
* **Shared clusters** (a surrounding `<Cluster>` recipe instead of a
|
|
123
|
+
* dedicated CNPG cluster) always resolve `<name>-db-credentials` when a
|
|
124
|
+
* provisioning backend is in scope: CNPG only generates credentials for
|
|
125
|
+
* dedicated clusters, so the backend is the only provisioner there — an
|
|
126
|
+
* explicit `credentialsMode: 'cnpg'` cannot be honored and resolves as
|
|
127
|
+
* `'backend'` (`createSecretResources` throws without a backend).
|
|
128
|
+
*
|
|
129
|
+
* The name resolution matters because CloudNativePG (≥ 1.20, verified on
|
|
130
|
+
* 1.27) does **not** auto-create a Secret referenced from
|
|
131
|
+
* `bootstrap.initdb.secret` — referencing `<name>-db-credentials` without
|
|
132
|
+
* a backend that provisions it is a guaranteed
|
|
133
|
+
* `CreateContainerConfigError` on every consuming pod. When the helper
|
|
134
|
+
* resolves `<name>-app`, the `Database` recipe omits `initdb.secret` so
|
|
135
|
+
* the operator natively generates the credentials Secret (including the
|
|
136
|
+
* `fqdn-uri` key).
|
|
137
|
+
*
|
|
138
|
+
* `key` is always `'password'` — apps that instead read the operator
|
|
139
|
+
* bundle (e.g. `fqdn-uri`) use the resolved `name` with their own key.
|
|
140
|
+
*
|
|
141
|
+
* @param name Database (CNPG Cluster) resource name
|
|
142
|
+
* @param secretProvider The `SecretContext` value (null without a Platform secrets backend)
|
|
143
|
+
* @param credentialsMode The Database's `credentialsMode` (defaults to 'backend')
|
|
144
|
+
*/
|
|
145
|
+
export declare function databaseCredentialsRef(name: string, secretProvider: {
|
|
146
|
+
backend: string;
|
|
147
|
+
} | null, credentialsMode?: 'backend' | 'cnpg'): {
|
|
148
|
+
name: string;
|
|
149
|
+
key: string;
|
|
150
|
+
};
|
|
96
151
|
/**
|
|
97
152
|
* CloudNativePG PostgreSQL database.
|
|
98
153
|
*
|
|
@@ -104,8 +159,11 @@ export interface DatabaseProps {
|
|
|
104
159
|
* connection info via DatabaseContext automatically.
|
|
105
160
|
*
|
|
106
161
|
* Credentials are managed by the secrets backend configured on the Platform.
|
|
107
|
-
* Without a backend, credentials are CNPG-managed
|
|
108
|
-
*
|
|
162
|
+
* Without a backend, credentials are CNPG-managed: `bootstrap.initdb.secret`
|
|
163
|
+
* is omitted and the operator generates the `<name>-app` credentials Secret
|
|
164
|
+
* in-cluster — apps resolve the password Secret through
|
|
165
|
+
* `databaseCredentialsRef(name, secretProvider, credentialsMode)` instead of
|
|
166
|
+
* hardcoding a name. Plaintext password props are NOT
|
|
109
167
|
* supported — rendered YAML is committed to git and applied to clusters,
|
|
110
168
|
* so a plaintext password there is a credential leak.
|
|
111
169
|
*
|
package/dist/database.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAyC,KAAK,WAAW,EAAE,MAAM,eAAe,CAAA;AAEvF;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,qIAAqI;IACrI,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,qHAAqH;IACrH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;IACzC,yCAAyC;IACzC,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAA;IACZ,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,mBAAmB,GAAG,IAAI,GAAG,KAAK,GAAG;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,WAAW,CAAA;KAAE,CAAA;IACnF;;;;OAIG;IACH,qBAAqB,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC9E,yFAAyF;IACzF,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAyC,KAAK,WAAW,EAAE,MAAM,eAAe,CAAA;AAEvF;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,qIAAqI;IACrI,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,qHAAqH;IACrH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;IACzC,yCAAyC;IACzC,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAA;IACZ,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,mBAAmB,GAAG,IAAI,GAAG,KAAK,GAAG;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,WAAW,CAAA;KAAE,CAAA;IACnF;;;;OAIG;IACH,qBAAqB,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC9E,yFAAyF;IACzF,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB;;;;;;;;;;;;;;;;;OAiBG;IACH,eAAe,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;IACpC,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAoBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,EAC1C,eAAe,GAAE,SAAS,GAAG,MAAkB,GAC9C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAM/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0EG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,oCA6T5C"}
|
package/dist/database.js
CHANGED
|
@@ -1,11 +1,73 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.databaseCredentialsRef = databaseCredentialsRef;
|
|
3
4
|
exports.Database = Database;
|
|
4
5
|
const core_1 = require("@r8s/core");
|
|
5
6
|
const operator_cnpg_1 = require("@r8s/operator-cnpg");
|
|
6
7
|
const defaults_1 = require("@r8s/core/defaults");
|
|
7
8
|
const secret_provider_1 = require("./secret-provider");
|
|
8
9
|
const s3_provider_1 = require("./s3-provider");
|
|
10
|
+
/**
|
|
11
|
+
* Does this Platform secrets backend render a Secret that the Database
|
|
12
|
+
* bootstrap reference can point at (the `<name>-db-credentials`
|
|
13
|
+
* destination createSecretResources renders)? Single source for the
|
|
14
|
+
* "provisioning" notion shared by `databaseCredentialsRef` and the
|
|
15
|
+
* backend switch in `createSecretResources` — keep the two aligned, a
|
|
16
|
+
* drift silently flips app references between the backend-provisioned
|
|
17
|
+
* Secret and the CNPG-generated `<name>-app`.
|
|
18
|
+
*/
|
|
19
|
+
function provisionsBootstrapSecret(secretProvider) {
|
|
20
|
+
return (secretProvider !== null &&
|
|
21
|
+
(secretProvider.backend === 'openbao' ||
|
|
22
|
+
secretProvider.backend === 'vault' ||
|
|
23
|
+
secretProvider.backend === 'sealed-secrets'));
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Resolve the bootstrap credentials Secret for a CNPG `Database` — the
|
|
27
|
+
* single resolution contract for app packages. Every DB-password
|
|
28
|
+
* `secretKeyRef` must point at the Secret this helper resolves, never at
|
|
29
|
+
* a hardcoded name.
|
|
30
|
+
*
|
|
31
|
+
* Resolution rule:
|
|
32
|
+
*
|
|
33
|
+
* | secrets backend | credentialsMode | resolved Secret | provisioned by |
|
|
34
|
+
* |--------------------------------|-----------------|--------------------------|----------------|
|
|
35
|
+
* | openbao / vault | 'backend' | `<name>-db-credentials` | the backend (CNPG adopts it via `bootstrap.initdb.secret`; rotation → pod restarts) |
|
|
36
|
+
* | sealed-secrets | 'backend' | `<name>-db-credentials` | the `SealedSecret` the Database recipe renders (sealed by the operator) |
|
|
37
|
+
* | none | (any) | `<name>-app` | CNPG generates it in-cluster (`bootstrap.initdb.secret` is omitted) |
|
|
38
|
+
* | openbao / vault / sealed-secrets | 'cnpg' | `<name>-app` | CNPG generates it in-cluster |
|
|
39
|
+
* | kubernetes / manual-secrets (passive) | 'backend' | `<name>-app` | CNPG generates it in-cluster — nothing provisions a referenceable Secret |
|
|
40
|
+
*
|
|
41
|
+
* **Shared clusters** (a surrounding `<Cluster>` recipe instead of a
|
|
42
|
+
* dedicated CNPG cluster) always resolve `<name>-db-credentials` when a
|
|
43
|
+
* provisioning backend is in scope: CNPG only generates credentials for
|
|
44
|
+
* dedicated clusters, so the backend is the only provisioner there — an
|
|
45
|
+
* explicit `credentialsMode: 'cnpg'` cannot be honored and resolves as
|
|
46
|
+
* `'backend'` (`createSecretResources` throws without a backend).
|
|
47
|
+
*
|
|
48
|
+
* The name resolution matters because CloudNativePG (≥ 1.20, verified on
|
|
49
|
+
* 1.27) does **not** auto-create a Secret referenced from
|
|
50
|
+
* `bootstrap.initdb.secret` — referencing `<name>-db-credentials` without
|
|
51
|
+
* a backend that provisions it is a guaranteed
|
|
52
|
+
* `CreateContainerConfigError` on every consuming pod. When the helper
|
|
53
|
+
* resolves `<name>-app`, the `Database` recipe omits `initdb.secret` so
|
|
54
|
+
* the operator natively generates the credentials Secret (including the
|
|
55
|
+
* `fqdn-uri` key).
|
|
56
|
+
*
|
|
57
|
+
* `key` is always `'password'` — apps that instead read the operator
|
|
58
|
+
* bundle (e.g. `fqdn-uri`) use the resolved `name` with their own key.
|
|
59
|
+
*
|
|
60
|
+
* @param name Database (CNPG Cluster) resource name
|
|
61
|
+
* @param secretProvider The `SecretContext` value (null without a Platform secrets backend)
|
|
62
|
+
* @param credentialsMode The Database's `credentialsMode` (defaults to 'backend')
|
|
63
|
+
*/
|
|
64
|
+
function databaseCredentialsRef(name, secretProvider, credentialsMode = 'backend') {
|
|
65
|
+
const backendProvisions = credentialsMode !== 'cnpg' && provisionsBootstrapSecret(secretProvider);
|
|
66
|
+
return {
|
|
67
|
+
name: backendProvisions ? `${name}-db-credentials` : `${name}-app`,
|
|
68
|
+
key: 'password',
|
|
69
|
+
};
|
|
70
|
+
}
|
|
9
71
|
/**
|
|
10
72
|
* CloudNativePG PostgreSQL database.
|
|
11
73
|
*
|
|
@@ -17,8 +79,11 @@ const s3_provider_1 = require("./s3-provider");
|
|
|
17
79
|
* connection info via DatabaseContext automatically.
|
|
18
80
|
*
|
|
19
81
|
* Credentials are managed by the secrets backend configured on the Platform.
|
|
20
|
-
* Without a backend, credentials are CNPG-managed
|
|
21
|
-
*
|
|
82
|
+
* Without a backend, credentials are CNPG-managed: `bootstrap.initdb.secret`
|
|
83
|
+
* is omitted and the operator generates the `<name>-app` credentials Secret
|
|
84
|
+
* in-cluster — apps resolve the password Secret through
|
|
85
|
+
* `databaseCredentialsRef(name, secretProvider, credentialsMode)` instead of
|
|
86
|
+
* hardcoding a name. Plaintext password props are NOT
|
|
22
87
|
* supported — rendered YAML is committed to git and applied to clusters,
|
|
23
88
|
* so a plaintext password there is a credential leak.
|
|
24
89
|
*
|
|
@@ -114,7 +179,7 @@ function Database(props) {
|
|
|
114
179
|
`working backups slowly fills its PVC.\n` +
|
|
115
180
|
`\n` +
|
|
116
181
|
`There is no <S3Provider> in scope, so backups cannot be defaulted on.\n` +
|
|
117
|
-
`
|
|
182
|
+
`Fix: add one in scope (inside a <Platform> or stand-alone) and backups\n` +
|
|
118
183
|
`enable automatically:\n` +
|
|
119
184
|
` import { Database, S3Provider, MinIO } from '@r8s/recipes'\n` +
|
|
120
185
|
` <S3Provider provider={<MinIO endpoint="https://rustfs:9000" bucket="infra" credentialsSecret="infra-s3-creds" />}>\n` +
|
|
@@ -156,10 +221,11 @@ function Database(props) {
|
|
|
156
221
|
if (backupSpec && (!backupSpec.endpointURL || !backupSpec.destinationPath)) {
|
|
157
222
|
throw new Error(`Database "${name}" has backup configured without an S3 target.\n` +
|
|
158
223
|
`\n` +
|
|
159
|
-
`
|
|
224
|
+
`Fix: add an <S3Provider> to the Platform — endpoint, bucket and credentials are derived from it:\n` +
|
|
160
225
|
` <Platform>\n` +
|
|
161
226
|
` <S3Provider provider={<MinIO endpoint="https://rustfs:9000" bucket="infra" credentialsSecret="infra-s3-creds" />}>\n` +
|
|
162
227
|
` <Database name="${name}" backup />\n` +
|
|
228
|
+
` </S3Provider>\n` +
|
|
163
229
|
` </Platform>\n` +
|
|
164
230
|
`\n` +
|
|
165
231
|
`or pass the target explicitly:\n` +
|
|
@@ -170,7 +236,19 @@ function Database(props) {
|
|
|
170
236
|
const clusterConfig = (0, core_1.useContext)(defaults_1.ClusterContext);
|
|
171
237
|
const secretProvider = (0, core_1.useContext)(defaults_1.SecretContext);
|
|
172
238
|
const sharedOperators = (0, core_1.useContext)(defaults_1.OperatorContext);
|
|
239
|
+
// Provisioning destination for backend-provisioned credentials (the name
|
|
240
|
+
// createSecretResources renders). The bootstrap REF consumers use is the
|
|
241
|
+
// resolved credentialsRef below — the two names coincide exactly when a
|
|
242
|
+
// provisioning backend is active.
|
|
173
243
|
const secretName = `${name}-db-credentials`;
|
|
244
|
+
// Central credentials contract (see databaseCredentialsRef): the Secret
|
|
245
|
+
// the bootstrap password lives in and every consumer must reference.
|
|
246
|
+
// Shared clusters have no CNPG bootstrap generation (CNPG only
|
|
247
|
+
// provisions for dedicated clusters and createSecretResources throws
|
|
248
|
+
// without a backend), so the backend always provisions there.
|
|
249
|
+
const credentialsRef = clusterConfig
|
|
250
|
+
? databaseCredentialsRef(name, secretProvider, 'backend')
|
|
251
|
+
: databaseCredentialsRef(name, secretProvider, credentialsMode);
|
|
174
252
|
const resources = [];
|
|
175
253
|
if (clusterConfig) {
|
|
176
254
|
// Shared cluster — reuse connection info from the surrounding Cluster
|
|
@@ -179,7 +257,7 @@ function Database(props) {
|
|
|
179
257
|
port: 5432,
|
|
180
258
|
database: databaseName,
|
|
181
259
|
username: ownerName,
|
|
182
|
-
passwordSecret:
|
|
260
|
+
passwordSecret: credentialsRef,
|
|
183
261
|
passwordKey: 'password',
|
|
184
262
|
vendor: 'postgres',
|
|
185
263
|
};
|
|
@@ -205,8 +283,9 @@ function Database(props) {
|
|
|
205
283
|
else {
|
|
206
284
|
throw new Error(`Database "${name}" has backup configured without backup credentials.\n` +
|
|
207
285
|
`\n` +
|
|
208
|
-
`
|
|
286
|
+
`The backup has an S3 target but no credentials Secret to authenticate with.\n` +
|
|
209
287
|
`\n` +
|
|
288
|
+
`Fix: add an <S3Provider> to the Platform — backup endpoint, bucket and credentials are derived from it.\n` +
|
|
210
289
|
`\n` +
|
|
211
290
|
`Set an existing Secret holding keys 'access-key-id' and 'secret-access-key':\n` +
|
|
212
291
|
` backup={{ ..., credentialsSecret: 'my-backup-creds' }}\n` +
|
|
@@ -229,9 +308,15 @@ function Database(props) {
|
|
|
229
308
|
initdb: {
|
|
230
309
|
database: databaseName,
|
|
231
310
|
owner: ownerName,
|
|
232
|
-
//
|
|
233
|
-
//
|
|
234
|
-
|
|
311
|
+
// Reference the provisioned bootstrap secret ONLY when the
|
|
312
|
+
// contract resolves to it (see databaseCredentialsRef) — CNPG
|
|
313
|
+
// does not auto-create a referenced Secret, so every other
|
|
314
|
+
// combination omits initdb.secret and the operator generates
|
|
315
|
+
// the native credentials secret (`<name>-app`, incl. fqdn-uri
|
|
316
|
+
// references) in-cluster.
|
|
317
|
+
...(credentialsRef.name === secretName
|
|
318
|
+
? { secret: { name: credentialsRef.name } }
|
|
319
|
+
: {}),
|
|
235
320
|
// Roles/extensions the application needs on a fresh cluster —
|
|
236
321
|
// applied once by CNPG after the initial bootstrap.
|
|
237
322
|
...(postInitSQL && postInitSQL.length > 0
|
|
@@ -268,7 +353,7 @@ function Database(props) {
|
|
|
268
353
|
port: 5432,
|
|
269
354
|
database: databaseName,
|
|
270
355
|
username: ownerName,
|
|
271
|
-
passwordSecret:
|
|
356
|
+
passwordSecret: credentialsRef,
|
|
272
357
|
passwordKey: 'password',
|
|
273
358
|
vendor: 'postgres',
|
|
274
359
|
};
|
|
@@ -292,13 +377,16 @@ function Database(props) {
|
|
|
292
377
|
resources.push(...createStaticSecretResource(`${name}-backup-credentials`, `${name}-backup-credentials`, namespace, secretProvider, `${secretProvider.path}/${name}-s3-credentials`, undefined));
|
|
293
378
|
}
|
|
294
379
|
}
|
|
295
|
-
//
|
|
296
|
-
//
|
|
297
|
-
//
|
|
298
|
-
//
|
|
299
|
-
//
|
|
300
|
-
//
|
|
301
|
-
//
|
|
380
|
+
// Backend-provisioned credentials: whenever the active backend renders
|
|
381
|
+
// a Secret for the bootstrap reference (openbao/vault static sync,
|
|
382
|
+
// sealed-secrets bundle — the exact set databaseCredentialsRef
|
|
383
|
+
// resolves to `<name>-db-credentials`), it is created here. Passive
|
|
384
|
+
// backends render nothing on dedicated clusters and
|
|
385
|
+
// 'cnpg' credentialsMode skips provisioning entirely — in both cases
|
|
386
|
+
// the operator generates the bootstrap secret in-cluster (incl.
|
|
387
|
+
// fqdn-uri); apps referencing the CNPG-generated secret directly
|
|
388
|
+
// (e.g. paperclip's externalURLSecretRef) work without vault-stored
|
|
389
|
+
// DB credentials.
|
|
302
390
|
if (secretProvider && credentialsMode === 'backend') {
|
|
303
391
|
resources.push(...createSecretResources(name, namespace, secretName, secretProvider, 'dedicated', rolloutRestartTargets));
|
|
304
392
|
}
|
|
@@ -335,6 +423,11 @@ function createSecretResources(name, namespace, secretName, secretProvider, mode
|
|
|
335
423
|
`Supported backends: 'openbao', 'vault', 'sealed-secrets', 'kubernetes', 'manual-secrets'`);
|
|
336
424
|
}
|
|
337
425
|
switch (secretProvider.backend) {
|
|
426
|
+
// 'vault'/'openbao' render the static sync and 'sealed-secrets' the
|
|
427
|
+
// SealedSecret — both into the same `<name>-db-credentials` destination
|
|
428
|
+
// (secretName). These cases are exactly the set
|
|
429
|
+
// provisionsBootstrapSecret() recognizes for the credentials contract;
|
|
430
|
+
// keep them in sync with it.
|
|
338
431
|
case 'vault':
|
|
339
432
|
case 'openbao':
|
|
340
433
|
resources.push(...createStaticSecretResource(`${name}-db-secret`, secretName, namespace, secretProvider, `${secretProvider.path}/${name}`, rolloutRestartTargets));
|
package/dist/database.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { Platform, type PlatformProps, type RoutingMode } from './platform';
|
|
|
2
2
|
export { R8sCluster, type R8sClusterProps } from './r8s-cluster';
|
|
3
3
|
export { Namespace, type NamespaceProps } from './namespace';
|
|
4
4
|
export { App, type AppProps } from './app';
|
|
5
|
-
export { Database, type DatabaseProps } from './database';
|
|
5
|
+
export { Database, type DatabaseProps, databaseCredentialsRef } from './database';
|
|
6
6
|
export { Endpoint, type EndpointProps } from './endpoint';
|
|
7
7
|
export { WebService, type WebServiceProps, type SecretRef, type VaultSecretRef, } from './web-service';
|
|
8
8
|
export { Auth, type AuthProps } from './auth';
|
|
@@ -14,6 +14,7 @@ export { EndpointProvider, type EndpointProviderProps, type EndpointProviderValu
|
|
|
14
14
|
export { CertProvider, type CertProviderProps, type CertProviderValue, type CertConfig, CertContext, CertManager, type CertManagerProps, } from './cert-provider';
|
|
15
15
|
export { StaticSecret, type StaticSecretProps } from './static-secret';
|
|
16
16
|
export { S3Provider, type S3ProviderProps, type S3Config, useS3, MinIO, AwsS3, Bucket, type BucketProps, isBucketElement, resolveBucket, } from './s3-provider';
|
|
17
|
+
export { resolveObjectStorage, type ObjectStorageStore, type ObjectStorageBucketDescriptor, } from './object-storage';
|
|
17
18
|
export { useOperators } from './use-operators';
|
|
18
19
|
export { secretsRequiredError, type SecretsRequiredOptions } from './errors';
|
|
19
20
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAC3E,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAC3E,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AACjF,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA;AACzD,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,cAAc,GACpB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAA;AAGnD,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,OAAO,EACP,KAAK,YAAY,EACjB,KAAK,EACL,KAAK,UAAU,EACf,aAAa,EACb,KAAK,kBAAkB,EACvB,aAAa,EACb,KAAK,kBAAkB,EACvB,4BAA4B,EAC5B,mBAAmB,GACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,UAAU,EACV,WAAW,EACX,KAAK,gBAAgB,GACtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,eAAe,EACf,KAAK,EACL,KAAK,UAAU,EACf,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,WAAW,EACX,WAAW,EACX,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAEtE,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,EACL,KAAK,EACL,KAAK,EACL,MAAM,EACN,KAAK,WAAW,EAChB,eAAe,EACf,aAAa,GACd,MAAM,eAAe,CAAA;AAKtB,OAAO,EACL,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,KAAK,6BAA6B,GACnC,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,KAAK,sBAAsB,EAAE,MAAM,UAAU,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// with good defaults. Named after what the user wants to achieve, not the
|
|
5
5
|
// underlying tools.
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.secretsRequiredError = exports.useOperators = exports.resolveBucket = exports.isBucketElement = exports.Bucket = exports.AwsS3 = exports.MinIO = exports.useS3 = exports.S3Provider = exports.StaticSecret = exports.CertManager = exports.CertContext = exports.CertProvider = exports.EnvoyGateway = exports.Nginx = exports.EndpointContext = exports.EndpointProvider = exports.ExternalDns = exports.DnsContext = exports.DnsProvider = exports.canProvisionSecrets = exports.provisionerForSecretProvider = exports.ManualSecrets = exports.SealedSecrets = exports.Vault = exports.OpenBao = exports.SecretProvider = exports.Backup = exports.Monitoring = exports.Auth = exports.WebService = exports.Endpoint = exports.Database = exports.App = exports.Namespace = exports.R8sCluster = exports.Platform = void 0;
|
|
7
|
+
exports.secretsRequiredError = exports.useOperators = exports.resolveObjectStorage = exports.resolveBucket = exports.isBucketElement = exports.Bucket = exports.AwsS3 = exports.MinIO = exports.useS3 = exports.S3Provider = exports.StaticSecret = exports.CertManager = exports.CertContext = exports.CertProvider = exports.EnvoyGateway = exports.Nginx = exports.EndpointContext = exports.EndpointProvider = exports.ExternalDns = exports.DnsContext = exports.DnsProvider = exports.canProvisionSecrets = exports.provisionerForSecretProvider = exports.ManualSecrets = exports.SealedSecrets = exports.Vault = exports.OpenBao = exports.SecretProvider = exports.Backup = exports.Monitoring = exports.Auth = exports.WebService = exports.Endpoint = exports.databaseCredentialsRef = exports.Database = exports.App = exports.Namespace = exports.R8sCluster = exports.Platform = void 0;
|
|
8
8
|
var platform_1 = require("./platform");
|
|
9
9
|
Object.defineProperty(exports, "Platform", { enumerable: true, get: function () { return platform_1.Platform; } });
|
|
10
10
|
var r8s_cluster_1 = require("./r8s-cluster");
|
|
@@ -15,6 +15,7 @@ var app_1 = require("./app");
|
|
|
15
15
|
Object.defineProperty(exports, "App", { enumerable: true, get: function () { return app_1.App; } });
|
|
16
16
|
var database_1 = require("./database");
|
|
17
17
|
Object.defineProperty(exports, "Database", { enumerable: true, get: function () { return database_1.Database; } });
|
|
18
|
+
Object.defineProperty(exports, "databaseCredentialsRef", { enumerable: true, get: function () { return database_1.databaseCredentialsRef; } });
|
|
18
19
|
var endpoint_1 = require("./endpoint");
|
|
19
20
|
Object.defineProperty(exports, "Endpoint", { enumerable: true, get: function () { return endpoint_1.Endpoint; } });
|
|
20
21
|
var web_service_1 = require("./web-service");
|
|
@@ -58,6 +59,11 @@ Object.defineProperty(exports, "AwsS3", { enumerable: true, get: function () { r
|
|
|
58
59
|
Object.defineProperty(exports, "Bucket", { enumerable: true, get: function () { return s3_provider_1.Bucket; } });
|
|
59
60
|
Object.defineProperty(exports, "isBucketElement", { enumerable: true, get: function () { return s3_provider_1.isBucketElement; } });
|
|
60
61
|
Object.defineProperty(exports, "resolveBucket", { enumerable: true, get: function () { return s3_provider_1.resolveBucket; } });
|
|
62
|
+
// App-package accessor for the platform's object store — the
|
|
63
|
+
// objectStorage resolution contract shared by supabase/outline/eneo/
|
|
64
|
+
// nextcloud (declare-once on the S3Provider, consumers derive).
|
|
65
|
+
var object_storage_1 = require("./object-storage");
|
|
66
|
+
Object.defineProperty(exports, "resolveObjectStorage", { enumerable: true, get: function () { return object_storage_1.resolveObjectStorage; } });
|
|
61
67
|
// Composition helpers — loose building blocks for packages
|
|
62
68
|
var use_operators_1 = require("./use-operators");
|
|
63
69
|
Object.defineProperty(exports, "useOperators", { enumerable: true, get: function () { return use_operators_1.useOperators; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,wDAAwD;AACxD,4EAA4E;AAC5E,0EAA0E;AAC1E,oBAAoB;;;AAEpB,uCAA2E;AAAlE,oGAAA,QAAQ,OAAA;AACjB,6CAAgE;AAAvD,yGAAA,UAAU,OAAA;AACnB,yCAA4D;AAAnD,sGAAA,SAAS,OAAA;AAClB,6BAA0C;AAAjC,0FAAA,GAAG,OAAA;AACZ,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,wDAAwD;AACxD,4EAA4E;AAC5E,0EAA0E;AAC1E,oBAAoB;;;AAEpB,uCAA2E;AAAlE,oGAAA,QAAQ,OAAA;AACjB,6CAAgE;AAAvD,yGAAA,UAAU,OAAA;AACnB,yCAA4D;AAAnD,sGAAA,SAAS,OAAA;AAClB,6BAA0C;AAAjC,0FAAA,GAAG,OAAA;AACZ,uCAAiF;AAAxE,oGAAA,QAAQ,OAAA;AAAsB,kHAAA,sBAAsB,OAAA;AAC7D,uCAAyD;AAAhD,oGAAA,QAAQ,OAAA;AACjB,6CAKsB;AAJpB,yGAAA,UAAU,OAAA;AAKZ,+BAA6C;AAApC,4FAAA,IAAI,OAAA;AACb,2CAA+D;AAAtD,wGAAA,UAAU,OAAA;AACnB,mCAAmD;AAA1C,gGAAA,MAAM,OAAA;AAEf,wEAAwE;AACxE,qDAc0B;AAbxB,iHAAA,cAAc,OAAA;AAGd,0GAAA,OAAO,OAAA;AAEP,wGAAA,KAAK,OAAA;AAEL,gHAAA,aAAa,OAAA;AAEb,gHAAA,aAAa,OAAA;AAEb,+HAAA,4BAA4B,OAAA;AAC5B,sHAAA,mBAAmB,OAAA;AAErB,+CAQuB;AAPrB,2GAAA,WAAW,OAAA;AAIX,0GAAA,UAAU,OAAA;AACV,2GAAA,WAAW,OAAA;AAGb,yDAU4B;AAT1B,qHAAA,gBAAgB,OAAA;AAIhB,oHAAA,eAAe,OAAA;AACf,0GAAA,KAAK,OAAA;AAEL,iHAAA,YAAY,OAAA;AAGd,iDAQwB;AAPtB,6GAAA,YAAY,OAAA;AAIZ,4GAAA,WAAW,OAAA;AACX,4GAAA,WAAW,OAAA;AAIb,uDAAuD;AACvD,iDAAsE;AAA7D,6GAAA,YAAY,OAAA;AAErB,6CAWsB;AAVpB,yGAAA,UAAU,OAAA;AAGV,oGAAA,KAAK,OAAA;AACL,oGAAA,KAAK,OAAA;AACL,oGAAA,KAAK,OAAA;AACL,qGAAA,MAAM,OAAA;AAEN,8GAAA,eAAe,OAAA;AACf,4GAAA,aAAa,OAAA;AAGf,6DAA6D;AAC7D,qEAAqE;AACrE,gEAAgE;AAChE,mDAIyB;AAHvB,sHAAA,oBAAoB,OAAA;AAKtB,2DAA2D;AAC3D,iDAA8C;AAArC,6GAAA,YAAY,OAAA;AACrB,mCAA4E;AAAnE,8GAAA,oBAAoB,OAAA"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared resolution for app packages' `objectStorage` prop — the same
|
|
3
|
+
* declare-once-consumers-derive contract Database `backup` has had since
|
|
4
|
+
* #115. Packages reference this helper instead of hand-writing the same
|
|
5
|
+
* resolution block per app; the order and the guidance live in one place.
|
|
6
|
+
*/
|
|
7
|
+
import { type BucketProps, type S3Config } from './s3-provider';
|
|
8
|
+
/**
|
|
9
|
+
* The store config every S3-consuming app package needs. `region` is
|
|
10
|
+
* carried through when the provider declares one (e.g. <AwsS3
|
|
11
|
+
* region="…">) so derived consumers sign against the same region;
|
|
12
|
+
* consumers without a store region default to 'us-east-1'.
|
|
13
|
+
*/
|
|
14
|
+
export interface ObjectStorageStore {
|
|
15
|
+
endpoint: string;
|
|
16
|
+
bucket: string;
|
|
17
|
+
credentialsSecret: string;
|
|
18
|
+
region?: string;
|
|
19
|
+
}
|
|
20
|
+
/** A `<Bucket name="…" />` descriptor element (plain-struct shape). */
|
|
21
|
+
export interface ObjectStorageBucketDescriptor {
|
|
22
|
+
type: unknown;
|
|
23
|
+
props: BucketProps;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Key-name contracts against a SHARED credentials Secret: app packages
|
|
27
|
+
* read `accessKey`/`secretKey`, CNPG barman backup credentials read
|
|
28
|
+
* `access-key-id`/`secret-access-key`. When backups and app object
|
|
29
|
+
* storage both derive from one provider Secret, it must carry all four
|
|
30
|
+
* keys — the guidance below names both conventions.
|
|
31
|
+
*/
|
|
32
|
+
export declare const OBJECT_STORAGE_KEY_CONVENTIONS = "app packages read the keys accessKey/secretKey, CNPG backup credentials read access-key-id/secret-access-key";
|
|
33
|
+
/**
|
|
34
|
+
* The "omitted and nothing to derive from" guidance. Names the component
|
|
35
|
+
* + instance (WHAT), the missing configuration (WHY), and shows both ways
|
|
36
|
+
* out (HOW): wrap in an <S3Provider> so the prop can be omitted entirely,
|
|
37
|
+
* or pass a <Bucket> descriptor with the full store config.
|
|
38
|
+
*/
|
|
39
|
+
export declare function objectStorageRequiredError(component: string, name: string, what: string): Error;
|
|
40
|
+
/**
|
|
41
|
+
* Resolve an app package's `objectStorage` prop — resolution order:
|
|
42
|
+
*
|
|
43
|
+
* 1. Explicit config object → wins (unchanged behavior). Hand-built or
|
|
44
|
+
* partial objects are validated so a JS caller cannot render a broken
|
|
45
|
+
* secretKeyRef.
|
|
46
|
+
* 2. `<Bucket name="…" />` descriptor → resolved against the surrounding
|
|
47
|
+
* provider. Storage-API-style consumers take a BUCKET NAME, not a
|
|
48
|
+
* prefixed path: the descriptor's `bucket` override selects the bucket
|
|
49
|
+
* and its `name` is only the logical scope (prefix) — it never reaches
|
|
50
|
+
* the consumer's bucket config.
|
|
51
|
+
* 3. Omitted + `<S3Provider>` in scope → endpoint/bucket/credentials
|
|
52
|
+
* (and the provider's region, when declared) derive from the provider.
|
|
53
|
+
* 4. Omitted + no provider → throw with actionable guidance (both fixes).
|
|
54
|
+
*
|
|
55
|
+
* A provider without `credentialsSecret` is special-cased like Database's
|
|
56
|
+
* backup-credentials guidance: the missing piece is named with its fixes,
|
|
57
|
+
* instead of rendering a broken secretKeyRef against a Secret that does
|
|
58
|
+
* not exist.
|
|
59
|
+
*
|
|
60
|
+
* @param component Component name for the error message (e.g. 'Supabase')
|
|
61
|
+
* @param name Instance name for the error message
|
|
62
|
+
* @param what One-line WHY text, e.g. 'the Storage API writes uploads and stored files to the bucket'
|
|
63
|
+
* @param value The raw `objectStorage` prop (config object, <Bucket/> element, or undefined)
|
|
64
|
+
* @param s3 The surrounding S3Provider config (useS3()), null without one
|
|
65
|
+
*/
|
|
66
|
+
export declare function resolveObjectStorage<T extends ObjectStorageStore>(component: string, name: string, what: string, value: T | ObjectStorageBucketDescriptor | undefined, s3: S3Config | null): T;
|
|
67
|
+
//# sourceMappingURL=object-storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-storage.d.ts","sourceRoot":"","sources":["../src/object-storage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAkC,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE/F;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,MAAM,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,uEAAuE;AACvE,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,WAAW,CAAA;CACnB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,iHACqE,CAAA;AAEhH;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CAiB/F;AA2BD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,kBAAkB,EAC/D,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,CAAC,GAAG,6BAA6B,GAAG,SAAS,EACpD,EAAE,EAAE,QAAQ,GAAG,IAAI,GAClB,CAAC,CAyDH"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared resolution for app packages' `objectStorage` prop — the same
|
|
4
|
+
* declare-once-consumers-derive contract Database `backup` has had since
|
|
5
|
+
* #115. Packages reference this helper instead of hand-writing the same
|
|
6
|
+
* resolution block per app; the order and the guidance live in one place.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.OBJECT_STORAGE_KEY_CONVENTIONS = void 0;
|
|
10
|
+
exports.objectStorageRequiredError = objectStorageRequiredError;
|
|
11
|
+
exports.resolveObjectStorage = resolveObjectStorage;
|
|
12
|
+
const s3_provider_1 = require("./s3-provider");
|
|
13
|
+
/**
|
|
14
|
+
* Key-name contracts against a SHARED credentials Secret: app packages
|
|
15
|
+
* read `accessKey`/`secretKey`, CNPG barman backup credentials read
|
|
16
|
+
* `access-key-id`/`secret-access-key`. When backups and app object
|
|
17
|
+
* storage both derive from one provider Secret, it must carry all four
|
|
18
|
+
* keys — the guidance below names both conventions.
|
|
19
|
+
*/
|
|
20
|
+
exports.OBJECT_STORAGE_KEY_CONVENTIONS = 'app packages read the keys accessKey/secretKey, CNPG backup credentials read access-key-id/secret-access-key';
|
|
21
|
+
/**
|
|
22
|
+
* The "omitted and nothing to derive from" guidance. Names the component
|
|
23
|
+
* + instance (WHAT), the missing configuration (WHY), and shows both ways
|
|
24
|
+
* out (HOW): wrap in an <S3Provider> so the prop can be omitted entirely,
|
|
25
|
+
* or pass a <Bucket> descriptor with the full store config.
|
|
26
|
+
*/
|
|
27
|
+
function objectStorageRequiredError(component, name, what) {
|
|
28
|
+
return new Error(`${component} "${name}" needs object storage — ${what}.\n` +
|
|
29
|
+
`\n` +
|
|
30
|
+
`There is no <S3Provider> in scope and no objectStorage prop, so the ` +
|
|
31
|
+
`component cannot know which endpoint/bucket/credentials to use.\n` +
|
|
32
|
+
`\n` +
|
|
33
|
+
`Fix: wrap the platform in an <S3Provider> — objectStorage then derives\n` +
|
|
34
|
+
`from it and can be omitted entirely:\n` +
|
|
35
|
+
` <S3Provider provider={<MinIO endpoint="https://rustfs:9000" bucket="infra" credentialsSecret="infra-s3-creds" />}>\n` +
|
|
36
|
+
` <${component} name="${name}" host="…" />\n` +
|
|
37
|
+
` </S3Provider>\n` +
|
|
38
|
+
`\n` +
|
|
39
|
+
`or pass a <Bucket> descriptor (its \`bucket\` selects the bucket, \`name\`` +
|
|
40
|
+
` is the logical scope):\n` +
|
|
41
|
+
` <${component} name="${name}" objectStorage={<Bucket name="…" bucket="…" endpoint="https://…" credentialsSecret="…" />} />`);
|
|
42
|
+
}
|
|
43
|
+
/** Guard for a hand-built config object (JS callers bypass the types). */
|
|
44
|
+
function requireCompleteStore(component, name, store) {
|
|
45
|
+
const missing = [
|
|
46
|
+
!store.endpoint && 'endpoint',
|
|
47
|
+
!store.bucket && 'bucket',
|
|
48
|
+
!store.credentialsSecret && 'credentialsSecret',
|
|
49
|
+
].filter(Boolean);
|
|
50
|
+
if (missing.length > 0) {
|
|
51
|
+
throw new Error(`${component} "${name}": the objectStorage config object is missing: ` +
|
|
52
|
+
`${missing.join(', ')}.\n` +
|
|
53
|
+
`\n` +
|
|
54
|
+
`Fix: pass the full config object:\n` +
|
|
55
|
+
` <${component} name="${name}" objectStorage={{ endpoint: 'https://…', bucket: '…', credentialsSecret: 'object-store-credentials' }} />\n` +
|
|
56
|
+
`\n` +
|
|
57
|
+
`or omit the prop entirely under an <S3Provider> — endpoint, bucket and\n` +
|
|
58
|
+
`credentials derive from it.`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Resolve an app package's `objectStorage` prop — resolution order:
|
|
63
|
+
*
|
|
64
|
+
* 1. Explicit config object → wins (unchanged behavior). Hand-built or
|
|
65
|
+
* partial objects are validated so a JS caller cannot render a broken
|
|
66
|
+
* secretKeyRef.
|
|
67
|
+
* 2. `<Bucket name="…" />` descriptor → resolved against the surrounding
|
|
68
|
+
* provider. Storage-API-style consumers take a BUCKET NAME, not a
|
|
69
|
+
* prefixed path: the descriptor's `bucket` override selects the bucket
|
|
70
|
+
* and its `name` is only the logical scope (prefix) — it never reaches
|
|
71
|
+
* the consumer's bucket config.
|
|
72
|
+
* 3. Omitted + `<S3Provider>` in scope → endpoint/bucket/credentials
|
|
73
|
+
* (and the provider's region, when declared) derive from the provider.
|
|
74
|
+
* 4. Omitted + no provider → throw with actionable guidance (both fixes).
|
|
75
|
+
*
|
|
76
|
+
* A provider without `credentialsSecret` is special-cased like Database's
|
|
77
|
+
* backup-credentials guidance: the missing piece is named with its fixes,
|
|
78
|
+
* instead of rendering a broken secretKeyRef against a Secret that does
|
|
79
|
+
* not exist.
|
|
80
|
+
*
|
|
81
|
+
* @param component Component name for the error message (e.g. 'Supabase')
|
|
82
|
+
* @param name Instance name for the error message
|
|
83
|
+
* @param what One-line WHY text, e.g. 'the Storage API writes uploads and stored files to the bucket'
|
|
84
|
+
* @param value The raw `objectStorage` prop (config object, <Bucket/> element, or undefined)
|
|
85
|
+
* @param s3 The surrounding S3Provider config (useS3()), null without one
|
|
86
|
+
*/
|
|
87
|
+
function resolveObjectStorage(component, name, what, value, s3) {
|
|
88
|
+
// 1. Explicit object → wins (unchanged behavior), but must be complete —
|
|
89
|
+
// a partial object (untyped JS callers) would render `secretKeyRef:
|
|
90
|
+
// { name: undefined }` unless caught here.
|
|
91
|
+
if (value !== undefined && value !== null && !(0, s3_provider_1.isBucketElement)(value)) {
|
|
92
|
+
if (typeof value === 'object' && 'type' in value) {
|
|
93
|
+
throw new Error(`${component} "${name}": the objectStorage prop takes a <Bucket name="…" /> ` +
|
|
94
|
+
`descriptor or a config object — got another component`);
|
|
95
|
+
}
|
|
96
|
+
const store = value;
|
|
97
|
+
requireCompleteStore(component, name, store);
|
|
98
|
+
return value;
|
|
99
|
+
}
|
|
100
|
+
// 2. <Bucket/> descriptor — resolved against the surrounding provider.
|
|
101
|
+
// The consumer takes a bucket name, not the prefixed path the
|
|
102
|
+
// descriptor's `name` would produce (that is the logical scope only).
|
|
103
|
+
if ((0, s3_provider_1.isBucketElement)(value)) {
|
|
104
|
+
// resolveBucket already fails with actionable guidance when the store
|
|
105
|
+
// config is incomplete (no provider + partial overrides).
|
|
106
|
+
const resolved = (0, s3_provider_1.resolveBucket)(value, s3);
|
|
107
|
+
return {
|
|
108
|
+
endpoint: resolved.s3.endpoint,
|
|
109
|
+
bucket: resolved.s3.bucket,
|
|
110
|
+
credentialsSecret: resolved.s3.credentialsSecret,
|
|
111
|
+
...(resolved.s3.region !== undefined && { region: resolved.s3.region }),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
// 3. Omitted + S3Provider in scope → derive everything (region included
|
|
115
|
+
// when the provider declares one — keep every consumer signing
|
|
116
|
+
// against the same region).
|
|
117
|
+
if (s3) {
|
|
118
|
+
if (!s3.credentialsSecret) {
|
|
119
|
+
throw new Error(`${component} "${name}": the <S3Provider> has no credentialsSecret — ` +
|
|
120
|
+
`${what}.\n` +
|
|
121
|
+
`\n` +
|
|
122
|
+
`Fix: give the provider a credentials Secret (${exports.OBJECT_STORAGE_KEY_CONVENTIONS}):\n` +
|
|
123
|
+
` <S3Provider provider={<MinIO endpoint="https://rustfs:9000" bucket="infra" credentialsSecret="infra-s3-creds" />}>\n` +
|
|
124
|
+
`\n` +
|
|
125
|
+
`or pass the Secret explicitly:\n` +
|
|
126
|
+
` <${component} name="${name}" objectStorage={{ endpoint: '…', bucket: '…', credentialsSecret: 'object-store-credentials' }} />`);
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
endpoint: s3.endpoint,
|
|
130
|
+
bucket: s3.bucket,
|
|
131
|
+
credentialsSecret: s3.credentialsSecret,
|
|
132
|
+
...(s3.region !== undefined && { region: s3.region }),
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
// 4. Omitted + no provider → the actionable guidance
|
|
136
|
+
throw objectStorageRequiredError(component, name, what);
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=object-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-storage.js","sourceRoot":"","sources":["../src/object-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3-provider.d.ts","sourceRoot":"","sources":["../src/s3-provider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAA;IAChB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,MAAM,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,CAEjD;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,CAQjD;AAED,eAAO,MAAM,SAAS,2DAAuC,CAAA;AAE7D,4EAA4E;AAC5E,wBAAgB,KAAK,IAAI,QAAQ,GAAG,IAAI,CAEvC;AAED,MAAM,WAAW,eAAe;IAC9B;;;;;;;;OAQG;IACH,QAAQ,EAAE,QAAQ,CAAA;IAClB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,kCAoBhD;AAED,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAA;IACZ,yFAAyF;IACzF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"s3-provider.d.ts","sourceRoot":"","sources":["../src/s3-provider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAA;IAChB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,MAAM,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,CAEjD;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,CAQjD;AAED,eAAO,MAAM,SAAS,2DAAuC,CAAA;AAE7D,4EAA4E;AAC5E,wBAAgB,KAAK,IAAI,QAAQ,GAAG,IAAI,CAEvC;AAED,MAAM,WAAW,eAAe;IAC9B;;;;;;;;OAQG;IACH,QAAQ,EAAE,QAAQ,CAAA;IAClB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,kCAoBhD;AAED,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAA;IACZ,yFAAyF;IACzF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,QAUxC;AAED,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,EAAE,EAAE,QAAQ,CAAA;IACZ,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAA;IACd,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAA;CACb;AAED,+CAA+C;AAC/C,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,CAO/E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,EAC/B,EAAE,EAAE,QAAQ,GAAG,IAAI,GAClB,cAAc,CA6ChB"}
|
package/dist/s3-provider.js
CHANGED
|
@@ -81,8 +81,11 @@ function S3Provider(props) {
|
|
|
81
81
|
function Bucket(props) {
|
|
82
82
|
// Descriptors are VALUES — the renderer only reaches this body if someone
|
|
83
83
|
// renders <Bucket /> directly. Fail loudly instead of recursing.
|
|
84
|
-
throw new Error('Bucket is a descriptor, not a renderable component —
|
|
85
|
-
`
|
|
84
|
+
throw new Error('Bucket is a descriptor, not a renderable component — it is a value you\n' +
|
|
85
|
+
`pass into a consumer's bucket/backup prop.\n` +
|
|
86
|
+
`\n` +
|
|
87
|
+
`Fix: pass it to consumers instead of rendering it:\n` +
|
|
88
|
+
` <Database name="…" backup={<Bucket name="${props?.name ?? '…'}" />} />`);
|
|
86
89
|
}
|
|
87
90
|
/** Element check for the Bucket descriptor. */
|
|
88
91
|
function isBucketElement(value) {
|
|
@@ -107,9 +110,23 @@ function resolveBucket(element, s3) {
|
|
|
107
110
|
...(credentialsSecret !== undefined && { credentialsSecret }),
|
|
108
111
|
};
|
|
109
112
|
if (!effective.endpoint || !effective.bucket || !effective.credentialsSecret) {
|
|
110
|
-
throw new Error(`Bucket "${name}" cannot resolve its store config
|
|
113
|
+
throw new Error(`Bucket "${name}" cannot resolve its store config.\n` +
|
|
114
|
+
`Missing: ${[
|
|
115
|
+
!effective.endpoint && 'endpoint',
|
|
116
|
+
!effective.bucket && 'bucket',
|
|
117
|
+
!effective.credentialsSecret && 'credentialsSecret',
|
|
118
|
+
]
|
|
119
|
+
.filter(Boolean)
|
|
120
|
+
.join(', ')}\n` +
|
|
121
|
+
`\n` +
|
|
122
|
+
`The descriptor has no full store config of its own and there is no\n` +
|
|
123
|
+
`<S3Provider> in scope to derive endpoint/credentials from.\n` +
|
|
124
|
+
`\n` +
|
|
125
|
+
`Fix: wrap the consumer in an <S3Provider> — endpoint/credentials derive from it:\n` +
|
|
126
|
+
` <S3Provider provider={<MinIO endpoint="https://rustfs:9000" bucket="infra" credentialsSecret="infra-s3-creds" />}>\n` +
|
|
127
|
+
` <Database name="…" backup={<Bucket name="${name}" />} /> (or the consumer's bucket/objectStorage prop)\n` +
|
|
128
|
+
` </S3Provider>\n` +
|
|
111
129
|
`\n` +
|
|
112
|
-
`Wrap the consumer in an <S3Provider> (endpoint/credentials derive from it)\n` +
|
|
113
130
|
`or give the descriptor the full config:\n` +
|
|
114
131
|
` <Bucket name="${name}" bucket="…" endpoint="https://…" credentialsSecret="…" />`);
|
|
115
132
|
}
|
package/dist/s3-provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3-provider.js","sourceRoot":"","sources":["../src/s3-provider.tsx"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAuDH,sBAEC;AAqBD,sBAQC;AAKD,sBAEC;AAuBD,gCAoBC;AAiCD,
|
|
1
|
+
{"version":3,"file":"s3-provider.js","sourceRoot":"","sources":["../src/s3-provider.tsx"],"names":[],"mappings":"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"}
|