@r8s/recipes 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/app.d.ts +11 -2
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +16 -13
  4. package/dist/app.js.map +1 -1
  5. package/dist/auth.d.ts.map +1 -1
  6. package/dist/auth.js +48 -84
  7. package/dist/auth.js.map +1 -1
  8. package/dist/database.d.ts +97 -5
  9. package/dist/database.d.ts.map +1 -1
  10. package/dist/database.js +196 -86
  11. package/dist/database.js.map +1 -1
  12. package/dist/dns-provider.js +1 -1
  13. package/dist/dns-provider.js.map +1 -1
  14. package/dist/endpoint-provider.d.ts.map +1 -1
  15. package/dist/endpoint-provider.js +22 -2
  16. package/dist/endpoint-provider.js.map +1 -1
  17. package/dist/endpoint.d.ts +18 -1
  18. package/dist/endpoint.d.ts.map +1 -1
  19. package/dist/endpoint.js +92 -37
  20. package/dist/endpoint.js.map +1 -1
  21. package/dist/errors.d.ts +16 -0
  22. package/dist/errors.d.ts.map +1 -0
  23. package/dist/errors.js +19 -0
  24. package/dist/errors.js.map +1 -0
  25. package/dist/index.d.ts +5 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +13 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/operators.d.ts +16 -2
  30. package/dist/operators.d.ts.map +1 -1
  31. package/dist/operators.js +26 -0
  32. package/dist/operators.js.map +1 -1
  33. package/dist/platform.d.ts +9 -0
  34. package/dist/platform.d.ts.map +1 -1
  35. package/dist/platform.js.map +1 -1
  36. package/dist/r8s-cluster.d.ts +105 -0
  37. package/dist/r8s-cluster.d.ts.map +1 -0
  38. package/dist/r8s-cluster.js +187 -0
  39. package/dist/r8s-cluster.js.map +1 -0
  40. package/dist/secret-provider.d.ts +15 -2
  41. package/dist/secret-provider.d.ts.map +1 -1
  42. package/dist/secret-provider.js +77 -1
  43. package/dist/secret-provider.js.map +1 -1
  44. package/dist/static-secret.d.ts +107 -0
  45. package/dist/static-secret.d.ts.map +1 -0
  46. package/dist/static-secret.js +87 -0
  47. package/dist/static-secret.js.map +1 -0
  48. package/dist/web-service.d.ts +97 -0
  49. package/dist/web-service.d.ts.map +1 -1
  50. package/dist/web-service.js +117 -17
  51. package/dist/web-service.js.map +1 -1
  52. package/package.json +4 -4
package/dist/database.js CHANGED
@@ -4,6 +4,7 @@ exports.Database = Database;
4
4
  const core_1 = require("@r8s/core");
5
5
  const defaults_1 = require("@r8s/core/defaults");
6
6
  const operators_1 = require("./operators");
7
+ const secret_provider_1 = require("./secret-provider");
7
8
  /**
8
9
  * CloudNativePG PostgreSQL database.
9
10
  *
@@ -15,7 +16,10 @@ const operators_1 = require("./operators");
15
16
  * connection info via DatabaseContext automatically.
16
17
  *
17
18
  * Credentials are managed by the secrets backend configured on the Platform.
18
- * Without a secrets backend, CNPG manages the bootstrap secret automatically.
19
+ * Without a backend, credentials are CNPG-managed (bootstrap secret is
20
+ * generated automatically in-cluster). Plaintext password props are NOT
21
+ * supported — rendered YAML is committed to git and applied to clusters,
22
+ * so a plaintext password there is a credential leak.
19
23
  *
20
24
  * @example
21
25
  * import { Database } from '@r8s/recipes'
@@ -32,12 +36,49 @@ const operators_1 = require("./operators");
32
36
  * </Database>
33
37
  * </Platform>
34
38
  * )
39
+ *
40
+ * @example
41
+ * import { Platform, Database, WebService } from '@r8s/recipes'
42
+ *
43
+ * // HA database with continuous S3 backup — the backend provisions the
44
+ * // backup credentials, pods restart when they rotate.
45
+ * export default (
46
+ * <Platform secrets={{ backend: 'openbao', mount: 'kv', path: 'apps', refreshAfter: '3600s' }}>
47
+ * <Database
48
+ * name="app-db"
49
+ * storage="20Gi"
50
+ * instances={2}
51
+ * rolloutRestartTargets={[{ name: 'api' }]}
52
+ * backup={{
53
+ * destinationPath: 's3://backups/app-cnpg',
54
+ * endpointURL: 'https://s3.example.com',
55
+ * }}
56
+ * >
57
+ * <WebService name="api" image="myapp/api:v1" />
58
+ * </Database>
59
+ * </Platform>
60
+ * )
35
61
  */
36
62
  function Database(props) {
37
- const { name, namespace: namespaceProp, storage = '10Gi', operatorVersion, password, children, } = props;
63
+ const { name, namespace: namespaceProp, instances = 3, database: databaseName = name, owner: ownerName = name, storage = '10Gi', storageClass, parameters, credentialsMode = 'backend', backup, rolloutRestartTargets, operatorVersion, postInitSQL, children, } = props;
64
+ // Plaintext password props are forbidden. This also catches untyped/JS
65
+ // callers that pass `password` to Database regardless of backend — the
66
+ // rendered Secret would leak the credential into git and cluster state.
67
+ const legacyPassword = props.password;
68
+ if (legacyPassword !== undefined && legacyPassword !== null && legacyPassword !== '') {
69
+ throw new Error(`Database "${name}" received a plaintext password. ` +
70
+ `Plaintext credentials in rendered manifests are no longer supported — ` +
71
+ `the YAML is committed to git and applied to clusters, which leaks the credential.\n` +
72
+ `\n` +
73
+ `Fix: configure a secrets backend on the Platform and let it manage credentials:\n` +
74
+ ` <Platform secrets={{ backend: 'openbao', mount: 'kv', path: 'apps' }}>\n` +
75
+ ` <Database name="${name}" />\n` +
76
+ ` </Platform>\n` +
77
+ `\n` +
78
+ `Supported backends: 'openbao', 'vault', 'sealed-secrets', 'kubernetes', 'manual-secrets'`);
79
+ }
38
80
  // Inherit namespace from <Platform> context if not explicitly set
39
- const contextNamespace = (0, core_1.useContext)(defaults_1.Namespace);
40
- const namespace = namespaceProp ?? (contextNamespace !== 'default' ? contextNamespace : undefined) ?? 'default';
81
+ const namespace = (0, defaults_1.useNamespace)(namespaceProp);
41
82
  const clusterConfig = (0, core_1.useContext)(defaults_1.ClusterContext);
42
83
  const secretProvider = (0, core_1.useContext)(defaults_1.SecretContext);
43
84
  const sharedOperators = (0, core_1.useContext)(defaults_1.OperatorContext);
@@ -48,13 +89,13 @@ function Database(props) {
48
89
  const connection = {
49
90
  host: clusterConfig.host,
50
91
  port: 5432,
51
- database: name,
52
- username: name,
92
+ database: databaseName,
93
+ username: ownerName,
53
94
  passwordSecret: { name: secretName, key: 'password' },
54
95
  passwordKey: 'password',
55
96
  vendor: 'postgres',
56
97
  };
57
- resources.push(...createSecretResources(name, namespace, secretName, secretProvider, password, clusterConfig.host));
98
+ resources.push(...createSecretResources(name, namespace, secretName, secretProvider, 'shared', undefined));
58
99
  if (children) {
59
100
  resources.push((0, core_1.jsx)(defaults_1.DatabaseContext.Provider, { value: connection, children }));
60
101
  }
@@ -62,28 +103,80 @@ function Database(props) {
62
103
  else {
63
104
  // Dedicated cluster — create full CNPG cluster
64
105
  const hasCNPG = sharedOperators.some((op) => op.name === 'cnpg');
106
+ // Backup credentials: explicit existing Secret, or provisioned by the
107
+ // secrets backend. Plaintext is never rendered.
108
+ let backupCredentials;
109
+ if (backup) {
110
+ if (backup.credentialsSecret) {
111
+ backupCredentials = backup.credentialsSecret;
112
+ }
113
+ else if (secretProvider &&
114
+ (secretProvider.backend === 'openbao' || secretProvider.backend === 'vault')) {
115
+ backupCredentials = `${name}-backup-credentials`;
116
+ }
117
+ else {
118
+ throw new Error(`Database "${name}" has backup configured without backup credentials.\n` +
119
+ `\n` +
120
+ `Set an existing Secret holding keys 'access-key-id' and 'secret-access-key':\n` +
121
+ ` backup={{ ..., credentialsSecret: 'my-backup-creds' }}\n` +
122
+ `\n` +
123
+ `or let the Platform secrets backend provision them from '<path>/${name}-s3-credentials':\n` +
124
+ ` <Platform secrets={{ backend: 'openbao', mount: 'kv', path: 'apps' }}>`);
125
+ }
126
+ }
65
127
  const cluster = {
66
128
  apiVersion: 'postgresql.cnpg.io/v1',
67
129
  kind: 'Cluster',
68
130
  metadata: { name, namespace },
69
131
  spec: {
70
- instances: 3,
71
- storage: { size: storage },
132
+ instances,
133
+ storage: {
134
+ size: storage,
135
+ ...(storageClass && { storageClass }),
136
+ },
72
137
  bootstrap: {
73
138
  initdb: {
74
- database: name,
75
- owner: name,
76
- secret: { name: secretName },
139
+ database: databaseName,
140
+ owner: ownerName,
141
+ // 'cnpg' credentialsMode: let CNPG default to '<cluster>-app'
142
+ // (the native credentials secret incl. fqdn-uri references)
143
+ ...(credentialsMode === 'cnpg' ? {} : { secret: { name: secretName } }),
144
+ // Roles/extensions the application needs on a fresh cluster —
145
+ // applied once by CNPG after the initial bootstrap.
146
+ ...(postInitSQL && postInitSQL.length > 0
147
+ ? { postInitApplicationSQL: postInitSQL }
148
+ : {}),
77
149
  },
78
150
  },
79
151
  monitoring: { enablePodMonitor: true },
152
+ ...(parameters && { postgresql: { parameters } }),
153
+ ...(backup && backupCredentials
154
+ ? {
155
+ backup: {
156
+ retentionPolicy: backup.retention ?? '30d',
157
+ barmanObjectStore: {
158
+ destinationPath: backup.destinationPath,
159
+ endpointURL: backup.endpointURL,
160
+ s3Credentials: {
161
+ accessKeyId: { name: backupCredentials, key: 'access-key-id' },
162
+ secretAccessKey: { name: backupCredentials, key: 'secret-access-key' },
163
+ },
164
+ data: { compression: backup.compression ?? 'gzip' },
165
+ wal: {
166
+ compression: backup.compression ?? 'gzip',
167
+ encryption: backup.encryption ?? 'AES256',
168
+ },
169
+ },
170
+ },
171
+ }
172
+ : {}),
80
173
  },
81
174
  };
82
175
  const connection = {
83
176
  host: `${name}-rw`,
84
177
  port: 5432,
85
- database: name,
86
- username: name,
178
+ database: databaseName,
179
+ username: ownerName,
87
180
  passwordSecret: { name: secretName, key: 'password' },
88
181
  passwordKey: 'password',
89
182
  vendor: 'postgres',
@@ -92,12 +185,31 @@ function Database(props) {
92
185
  resources.push((0, core_1.declareOperator)((0, operators_1.cnpgOperator)(operatorVersion)));
93
186
  }
94
187
  resources.push((0, core_1.jsx)('Cluster', cluster));
188
+ if (backup && backupCredentials) {
189
+ resources.push((0, core_1.jsx)('ScheduledBackup', {
190
+ apiVersion: 'postgresql.cnpg.io/v1',
191
+ kind: 'ScheduledBackup',
192
+ metadata: { name: `${name}-backup`, namespace },
193
+ spec: {
194
+ cluster: { name },
195
+ schedule: backup.schedule ?? '0 3 * * *',
196
+ backupOwnerReference: 'self',
197
+ },
198
+ }));
199
+ // Backend-provisioned S3 credentials for barman
200
+ if (!backup.credentialsSecret && secretProvider) {
201
+ resources.push(...createStaticSecretResource(`${name}-backup-credentials`, `${name}-backup-credentials`, namespace, secretProvider, `${secretProvider.path}/${name}-s3-credentials`, undefined));
202
+ }
203
+ }
95
204
  // For dedicated clusters with a secrets backend, the backend manages
96
- // credentials. For kubernetes backend, CNPG manages the bootstrap secret
97
- // automatically — but we still validate that a password was provided
98
- // when kubernetes backend is explicitly chosen.
99
- if (secretProvider) {
100
- resources.push(...createSecretResources(name, namespace, secretName, secretProvider, password, `${name}-rw`));
205
+ // credentials. For kubernetes/manual-secrets backend, CNPG manages the
206
+ // bootstrap secret automatically — no plaintext Secret is rendered.
207
+ // 'cnpg' credentialsMode: the operator generates the bootstrap secret
208
+ // in-cluster (incl. fqdn-uri) even when a secrets backend is present —
209
+ // apps referencing the CNPG-generated secret directly (e.g. paperclip's
210
+ // externalURLSecretRef) work without vault-stored DB credentials.
211
+ if (secretProvider && credentialsMode === 'backend') {
212
+ resources.push(...createSecretResources(name, namespace, secretName, secretProvider, 'dedicated', rolloutRestartTargets));
101
213
  }
102
214
  if (children) {
103
215
  resources.push((0, core_1.jsx)(defaults_1.DatabaseContext.Provider, { value: connection, children }));
@@ -107,63 +219,34 @@ function Database(props) {
107
219
  }
108
220
  /**
109
221
  * Create the secret resources for a database based on the active secrets
110
- * backend. Throws a descriptive error when a password is needed but not
111
- * provided, or when the backend is not configured.
222
+ * backend. Plaintext credentials are never rendered backends either
223
+ * reference credentials stored externally (openbao/vault), hold
224
+ * user-sealed ciphertext (sealed-secrets), or delegate to CNPG's
225
+ * in-cluster bootstrap secret generation (kubernetes/manual-secrets on
226
+ * dedicated clusters).
112
227
  */
113
- function createSecretResources(name, namespace, secretName, secretProvider, password, host) {
228
+ function createSecretResources(name, namespace, secretName, secretProvider, mode, rolloutRestartTargets) {
114
229
  const resources = [];
115
230
  if (!secretProvider) {
116
- if (!password) {
117
- throw new Error(`Database "${name}" has no secrets backend configured and no password provided.\n` +
118
- `\n` +
119
- `Fix: either set a secrets backend on the Platform:\n` +
120
- ` <Platform secrets={{ backend: 'openbao' }}>\n` +
121
- ` <Database name="${name}" />\n` +
122
- ` </Platform>\n` +
123
- `\n` +
124
- `Or provide a password directly (not recommended for production):\n` +
125
- ` <Database name="${name}" password="..." />`);
231
+ if (mode === 'dedicated') {
232
+ // CNPG generates the bootstrap secret in-cluster no credential
233
+ // in the rendered manifest at all.
234
+ return resources;
126
235
  }
127
- resources.push((0, core_1.jsx)('Secret', {
128
- apiVersion: 'v1',
129
- kind: 'Secret',
130
- metadata: { name: secretName, namespace },
131
- stringData: {
132
- password,
133
- username: name,
134
- uri: `postgresql://${name}:${password}@${host}:5432/${name}`,
135
- },
136
- }));
137
- return resources;
236
+ throw new Error(`Database "${name}" is attached to a shared Cluster without a secrets backend.\n` +
237
+ `\n` +
238
+ `CNPG only provisions credentials for databases on dedicated clusters, so a ` +
239
+ `shared-cluster database needs a managed secrets backend:\n` +
240
+ ` <Platform secrets={{ backend: 'openbao', mount: 'kv', path: 'apps' }}>\n` +
241
+ ` <Database name="${name}" />\n` +
242
+ ` </Platform>\n` +
243
+ `\n` +
244
+ `Supported backends: 'openbao', 'vault', 'sealed-secrets', 'kubernetes', 'manual-secrets'`);
138
245
  }
139
246
  switch (secretProvider.backend) {
140
247
  case 'vault':
141
- resources.push((0, core_1.jsx)('VaultStaticSecret', {
142
- apiVersion: 'secrets.hashicorp.com/v1beta1',
143
- kind: 'VaultStaticSecret',
144
- metadata: { name: `${name}-db-secret`, namespace },
145
- spec: {
146
- vaultAuthRef: secretProvider.authRef,
147
- mount: secretProvider.mount,
148
- type: 'kv-v2',
149
- path: `${secretProvider.path}/${name}`,
150
- destination: { create: true, name: secretName },
151
- },
152
- }));
153
- break;
154
248
  case 'openbao':
155
- resources.push((0, core_1.jsx)('OpenBaoStaticSecret', {
156
- apiVersion: 'secrets.openbao.org/v1beta1',
157
- kind: 'OpenBaoStaticSecret',
158
- metadata: { name: `${name}-db-secret`, namespace },
159
- spec: {
160
- openbaoAuthRef: secretProvider.authRef,
161
- mount: secretProvider.mount,
162
- type: 'kv-v2',
163
- path: `${secretProvider.path}/${name}`,
164
- destination: { create: true, name: secretName },
165
- },
166
- }));
249
+ resources.push(...createStaticSecretResource(`${name}-db-secret`, secretName, namespace, secretProvider, `${secretProvider.path}/${name}`, rolloutRestartTargets));
167
250
  break;
168
251
  case 'sealed-secrets':
169
252
  // Sealed Secrets: the user provides a sealed secret that was encrypted
@@ -182,31 +265,58 @@ function createSecretResources(name, namespace, secretName, secretProvider, pass
182
265
  }));
183
266
  break;
184
267
  case 'kubernetes':
185
- if (!password) {
186
- throw new Error(`Database "${name}" uses the 'kubernetes' secrets backend, which requires a password.\n` +
268
+ case 'manual-secrets':
269
+ // Plain Kubernetes Secrets but the credential itself must never be
270
+ // in the rendered manifest. On dedicated clusters CNPG generates the
271
+ // bootstrap secret in-cluster; on shared clusters there is nothing to
272
+ // generate the credential, so a managed backend is required.
273
+ if (mode === 'shared') {
274
+ throw new Error(`Database "${name}" uses the '${secretProvider.backend}' secrets backend on a shared Cluster.\n` +
187
275
  `\n` +
188
- `The kubernetes backend stores credentials as plain Kubernetes Secrets.\n` +
189
- `For production, use a managed backend instead:\n` +
190
- ` <Platform secrets={{ backend: 'openbao' }}>\n` +
276
+ `Credentials for shared-cluster databases cannot be provisioned automatically. ` +
277
+ `Use a managed backend instead:\n` +
278
+ ` <Platform secrets={{ backend: 'openbao', mount: 'kv', path: 'apps' }}>\n` +
279
+ ` <Database name="${name}" />\n` +
280
+ ` </Platform>\n` +
191
281
  `\n` +
192
- `Or provide a password explicitly:\n` +
193
- ` <Database name="${name}" password="..." />`);
282
+ `Supported backends: 'openbao', 'vault', 'sealed-secrets', 'kubernetes', 'manual-secrets'`);
194
283
  }
195
- resources.push((0, core_1.jsx)('Secret', {
196
- apiVersion: 'v1',
197
- kind: 'Secret',
198
- metadata: { name: secretName, namespace },
199
- stringData: {
200
- password,
201
- username: name,
202
- uri: `postgresql://${name}:${password}@${host}:5432/${name}`,
203
- },
204
- }));
205
284
  break;
206
285
  default:
207
286
  throw new Error(`Database "${name}" has an unknown secrets backend "${secretProvider.backend}".\n` +
208
- `Supported backends: 'openbao', 'vault', 'sealed-secrets', 'kubernetes'`);
287
+ `Supported backends: 'openbao', 'vault', 'sealed-secrets', 'kubernetes', 'manual-secrets'`);
209
288
  }
210
289
  return resources;
211
290
  }
291
+ /**
292
+ * Render a VaultStaticSecret / OpenBaoStaticSecret syncing one backend entry
293
+ * into a Kubernetes Secret. Rotation semantics are first-class:
294
+ * `refreshAfter` comes from the provider (Platform secrets config),
295
+ * `rolloutRestartTargets` restarts consuming workloads on rotation.
296
+ * The secret content itself is never rendered into the manifest.
297
+ *
298
+ * Delegates to the shared provisioner in raw-sync mode (empty keys → the
299
+ * destination passes the whole store entry through — byte-identical to
300
+ * the legacy inline emission). Identity awareness lives ONLY in
301
+ * `secret-provider.tsx`.
302
+ */
303
+ function createStaticSecretResource(resourceName, destinationName, namespace, secretProvider, vaultPath, rolloutRestartTargets) {
304
+ const targets = rolloutRestartTargets?.map((t) => ({
305
+ apiVersion: t.apiVersion ?? 'apps/v1',
306
+ kind: t.kind ?? 'Deployment',
307
+ name: t.name,
308
+ }));
309
+ const el = (0, secret_provider_1.provisionerForSecretProvider)(secretProvider)({
310
+ name: resourceName,
311
+ namespace,
312
+ path: vaultPath,
313
+ // Raw sync: callers (DB credentials, backup creds) don't enumerate
314
+ // store keys at render time — pass the whole entry through
315
+ keys: {},
316
+ secretName: destinationName,
317
+ refreshAfter: secretProvider.refreshAfter,
318
+ restartTargets: targets,
319
+ });
320
+ return Array.isArray(el) ? el : [el];
321
+ }
212
322
  //# sourceMappingURL=database.js.map
@@ -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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"}
@@ -102,7 +102,7 @@ function DnsProvider(props) {
102
102
  : config.settings.tsig.path;
103
103
  const SecretKind = secrets.backend === 'openbao' ? 'OpenBaoStaticSecret' : 'VaultStaticSecret';
104
104
  resources.push((0, core_1.jsx)(SecretKind, {
105
- apiVersion: 'secrets.hashicorp.com/v1alpha1',
105
+ apiVersion: 'secrets.hashicorp.com/v1beta1',
106
106
  kind: SecretKind,
107
107
  metadata: { name: secretName, namespace: 'external-dns' },
108
108
  spec: {
@@ -1 +1 @@
1
- {"version":3,"file":"dns-provider.js","sourceRoot":"","sources":["../src/dns-provider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dns-provider.js","sourceRoot":"","sources":["../src/dns-provider.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint-provider.d.ts","sourceRoot":"","sources":["../src/endpoint-provider.tsx"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gCAAgC;IAChC,GAAG,CAAC,EAAE;QACJ,qCAAqC;QACrC,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;CACF;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAQvD;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gCAAgC;IAChC,GAAG,CAAC,EAAE;QACJ,qCAAqC;QACrC,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;CACF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,cAAc,CAQrE;AAED,sCAAsC;AACtC,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,QAAQ,EAAE,OAAO,GAAG,eAAe,CAAA;IACnC,iCAAiC;IACjC,QAAQ,CAAC,EAAE;QACT,8CAA8C;QAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,sCAAsC;QACtC,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,gCAAgC;QAChC,GAAG,CAAC,EAAE;YACJ,aAAa,CAAC,EAAE,MAAM,CAAA;SACvB,CAAA;KACF,CAAA;CACF;AAED,oDAAoD;AACpD,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,eAAe,GAAG,cAAc,CAAA;AAE9E,eAAO,MAAM,eAAe,0DAAuD,CAAA;AAEnF,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,QAAQ,EAAE,qBAAqB,CAAA;IAC/B,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,kCAgB5D"}
1
+ {"version":3,"file":"endpoint-provider.d.ts","sourceRoot":"","sources":["../src/endpoint-provider.tsx"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gCAAgC;IAChC,GAAG,CAAC,EAAE;QACJ,qCAAqC;QACrC,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;CACF;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAQvD;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gCAAgC;IAChC,GAAG,CAAC,EAAE;QACJ,qCAAqC;QACrC,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;CACF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,cAAc,CAQrE;AAED,sCAAsC;AACtC,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,QAAQ,EAAE,OAAO,GAAG,eAAe,CAAA;IACnC,iCAAiC;IACjC,QAAQ,CAAC,EAAE;QACT,8CAA8C;QAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,sCAAsC;QACtC,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,gCAAgC;QAChC,GAAG,CAAC,EAAE;YACJ,aAAa,CAAC,EAAE,MAAM,CAAA;SACvB,CAAA;KACF,CAAA;CACF;AAED,oDAAoD;AACpD,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,eAAe,GAAG,cAAc,CAAA;AAE9E,eAAO,MAAM,eAAe,0DAAuD,CAAA;AAEnF,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,QAAQ,EAAE,qBAAqB,CAAA;IAC/B,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,kCAiC5D"}
@@ -64,8 +64,28 @@ exports.EndpointContext = (0, defaults_1.createContext)({ provider: 'nginx' });
64
64
  */
65
65
  function EndpointProvider(props) {
66
66
  const { provider, children } = props;
67
- // Resolve provider config
68
- const config = typeof provider === 'string' ? { provider } : provider;
67
+ // Resolve provider config. Accepts:
68
+ // - string ('nginx' | 'envoy-gateway')
69
+ // - a plain EndpointConfig object
70
+ // - a JSX element of a provider component (e.g. <EnvoyGateway className="eg" />)
71
+ // — invoked here to produce its EndpointConfig
72
+ let config;
73
+ if (typeof provider === 'string') {
74
+ config = { provider };
75
+ }
76
+ else if (provider && typeof provider === 'object') {
77
+ const element = provider;
78
+ if (typeof element.type === 'function') {
79
+ const ProviderComponent = element.type;
80
+ config = ProviderComponent(element.props ?? {});
81
+ }
82
+ else {
83
+ config = provider;
84
+ }
85
+ }
86
+ else {
87
+ config = provider;
88
+ }
69
89
  // Map to RoutingContext for backward compatibility
70
90
  const routing = {
71
91
  mode: config.provider === 'envoy-gateway' ? 'gateway' : 'ingress',
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint-provider.js","sourceRoot":"","sources":["../src/endpoint-provider.tsx"],"names":[],"mappings":";;;AAsBA,sBAQC;AAoBD,oCAQC;AAyFD,4CAgBC;AAnKD,oCAA2C;AAC3C,iDAAkD;AAClD,iDAAmD;AAoBnD,SAAgB,KAAK,CAAC,KAAiB;IACrC,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE;YACR,gBAAgB,EAAE,KAAK,CAAC,SAAS,IAAI,OAAO;YAC5C,GAAG,EAAE,KAAK,CAAC,GAAG;SACf;KACF,CAAA;AACH,CAAC;AAoBD,SAAgB,YAAY,CAAC,KAAwB;IACnD,OAAO;QACL,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE;YACR,gBAAgB,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;YACzC,GAAG,EAAE,KAAK,CAAC,GAAG;SACf;KACF,CAAA;AACH,CAAC;AAsBY,QAAA,eAAe,GAAG,IAAA,wBAAa,EAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;AA+BnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,SAAgB,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IAEpC,0BAA0B;IAC1B,MAAM,MAAM,GAAmB,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;IAErF,mDAAmD;IACnD,MAAM,OAAO,GAAG;QACd,IAAI,EAAE,MAAM,CAAC,QAAQ,KAAK,eAAe,CAAC,CAAC,CAAE,SAAmB,CAAC,CAAC,CAAE,SAAmB;QACvF,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,IAAI,IAAI;KAC5D,CAAA;IAED,OAAO,IAAA,UAAG,EAAC,yBAAc,CAAC,QAAQ,EAAE;QAClC,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,IAAA,UAAG,EAAC,uBAAe,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;KACrE,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"endpoint-provider.js","sourceRoot":"","sources":["../src/endpoint-provider.tsx"],"names":[],"mappings":";;;AAsBA,sBAQC;AAoBD,oCAQC;AAyFD,4CAiCC;AApLD,oCAA2C;AAC3C,iDAAkD;AAClD,iDAAmD;AAoBnD,SAAgB,KAAK,CAAC,KAAiB;IACrC,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE;YACR,gBAAgB,EAAE,KAAK,CAAC,SAAS,IAAI,OAAO;YAC5C,GAAG,EAAE,KAAK,CAAC,GAAG;SACf;KACF,CAAA;AACH,CAAC;AAoBD,SAAgB,YAAY,CAAC,KAAwB;IACnD,OAAO;QACL,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE;YACR,gBAAgB,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;YACzC,GAAG,EAAE,KAAK,CAAC,GAAG;SACf;KACF,CAAA;AACH,CAAC;AAsBY,QAAA,eAAe,GAAG,IAAA,wBAAa,EAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;AA+BnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,SAAgB,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IAEpC,oCAAoC;IACpC,wCAAwC;IACxC,mCAAmC;IACnC,kFAAkF;IAClF,kDAAkD;IAClD,IAAI,MAAsB,CAAA;IAC1B,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,GAAG,EAAE,QAAQ,EAAE,CAAA;IACvB,CAAC;SAAM,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,QAA8C,CAAA;QAC9D,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAqC,CAAA;YACvE,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;QACjD,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,QAA0B,CAAA;QACrC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,QAA0B,CAAA;IACrC,CAAC;IAED,mDAAmD;IACnD,MAAM,OAAO,GAAG;QACd,IAAI,EAAE,MAAM,CAAC,QAAQ,KAAK,eAAe,CAAC,CAAC,CAAE,SAAmB,CAAC,CAAC,CAAE,SAAmB;QACvF,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,IAAI,IAAI;KAC5D,CAAA;IAED,OAAO,IAAA,UAAG,EAAC,yBAAc,CAAC,QAAQ,EAAE;QAClC,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,IAAA,UAAG,EAAC,uBAAe,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;KACrE,CAAC,CAAA;AACJ,CAAC"}
@@ -6,10 +6,27 @@ export interface EndpointProps extends Omit<BaseRouteProps, 'host'> {
6
6
  serviceName: string;
7
7
  /** Service port (default: 80) */
8
8
  servicePort?: number;
9
+ /**
10
+ * Request path to route (default: '/'). Path-based routes are rendered
11
+ * as Prefix paths in Ingress mode AND PathPrefix matches in Gateway
12
+ * (HTTPRoute) mode so one host can serve multiple services.
13
+ */
14
+ path?: string;
15
+ /** Ingress pathType when `path` is set (default: 'Prefix') */
16
+ pathType?: 'Prefix' | 'Exact' | 'ImplementationSpecific';
9
17
  /** Create a DNS record via ExternalDNS (default: false, or true when DnsProvider is set) */
10
18
  dns?: boolean;
11
19
  /** DNS record TTL in seconds (default: 300) */
12
20
  dnsTtl?: number;
21
+ /**
22
+ * Reference to an existing shared Gateway instead of creating a new one.
23
+ * Set this to avoid allocating a new LoadBalancer IP per app.
24
+ * When set, only an HTTPRoute is created (no Gateway resource).
25
+ */
26
+ sharedGateway?: {
27
+ name: string;
28
+ namespace?: string;
29
+ };
13
30
  }
14
31
  /**
15
32
  * Endpoint — cluster-adaptive routing for a service.
@@ -39,5 +56,5 @@ export interface EndpointProps extends Omit<BaseRouteProps, 'host'> {
39
56
  * </Platform>
40
57
  * )
41
58
  */
42
- export declare function Endpoint(props: EndpointProps): import("@r8s/core").r8sElement;
59
+ export declare function Endpoint(props: EndpointProps): unknown;
43
60
  //# sourceMappingURL=endpoint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../src/endpoint.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAQpD,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;IACjE,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAA;IACZ,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4FAA4F;IAC5F,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,kCAqN5C"}
1
+ {"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../src/endpoint.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAQpD,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;IACjE,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAA;IACZ,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,wBAAwB,CAAA;IACxD,4FAA4F;IAC5F,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,aAAa,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACrD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,WAoR5C"}