@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/endpoint.js CHANGED
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Endpoint = Endpoint;
4
4
  const core_1 = require("@r8s/core");
5
5
  const defaults_1 = require("@r8s/core/defaults");
6
+ const defaults_2 = require("@r8s/core/defaults");
6
7
  const endpoint_provider_1 = require("./endpoint-provider");
7
8
  const operators_1 = require("./operators");
8
9
  const crds_1 = require("@r8s/crds");
@@ -37,18 +38,38 @@ const dns_provider_1 = require("./dns-provider");
37
38
  * )
38
39
  */
39
40
  function Endpoint(props) {
40
- const { name, namespace = 'default', host, serviceName, servicePort = 80, tls, annotations = {}, dns, dnsTtl = 300, } = props;
41
- const routing = (0, core_1.useContext)(defaults_1.RoutingContext);
41
+ const { name, namespace: namespaceProp, host, serviceName, servicePort = 80, path, pathType, tls, annotations = {}, dns, dnsTtl = 300, sharedGateway, } = props;
42
+ const namespace = (0, defaults_1.useNamespace)(namespaceProp);
43
+ const routing = (0, core_1.useContext)(defaults_2.RoutingContext);
42
44
  const endpointConfig = (0, core_1.useContext)(endpoint_provider_1.EndpointContext);
43
- const sharedOperators = (0, core_1.useContext)(defaults_1.OperatorContext);
45
+ const sharedOperators = (0, core_1.useContext)(defaults_2.OperatorContext);
44
46
  const dnsConfig = (0, core_1.useContext)(dns_provider_1.DnsContext);
45
47
  // DNS defaults to true when DnsProvider is set, unless explicitly disabled
46
48
  const createDnsRecord = dns ?? dnsConfig !== null;
49
+ // Custom route provisioner hook: a RoutingConfig carrying route() owns the
50
+ // whole render for this endpoint (custom ingress controllers / L7 stacks)
51
+ if (routing.route) {
52
+ const el = routing.route({
53
+ name,
54
+ namespace,
55
+ host,
56
+ serviceName,
57
+ servicePort,
58
+ pathPrefix: path,
59
+ annotations,
60
+ tls,
61
+ });
62
+ return Array.isArray(el) ? (0, core_1.jsx)(core_1.Fragment, { children: el }) : el;
63
+ }
64
+ // Mode resolution: the Platform RoutingContext describes the cluster, but
65
+ // an explicit EndpointProvider with <EnvoyGateway /> opts this endpoint
66
+ // into Gateway API even without a Platform (or CLI route-level default)
67
+ const gatewayMode = routing.mode === 'gateway' || endpointConfig.provider === 'envoy-gateway';
47
68
  const resources = [];
48
- if (routing.mode === 'gateway') {
49
- const gatewayClassName = routing.gatewayClassName || 'eg';
69
+ if (gatewayMode) {
70
+ const gatewayClassName = endpointConfig.settings?.gatewayClassName ?? routing.gatewayClassName ?? 'eg';
50
71
  const secretName = tls?.secretName || `${name}-tls`;
51
- const issuerName = tls?.clusterIssuer || 'letsencrypt-prod';
72
+ const issuerName = tls?.clusterIssuer ?? endpointConfig.settings?.tls?.clusterIssuer ?? 'letsencrypt-prod';
52
73
  const hasCertManager = sharedOperators.some((op) => op.name === 'cert-manager');
53
74
  const hasEnvoyGateway = sharedOperators.some((op) => op.name === 'envoy-gateway');
54
75
  if (tls && !hasCertManager) {
@@ -77,46 +98,77 @@ function Endpoint(props) {
77
98
  }
78
99
  // HTTPS listener with TLS, HTTP listener without
79
100
  const useHttps = !!tls;
80
- resources.push((0, core_1.jsx)('Gateway', {
101
+ // Only create a Gateway when no sharedGateway is provided.
102
+ // When sharedGateway is set, attach an HTTPRoute to the existing
103
+ // gateway instead of allocating a new LoadBalancer IP.
104
+ if (!sharedGateway) {
105
+ resources.push((0, core_1.jsx)('Gateway', {
106
+ apiVersion: 'gateway.networking.k8s.io/v1',
107
+ kind: 'Gateway',
108
+ metadata: {
109
+ name: `${name}-gateway`,
110
+ namespace,
111
+ // ExternalDNS gateway source picks up hostnames from this annotation
112
+ ...(createDnsRecord && {
113
+ annotations: {
114
+ 'external-dns.alpha.kubernetes.io/hostname': host,
115
+ },
116
+ }),
117
+ },
118
+ spec: {
119
+ gatewayClassName,
120
+ listeners: [
121
+ {
122
+ name: useHttps ? 'https' : 'http',
123
+ protocol: useHttps ? 'HTTPS' : 'HTTP',
124
+ port: useHttps ? 443 : 80,
125
+ hostname: host,
126
+ ...(tls && {
127
+ tls: {
128
+ mode: 'Terminate',
129
+ certificateRefs: [{ name: secretName }],
130
+ },
131
+ }),
132
+ },
133
+ ],
134
+ },
135
+ }));
136
+ }
137
+ const parentRef = sharedGateway
138
+ ? {
139
+ name: sharedGateway.name,
140
+ ...(sharedGateway.namespace && { namespace: sharedGateway.namespace }),
141
+ }
142
+ : { name: `${name}-gateway` };
143
+ resources.push((0, core_1.jsx)('HTTPRoute', {
81
144
  apiVersion: 'gateway.networking.k8s.io/v1',
82
- kind: 'Gateway',
145
+ kind: 'HTTPRoute',
83
146
  metadata: {
84
- name: `${name}-gateway`,
147
+ name: `${name}-route`,
85
148
  namespace,
86
- // ExternalDNS gateway source picks up hostnames from this annotation
87
- ...(createDnsRecord && {
149
+ // ExternalDNS picks up hostnames from HTTPRoute annotations
150
+ ...(createDnsRecord &&
151
+ sharedGateway && {
88
152
  annotations: {
89
153
  'external-dns.alpha.kubernetes.io/hostname': host,
90
154
  },
91
155
  }),
92
156
  },
93
157
  spec: {
94
- gatewayClassName,
95
- listeners: [
96
- {
97
- name: useHttps ? 'https' : 'http',
98
- protocol: useHttps ? 'HTTPS' : 'HTTP',
99
- port: useHttps ? 443 : 80,
100
- hostname: host,
101
- ...(tls && {
102
- tls: {
103
- mode: 'Terminate',
104
- certificateRefs: [{ name: secretName }],
105
- },
106
- }),
107
- },
108
- ],
109
- },
110
- }));
111
- resources.push((0, core_1.jsx)('HTTPRoute', {
112
- apiVersion: 'gateway.networking.k8s.io/v1',
113
- kind: 'HTTPRoute',
114
- metadata: { name: `${name}-route`, namespace },
115
- spec: {
116
- parentRefs: [{ name: `${name}-gateway` }],
158
+ parentRefs: [parentRef],
117
159
  hostnames: [host],
118
160
  rules: [
119
161
  {
162
+ ...(path && {
163
+ matches: [
164
+ {
165
+ path: {
166
+ type: 'PathPrefix',
167
+ value: path,
168
+ },
169
+ },
170
+ ],
171
+ }),
120
172
  backendRefs: [{ name: serviceName, port: servicePort }],
121
173
  },
122
174
  ],
@@ -139,7 +191,10 @@ function Endpoint(props) {
139
191
  name,
140
192
  namespace,
141
193
  annotations: {
142
- 'nginx.ingress.kubernetes.io/rewrite-target': '/',
194
+ // NOTE: no rewrite-target on host-level routes — setting it to
195
+ // '/' rewrites EVERY request path to '/' and breaks path-based
196
+ // upstreams (webhooks, APIs, OAuth callbacks). Set annotations
197
+ // explicitly when a captured-regex path needs one.
143
198
  // ExternalDNS ingress source picks up hostnames from this annotation
144
199
  ...(createDnsRecord ? { 'external-dns.alpha.kubernetes.io/hostname': host } : {}),
145
200
  ...(tls?.clusterIssuer
@@ -158,8 +213,8 @@ function Endpoint(props) {
158
213
  http: {
159
214
  paths: [
160
215
  {
161
- path: '/',
162
- pathType: 'Prefix',
216
+ path: path ?? '/',
217
+ pathType: pathType ?? 'Prefix',
163
218
  backend: {
164
219
  service: {
165
220
  name: serviceName,
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../src/endpoint.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../src/endpoint.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Actionable errors for the recurring "app needs secrets but no
3
+ * provisioning backend exists" case. Packages reference this factory
4
+ * instead of hand-writing the same 15-line guidance block per app —
5
+ * the advice lives in one place.
6
+ */
7
+ export interface SecretsRequiredOptions {
8
+ /** Prop that carries the fallback pre-created Secret name */
9
+ propName?: string;
10
+ /** Example Secret name to suggest */
11
+ exampleValue?: string;
12
+ /** Expected keys on the pre-created Secret */
13
+ keys?: string[];
14
+ }
15
+ export declare function secretsRequiredError(app: string, resourceName: string, what: string, opts?: SecretsRequiredOptions): Error;
16
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,sBAA2B,GAChC,KAAK,CAgBP"}
package/dist/errors.js ADDED
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.secretsRequiredError = secretsRequiredError;
4
+ function secretsRequiredError(app, resourceName, what, opts = {}) {
5
+ const { propName = 'secretsName', exampleValue = `${resourceName}-secrets`, keys } = opts;
6
+ return new Error(`${app} "${resourceName}" requires ${what}\n` +
7
+ `\n` +
8
+ `Secrets must never be rendered as plaintext.\n` +
9
+ `\n` +
10
+ `Fix: configure a provisioning secrets backend on the Platform\n` +
11
+ `(openbao, vault, or any provider with a provision() hook):\n` +
12
+ ` <Platform secrets={{ backend: 'openbao', mount: 'kv', path: 'apps' }}>\n` +
13
+ ` <${app} name="${resourceName}" />\n` +
14
+ ` </Platform>\n` +
15
+ `\n` +
16
+ `Or reference a pre-created Secret${keys ? ` (keys: ${keys.join(', ')})` : ''}:\n` +
17
+ ` ${propName}: "${exampleValue}"`);
18
+ }
19
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;AAeA,oDAqBC;AArBD,SAAgB,oBAAoB,CAClC,GAAW,EACX,YAAoB,EACpB,IAAY,EACZ,OAA+B,EAAE;IAEjC,MAAM,EAAE,QAAQ,GAAG,aAAa,EAAE,YAAY,GAAG,GAAG,YAAY,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;IACzF,OAAO,IAAI,KAAK,CACd,GAAG,GAAG,KAAK,YAAY,cAAc,IAAI,IAAI;QAC3C,IAAI;QACJ,gDAAgD;QAChD,IAAI;QACJ,iEAAiE;QACjE,8DAA8D;QAC9D,4EAA4E;QAC5E,QAAQ,GAAG,UAAU,YAAY,QAAQ;QACzC,iBAAiB;QACjB,IAAI;QACJ,oCAAoC,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK;QAClF,KAAK,QAAQ,MAAM,YAAY,GAAG,CACrC,CAAA;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { Platform, type PlatformProps, type RoutingMode } from './platform';
2
+ export { R8sCluster, type R8sClusterProps } from './r8s-cluster';
2
3
  export { App, type AppProps } from './app';
3
4
  export { Database, type DatabaseProps } from './database';
4
5
  export { Endpoint, type EndpointProps } from './endpoint';
@@ -6,9 +7,12 @@ export { WebService, type WebServiceProps, type SecretRef, type VaultSecretRef,
6
7
  export { Auth, type AuthProps } from './auth';
7
8
  export { Monitoring, type MonitoringProps } from './monitoring';
8
9
  export { Backup, type BackupProps } from './backup';
9
- export { SecretProvider, type SecretProviderProps, type SecretProviderValue, OpenBao, type OpenBaoProps, Vault, type VaultProps, SealedSecrets, type SealedSecretsProps, ManualSecrets, type ManualSecretsProps, } from './secret-provider';
10
+ export { SecretProvider, type SecretProviderProps, type SecretProviderValue, OpenBao, type OpenBaoProps, Vault, type VaultProps, SealedSecrets, type SealedSecretsProps, ManualSecrets, type ManualSecretsProps, provisionerForSecretProvider, canProvisionSecrets, } from './secret-provider';
10
11
  export { DnsProvider, type DnsProviderProps, type DnsProviderValue, type DnsConfig, DnsContext, ExternalDns, type ExternalDnsProps, } from './dns-provider';
11
12
  export { EndpointProvider, type EndpointProviderProps, type EndpointProviderValue, type EndpointConfig, EndpointContext, Nginx, type NginxProps, EnvoyGateway, type EnvoyGatewayProps, } from './endpoint-provider';
12
13
  export { CertProvider, type CertProviderProps, type CertProviderValue, type CertConfig, CertContext, CertManager, type CertManagerProps, } from './cert-provider';
13
14
  export { cnpgOperator, nginxIngressOperator, vaultSecretsOperator } from './operators';
15
+ export { StaticSecret, type StaticSecretProps } from './static-secret';
16
+ export { useOperators, maybeOperator } from './operators';
17
+ export { secretsRequiredError, type SecretsRequiredOptions } from './errors';
14
18
  //# sourceMappingURL=index.d.ts.map
@@ -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,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA;AACzD,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,GACxB,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,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,aAAa,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,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA;AACzD,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,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAEtF,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAGtE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,KAAK,sBAAsB,EAAE,MAAM,UAAU,CAAA"}
package/dist/index.js CHANGED
@@ -4,9 +4,11 @@
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.vaultSecretsOperator = exports.nginxIngressOperator = exports.cnpgOperator = exports.CertManager = exports.CertContext = exports.CertProvider = exports.EnvoyGateway = exports.Nginx = exports.EndpointContext = exports.EndpointProvider = exports.ExternalDns = exports.DnsContext = exports.DnsProvider = 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.Platform = void 0;
7
+ exports.secretsRequiredError = exports.maybeOperator = exports.useOperators = exports.StaticSecret = exports.vaultSecretsOperator = exports.nginxIngressOperator = exports.cnpgOperator = 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.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
+ var r8s_cluster_1 = require("./r8s-cluster");
11
+ Object.defineProperty(exports, "R8sCluster", { enumerable: true, get: function () { return r8s_cluster_1.R8sCluster; } });
10
12
  var app_1 = require("./app");
11
13
  Object.defineProperty(exports, "App", { enumerable: true, get: function () { return app_1.App; } });
12
14
  var database_1 = require("./database");
@@ -28,6 +30,8 @@ Object.defineProperty(exports, "OpenBao", { enumerable: true, get: function () {
28
30
  Object.defineProperty(exports, "Vault", { enumerable: true, get: function () { return secret_provider_1.Vault; } });
29
31
  Object.defineProperty(exports, "SealedSecrets", { enumerable: true, get: function () { return secret_provider_1.SealedSecrets; } });
30
32
  Object.defineProperty(exports, "ManualSecrets", { enumerable: true, get: function () { return secret_provider_1.ManualSecrets; } });
33
+ Object.defineProperty(exports, "provisionerForSecretProvider", { enumerable: true, get: function () { return secret_provider_1.provisionerForSecretProvider; } });
34
+ Object.defineProperty(exports, "canProvisionSecrets", { enumerable: true, get: function () { return secret_provider_1.canProvisionSecrets; } });
31
35
  var dns_provider_1 = require("./dns-provider");
32
36
  Object.defineProperty(exports, "DnsProvider", { enumerable: true, get: function () { return dns_provider_1.DnsProvider; } });
33
37
  Object.defineProperty(exports, "DnsContext", { enumerable: true, get: function () { return dns_provider_1.DnsContext; } });
@@ -46,4 +50,12 @@ var operators_1 = require("./operators");
46
50
  Object.defineProperty(exports, "cnpgOperator", { enumerable: true, get: function () { return operators_1.cnpgOperator; } });
47
51
  Object.defineProperty(exports, "nginxIngressOperator", { enumerable: true, get: function () { return operators_1.nginxIngressOperator; } });
48
52
  Object.defineProperty(exports, "vaultSecretsOperator", { enumerable: true, get: function () { return operators_1.vaultSecretsOperator; } });
53
+ var static_secret_1 = require("./static-secret");
54
+ Object.defineProperty(exports, "StaticSecret", { enumerable: true, get: function () { return static_secret_1.StaticSecret; } });
55
+ // Composition helpers — loose building blocks for packages
56
+ var operators_2 = require("./operators");
57
+ Object.defineProperty(exports, "useOperators", { enumerable: true, get: function () { return operators_2.useOperators; } });
58
+ Object.defineProperty(exports, "maybeOperator", { enumerable: true, get: function () { return operators_2.maybeOperator; } });
59
+ var errors_1 = require("./errors");
60
+ Object.defineProperty(exports, "secretsRequiredError", { enumerable: true, get: function () { return errors_1.secretsRequiredError; } });
49
61
  //# sourceMappingURL=index.js.map
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,6BAA0C;AAAjC,0FAAA,GAAG,OAAA;AACZ,uCAAyD;AAAhD,oGAAA,QAAQ,OAAA;AACjB,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,qDAY0B;AAXxB,iHAAA,cAAc,OAAA;AAGd,0GAAA,OAAO,OAAA;AAEP,wGAAA,KAAK,OAAA;AAEL,gHAAA,aAAa,OAAA;AAEb,gHAAA,aAAa,OAAA;AAGf,+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,yCAAsF;AAA7E,yGAAA,YAAY,OAAA;AAAE,iHAAA,oBAAoB,OAAA;AAAE,iHAAA,oBAAoB,OAAA"}
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,6BAA0C;AAAjC,0FAAA,GAAG,OAAA;AACZ,uCAAyD;AAAhD,oGAAA,QAAQ,OAAA;AACjB,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,yCAAsF;AAA7E,yGAAA,YAAY,OAAA;AAAE,iHAAA,oBAAoB,OAAA;AAAE,iHAAA,oBAAoB,OAAA;AAEjE,iDAAsE;AAA7D,6GAAA,YAAY,OAAA;AAErB,2DAA2D;AAC3D,yCAAyD;AAAhD,yGAAA,YAAY,OAAA;AAAE,0GAAA,aAAa,OAAA;AACpC,mCAA4E;AAAnE,8GAAA,oBAAoB,OAAA"}
@@ -1,5 +1,19 @@
1
+ import { declareOperator } from '@r8s/core';
2
+ import type { Operator } from '@r8s/k8s-types';
3
+ /**
4
+ * Read the operators already declared by the Platform tree. Packages call
5
+ * this once (unconditionally) and pass the result to maybeOperator() —
6
+ * no sharedOperators.some(...) boilerplate in every package.
7
+ */
8
+ export declare function useOperators(): Operator[];
9
+ /**
10
+ * Declare an operator unless the Platform already provides it. Returns
11
+ * [] (nothing to add) or a one-element array — spread into resources:
12
+ * `resources_.push(...maybeOperator('redis-operator', shared))`
13
+ */
14
+ export declare function maybeOperator(name: string, shared: Operator[], version?: string): ReturnType<typeof declareOperator>[];
1
15
  /** CloudNativePG operator declaration */
2
- export declare const cnpgOperator: (version?: string) => import("@r8s/k8s-types").Operator;
16
+ export declare const cnpgOperator: (version?: string) => Operator;
3
17
  /** NGINX Ingress Controller operator declaration (not in operators.yaml — nginx-specific) */
4
18
  export declare const nginxIngressOperator: (version?: string) => {
5
19
  name: string;
@@ -15,5 +29,5 @@ export declare const nginxIngressOperator: (version?: string) => {
15
29
  installCommand: string;
16
30
  };
17
31
  /** Vault Secrets Operator declaration */
18
- export declare const vaultSecretsOperator: (version?: string) => import("@r8s/k8s-types").Operator;
32
+ export declare const vaultSecretsOperator: (version?: string) => Operator;
19
33
  //# sourceMappingURL=operators.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"operators.d.ts","sourceRoot":"","sources":["../src/operators.ts"],"names":[],"mappings":"AAQA,yCAAyC;AACzC,eAAO,MAAM,YAAY,yDAAoB,CAAA;AAE7C,6FAA6F;AAC7F,eAAO,MAAM,oBAAoB,GAAI,gBAAkB;;;;;;;;;;;;CAYrD,CAAA;AAEF,yCAAyC;AACzC,eAAO,MAAM,oBAAoB,yDAAsC,CAAA"}
1
+ {"version":3,"file":"operators.d.ts","sourceRoot":"","sources":["../src/operators.ts"],"names":[],"mappings":"AAOA,OAAO,EAAc,eAAe,EAAE,MAAM,WAAW,CAAA;AAEvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAE9C;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,QAAQ,EAAE,CAEzC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,QAAQ,EAAE,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,UAAU,CAAC,OAAO,eAAe,CAAC,EAAE,CAMtC;AAED,yCAAyC;AACzC,eAAO,MAAM,YAAY,gCAAoB,CAAA;AAE7C,6FAA6F;AAC7F,eAAO,MAAM,oBAAoB,GAAI,gBAAkB;;;;;;;;;;;;CAYrD,CAAA;AAEF,yCAAyC;AACzC,eAAO,MAAM,oBAAoB,gCAAsC,CAAA"}
package/dist/operators.js CHANGED
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.vaultSecretsOperator = exports.nginxIngressOperator = exports.cnpgOperator = void 0;
4
+ exports.useOperators = useOperators;
5
+ exports.maybeOperator = maybeOperator;
4
6
  /**
5
7
  * Operator declarations re-exported from @r8s/crds.
6
8
  *
@@ -8,6 +10,30 @@ exports.vaultSecretsOperator = exports.nginxIngressOperator = exports.cnpgOperat
8
10
  * exist for backwards compatibility with recipes that import from here.
9
11
  */
10
12
  const crds_1 = require("@r8s/crds");
13
+ const core_1 = require("@r8s/core");
14
+ const defaults_1 = require("@r8s/core/defaults");
15
+ /**
16
+ * Read the operators already declared by the Platform tree. Packages call
17
+ * this once (unconditionally) and pass the result to maybeOperator() —
18
+ * no sharedOperators.some(...) boilerplate in every package.
19
+ */
20
+ function useOperators() {
21
+ return (0, core_1.useContext)(defaults_1.OperatorContext);
22
+ }
23
+ /**
24
+ * Declare an operator unless the Platform already provides it. Returns
25
+ * [] (nothing to add) or a one-element array — spread into resources:
26
+ * `resources_.push(...maybeOperator('redis-operator', shared))`
27
+ */
28
+ function maybeOperator(name, shared, version) {
29
+ if (shared.some((op) => op.name === name))
30
+ return [];
31
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
+ const factory = crds_1.operators[name];
33
+ if (!factory)
34
+ throw new Error(`Unknown operator '${name}' — check packages/crds/operators.yaml`);
35
+ return [(0, core_1.declareOperator)(factory(version))];
36
+ }
11
37
  /** CloudNativePG operator declaration */
12
38
  exports.cnpgOperator = crds_1.operators['cnpg'];
13
39
  /** NGINX Ingress Controller operator declaration (not in operators.yaml — nginx-specific) */
@@ -1 +1 @@
1
- {"version":3,"file":"operators.js","sourceRoot":"","sources":["../src/operators.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,oCAAqC;AAErC,yCAAyC;AAC5B,QAAA,YAAY,GAAG,gBAAS,CAAC,MAAM,CAAC,CAAA;AAE7C,6FAA6F;AACtF,MAAM,oBAAoB,GAAG,CAAC,OAAO,GAAG,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC3D,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,0BAA0B;IACvC,MAAM,EAAE;QACN,IAAI,EAAE,UAAmB;QACzB,GAAG,EAAE,0EAA0E,OAAO,2CAA2C;QACjI,OAAO;QACP,SAAS,EAAE,eAAe;KAC3B;IACD,OAAO;IACP,SAAS,EAAE,eAAe;IAC1B,cAAc,EAAE,yGAAyG,OAAO,2CAA2C;CAC5K,CAAC,CAAA;AAZW,QAAA,oBAAoB,wBAY/B;AAEF,yCAAyC;AAC5B,QAAA,oBAAoB,GAAG,gBAAS,CAAC,wBAAwB,CAAC,CAAA"}
1
+ {"version":3,"file":"operators.js","sourceRoot":"","sources":["../src/operators.ts"],"names":[],"mappings":";;;AAgBA,oCAEC;AAOD,sCAUC;AAnCD;;;;;GAKG;AACH,oCAAqC;AACrC,oCAAuD;AACvD,iDAAoD;AAGpD;;;;GAIG;AACH,SAAgB,YAAY;IAC1B,OAAO,IAAA,iBAAU,EAAC,0BAAe,CAAC,CAAA;AACpC,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAC3B,IAAY,EACZ,MAAkB,EAClB,OAAgB;IAEhB,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,EAAE,CAAA;IACpD,8DAA8D;IAC9D,MAAM,OAAO,GAAI,gBAAmE,CAAC,IAAI,CAAC,CAAA;IAC1F,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,wCAAwC,CAAC,CAAA;IAChG,OAAO,CAAC,IAAA,sBAAe,EAAC,OAAO,CAAC,OAAO,CAAU,CAAC,CAAC,CAAA;AACrD,CAAC;AAED,yCAAyC;AAC5B,QAAA,YAAY,GAAG,gBAAS,CAAC,MAAM,CAAC,CAAA;AAE7C,6FAA6F;AACtF,MAAM,oBAAoB,GAAG,CAAC,OAAO,GAAG,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC3D,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,0BAA0B;IACvC,MAAM,EAAE;QACN,IAAI,EAAE,UAAmB;QACzB,GAAG,EAAE,0EAA0E,OAAO,2CAA2C;QACjI,OAAO;QACP,SAAS,EAAE,eAAe;KAC3B;IACD,OAAO;IACP,SAAS,EAAE,eAAe;IAC1B,cAAc,EAAE,yGAAyG,OAAO,2CAA2C;CAC5K,CAAC,CAAA;AAZW,QAAA,oBAAoB,wBAY/B;AAEF,yCAAyC;AAC5B,QAAA,oBAAoB,GAAG,gBAAS,CAAC,wBAAwB,CAAC,CAAA"}
@@ -11,6 +11,15 @@ export interface PlatformProps {
11
11
  routing?: RoutingMode;
12
12
  /** Gateway class name (only used when routing='gateway', default: 'eg') */
13
13
  gatewayClassName?: string;
14
+ /**
15
+ * Reference to a shared Gateway for all child endpoints.
16
+ * When set, App/Endpoint create only HTTPRoutes (no per-app Gateway),
17
+ * avoiding a new LoadBalancer IP per app.
18
+ */
19
+ sharedGateway?: {
20
+ name: string;
21
+ namespace?: string;
22
+ };
14
23
  /** Default namespace for all child resources */
15
24
  namespace?: string;
16
25
  /** Default labels applied to all child resources */
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAkB,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAOnE,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,CAAA;AAE/C,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,+CAA+C;IAC/C,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;IACtB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAC7B;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,gBAAgB,CAAA;IACtB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,WA4D5C"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAkB,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAOnE,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,CAAA;AAE/C,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACpD,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,+CAA+C;IAC/C,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;IACtB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAC7B;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,gBAAgB,CAAA;IACtB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,WA4D5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.tsx"],"names":[],"mappings":";;AAmIA,4BA4DC;AA/LD,oCAAqD;AACrD,iDAO2B;AAE3B,uDAA4E;AAC5E,iDAAmE;AACnE,2DAI4B;AA6C5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AACH,SAAgB,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EACJ,OAAO,GAAG,SAAS,EACnB,gBAAgB,GAAG,IAAI,EACvB,SAAS,EACT,MAAM,EACN,SAAS,EACT,OAAO,EACP,GAAG,EACH,QAAQ,GACT,GAAG,KAAK,CAAA;IAET,IAAI,MAAM,GAAY,QAAQ,CAAA;IAE9B,2EAA2E;IAC3E,0EAA0E;IAC1E,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,GAAG,IAAA,UAAG,EAAC,eAAQ,EAAE;YACrB,QAAQ,EAAE;gBACR,IAAA,UAAG,EAAC,WAAW,EAAE;oBACf,UAAU,EAAE,IAAI;oBAChB,IAAI,EAAE,WAAW;oBACjB,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;iBAC9B,CAAC;gBACF,MAAM;aACP;SACF,CAAC,CAAA;IACJ,CAAC;IAED,qFAAqF;IACrF,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,GAAG,IAAA,UAAG,EAAC,0BAAW,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IAChE,CAAC;IAED,iEAAiE;IACjE,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,GAAG,IAAA,UAAG,EAAC,gCAAc,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IACvE,CAAC;IAED,6CAA6C;IAC7C,MAAM,gBAAgB,GACpB,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;IACjG,MAAM,GAAG,IAAA,UAAG,EAAC,oCAAgB,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IAEhF,0BAA0B;IAC1B,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,GAAG,IAAA,UAAG,EAAC,0BAAe,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IAChF,CAAC;IAED,uBAAuB;IACvB,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,GAAG,IAAA,UAAG,EAAC,iBAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IACpE,CAAC;IAED,0BAA0B;IAC1B,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,GAAG,IAAA,UAAG,EAAC,oBAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IAC1E,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.tsx"],"names":[],"mappings":";;AAyIA,4BA4DC;AArMD,oCAAqD;AACrD,iDAO2B;AAE3B,uDAA4E;AAC5E,iDAAmE;AACnE,2DAI4B;AAmD5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AACH,SAAgB,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EACJ,OAAO,GAAG,SAAS,EACnB,gBAAgB,GAAG,IAAI,EACvB,SAAS,EACT,MAAM,EACN,SAAS,EACT,OAAO,EACP,GAAG,EACH,QAAQ,GACT,GAAG,KAAK,CAAA;IAET,IAAI,MAAM,GAAY,QAAQ,CAAA;IAE9B,2EAA2E;IAC3E,0EAA0E;IAC1E,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,GAAG,IAAA,UAAG,EAAC,eAAQ,EAAE;YACrB,QAAQ,EAAE;gBACR,IAAA,UAAG,EAAC,WAAW,EAAE;oBACf,UAAU,EAAE,IAAI;oBAChB,IAAI,EAAE,WAAW;oBACjB,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;iBAC9B,CAAC;gBACF,MAAM;aACP;SACF,CAAC,CAAA;IACJ,CAAC;IAED,qFAAqF;IACrF,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,GAAG,IAAA,UAAG,EAAC,0BAAW,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IAChE,CAAC;IAED,iEAAiE;IACjE,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,GAAG,IAAA,UAAG,EAAC,gCAAc,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IACvE,CAAC;IAED,6CAA6C;IAC7C,MAAM,gBAAgB,GACpB,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;IACjG,MAAM,GAAG,IAAA,UAAG,EAAC,oCAAgB,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IAEhF,0BAA0B;IAC1B,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,GAAG,IAAA,UAAG,EAAC,0BAAe,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IAChF,CAAC;IAED,uBAAuB;IACvB,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,GAAG,IAAA,UAAG,EAAC,iBAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IACpE,CAAC;IAED,0BAA0B;IAC1B,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,GAAG,IAAA,UAAG,EAAC,oBAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IAC1E,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,105 @@
1
+ import type { Operator } from '@r8s/k8s-types';
2
+ export interface R8sClusterProps {
3
+ /**
4
+ * OpenBao secrets backend configuration. VSO (Vault Secrets Operator)
5
+ * is declared automatically. This context is inherited by all
6
+ * children (App, Database, Auth, etc.) so credentials are managed
7
+ * by VSO — never plaintext.
8
+ */
9
+ secrets: {
10
+ /** OpenBao mount path (e.g., 'secret') */
11
+ mount: string;
12
+ /** OpenBao path prefix for this cluster (e.g., 'production') */
13
+ path: string;
14
+ /** Optional VSO auth reference name */
15
+ authRef?: string;
16
+ };
17
+ /**
18
+ * ExternalDNS configuration with TSIG for secure RFC 2136 updates.
19
+ * The external-dns operator is declared automatically, and a
20
+ * VaultStaticSecret is created for the TSIG key in the external-dns
21
+ * namespace.
22
+ */
23
+ dns: {
24
+ /** RFC 2136 DNS server (e.g., 'ns1.example.com') */
25
+ server: string;
26
+ /** DNS zone (e.g., 'example.com') */
27
+ zone: string;
28
+ /** TSIG key path in OpenBao (e.g., 'dns/tsig') */
29
+ tsigPath: string;
30
+ /** TSIG key name in the secret (default: 'secret') */
31
+ tsigKey?: string;
32
+ };
33
+ /**
34
+ * Gateway class name for Envoy Gateway (default: 'eg').
35
+ * The envoy-gateway operator is declared automatically.
36
+ */
37
+ gatewayClassName?: string;
38
+ /**
39
+ * Default labels applied to all resources.
40
+ */
41
+ labels?: Record<string, string>;
42
+ /**
43
+ * Pre-installed operators. R8sCluster won't re-declare these.
44
+ */
45
+ operators?: Operator[];
46
+ /**
47
+ * Namespace for LokiStack and logging resources (default: 'logging').
48
+ * This is separate from app namespaces — logging infra lives in
49
+ * its own namespace.
50
+ */
51
+ logsNamespace?: string;
52
+ /**
53
+ * Storage class for Loki logs (default: 'standard').
54
+ */
55
+ logsStorageClass?: string;
56
+ /**
57
+ * Application components (App, Database, Auth, etc.).
58
+ * Children inherit routing, secrets, and DNS contexts.
59
+ * Optional — R8sCluster can be used standalone to set up cluster
60
+ * infrastructure without any apps.
61
+ */
62
+ children?: unknown;
63
+ }
64
+ /**
65
+ * R8sCluster — opinionated cluster foundation with all recommended operators.
66
+ *
67
+ * @title R8sCluster
68
+ * @category Complete Solution
69
+ *
70
+ * Sets up a complete cluster foundation in one component:
71
+ * - **cert-manager** for TLS certificate automation
72
+ * - **external-dns** with TSIG for secure DNS updates
73
+ * - **Envoy Gateway** for Gateway API routing
74
+ * - **OpenBao VSO** for secrets management
75
+ * - **Prometheus** for metrics and alerting
76
+ * - **Loki + FluentBit** for log aggregation of all user pods
77
+ *
78
+ * All operators are declared automatically. Children inherit routing,
79
+ * secrets, and DNS contexts — just add your apps.
80
+ *
81
+ * R8sCluster is cluster-scoped — it does not take a namespace. Operators
82
+ * install to their own namespaces (cert-manager, external-dns, etc.).
83
+ * Logging infrastructure lives in a dedicated namespace (default:
84
+ * 'logging'). App namespaces are managed by Platform or the apps
85
+ * themselves.
86
+ *
87
+ * @example
88
+ * import { R8sCluster, Platform, App, Database } from '@r8s/recipes'
89
+ *
90
+ * export default (
91
+ * <>
92
+ * <R8sCluster
93
+ * secrets={{ mount: 'secret', path: 'production' }}
94
+ * dns={{ server: 'ns1.example.com', zone: 'example.com', tsigPath: 'dns/tsig' }}
95
+ * >
96
+ * <Platform namespace="production">
97
+ * <Database name="api-db" storage="20Gi" />
98
+ * <App name="api" image="api:v1" host="api.example.com" />
99
+ * </Platform>
100
+ * </R8sCluster>
101
+ * </>
102
+ * )
103
+ */
104
+ export declare function R8sCluster(props: R8sClusterProps): unknown;
105
+ //# sourceMappingURL=r8s-cluster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"r8s-cluster.d.ts","sourceRoot":"","sources":["../src/r8s-cluster.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAE9C,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,OAAO,EAAE;QACP,0CAA0C;QAC1C,KAAK,EAAE,MAAM,CAAA;QACb,gEAAgE;QAChE,IAAI,EAAE,MAAM,CAAA;QACZ,uCAAuC;QACvC,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,CAAA;IACD;;;;;OAKG;IACH,GAAG,EAAE;QACH,oDAAoD;QACpD,MAAM,EAAE,MAAM,CAAA;QACd,qCAAqC;QACrC,IAAI,EAAE,MAAM,CAAA;QACZ,kDAAkD;QAClD,QAAQ,EAAE,MAAM,CAAA;QAChB,sDAAsD;QACtD,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,CAAA;IACD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B;;OAEG;IACH,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;IACtB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,WA2KhD"}