@r8s/recipes 0.1.0 → 0.2.0

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/app.d.ts CHANGED
@@ -11,8 +11,9 @@ export interface AppProps {
11
11
  port?: number;
12
12
  /** Number of pod replicas (defaults to 2) */
13
13
  replicas?: number;
14
- /** Domain name (e.g., 'api.example.com') the endpoint should accept traffic for */
15
- host: string;
14
+ /** Domain name (e.g., 'api.example.com') the endpoint should accept traffic for.
15
+ * When omitted, no Endpoint/Ingress/Gateway is created (useful for manual routing). */
16
+ host?: string;
16
17
  /** TLS certificate configuration for HTTPS */
17
18
  tls?: TLSConfig;
18
19
  /** Plain environment variables (non-sensitive) */
@@ -36,6 +37,14 @@ export interface AppProps {
36
37
  cache?: boolean;
37
38
  /** Create a DNS record via ExternalDNS (default: false) */
38
39
  dns?: boolean;
40
+ /**
41
+ * Reference to a shared Gateway instead of creating a per-app Gateway.
42
+ * Avoids allocating a new LoadBalancer IP per app.
43
+ */
44
+ sharedGateway?: {
45
+ name: string;
46
+ namespace?: string;
47
+ };
39
48
  /** Child components rendered as sibling resources (e.g., a BackgroundWorker) */
40
49
  children?: unknown;
41
50
  }
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAG/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAI/C,MAAM,WAAW,QAAQ;IACvB,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAA;IACb,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mFAAmF;IACnF,IAAI,EAAE,MAAM,CAAA;IACZ,8CAA8C;IAC9C,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC,CAAA;IAC5C,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACtC,2DAA2D;IAC3D,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;QAC5C,MAAM,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAC3C,CAAA;IACD,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,2DAA2D;IAC3D,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,kCAuFlC"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAG/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAI/C,MAAM,WAAW,QAAQ;IACvB,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAA;IACb,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;4FACwF;IACxF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8CAA8C;IAC9C,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC,CAAA;IAC5C,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACtC,2DAA2D;IAC3D,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;QAC5C,MAAM,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAC3C,CAAA;IACD,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,2DAA2D;IAC3D,GAAG,CAAC,EAAE,OAAO,CAAA;IACb;;;OAGG;IACH,aAAa,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACpD,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,kCA4FlC"}
package/dist/app.js CHANGED
@@ -59,7 +59,7 @@ const redis_1 = require("@r8s/crds/redis");
59
59
  * )
60
60
  */
61
61
  function App(props) {
62
- const { name, namespace: namespaceProp, image, port = 3000, replicas = 2, host, tls, env = {}, secrets = {}, vault = {}, resources, cache = false, dns, children, } = props;
62
+ const { name, namespace: namespaceProp, image, port = 3000, replicas = 2, host, tls, env = {}, secrets = {}, vault = {}, resources, cache = false, dns, sharedGateway, children, } = props;
63
63
  // Inherit namespace from <Platform> context if not explicitly set
64
64
  const contextNamespace = (0, core_1.useContext)(defaults_1.Namespace);
65
65
  const namespace = namespaceProp ?? (contextNamespace !== 'default' ? contextNamespace : undefined) ?? 'default';
@@ -75,15 +75,19 @@ function App(props) {
75
75
  vault,
76
76
  resources,
77
77
  }));
78
- elements.push((0, core_1.jsx)(endpoint_1.Endpoint, {
79
- name: `${name}-endpoint`,
80
- namespace,
81
- host,
82
- serviceName: name,
83
- servicePort: 80,
84
- tls,
85
- dns,
86
- }));
78
+ // Only create Endpoint if host is provided
79
+ if (host) {
80
+ elements.push((0, core_1.jsx)(endpoint_1.Endpoint, {
81
+ name: `${name}-endpoint`,
82
+ namespace,
83
+ host,
84
+ serviceName: name,
85
+ servicePort: 80,
86
+ tls,
87
+ dns,
88
+ ...(sharedGateway && { sharedGateway }),
89
+ }));
90
+ }
87
91
  // Redis cache
88
92
  if (cache) {
89
93
  const sharedOperators = (0, core_1.useContext)(defaults_1.OperatorContext);
@@ -107,7 +111,7 @@ function App(props) {
107
111
  },
108
112
  }));
109
113
  // Auto-wire REDIS_URL env var
110
- env.REDIS_URL = `redis://${name}-cache.${namespace}.svc.cluster.local:6379`;
114
+ env.REDIS_URL = `redis://${name}-cache-leader.${namespace}.svc.cluster.local:6379`;
111
115
  }
112
116
  // Children render as sibling resources (e.g. <BackgroundWorker />).
113
117
  // WebService does not currently accept children as a prop, so we keep
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":";;AA6FA,kBAuFC;AApLD,oCAAsE;AACtE,+CAA+E;AAC/E,yCAAqC;AACrC,iDAA+D;AAE/D,oCAAqC;AACrC,2CAAuD;AAoCvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,SAAgB,GAAG,CAAC,KAAe;IACjC,MAAM,EACJ,IAAI,EACJ,SAAS,EAAE,aAAa,EACxB,KAAK,EACL,IAAI,GAAG,IAAI,EACX,QAAQ,GAAG,CAAC,EACZ,IAAI,EACJ,GAAG,EACH,GAAG,GAAG,EAAE,EACR,OAAO,GAAG,EAAE,EACZ,KAAK,GAAG,EAAE,EACV,SAAS,EACT,KAAK,GAAG,KAAK,EACb,GAAG,EACH,QAAQ,GACT,GAAG,KAAK,CAAA;IAET,kEAAkE;IAClE,MAAM,gBAAgB,GAAG,IAAA,iBAAU,EAAC,oBAAS,CAAC,CAAA;IAC9C,MAAM,SAAS,GACb,aAAa,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,SAAS,CAAA;IAE/F,MAAM,QAAQ,GAA6B,EAAE,CAAA;IAE7C,QAAQ,CAAC,IAAI,CACX,IAAA,UAAG,EAAC,wBAAU,EAAE;QACd,IAAI;QACJ,SAAS;QACT,KAAK;QACL,IAAI;QACJ,QAAQ;QACR,GAAG;QACH,OAAO;QACP,KAAK;QACL,SAAS;KACV,CAAC,CACH,CAAA;IAED,QAAQ,CAAC,IAAI,CACX,IAAA,UAAG,EAAC,mBAAQ,EAAE;QACZ,IAAI,EAAE,GAAG,IAAI,WAAW;QACxB,SAAS;QACT,IAAI;QACJ,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,EAAE;QACf,GAAG;QACH,GAAG;KACJ,CAAC,CACH,CAAA;IAED,cAAc;IACd,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,eAAe,GAAG,IAAA,iBAAU,EAAC,0BAAe,CAAC,CAAA;QACnD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAA;QAC3E,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,IAAA,sBAAe,EAAC,gBAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAA;QAC/D,CAAC;QACD,QAAQ,CAAC,IAAI,CACX,IAAA,6BAAqB,EAAC;YACpB,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,QAAQ,EAAE,SAAS,EAAE;YAC9C,IAAI,EAAE;gBACJ,WAAW,EAAE,CAAC;gBACd,gBAAgB,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE;gBAC/C,OAAO,EAAE;oBACP,mBAAmB,EAAE;wBACnB,IAAI,EAAE;4BACJ,WAAW,EAAE,CAAC,eAAe,CAAC;4BAC9B,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;yBAC5C;qBACF;iBACF;aACF;SACF,CAAC,CACH,CAAA;QACD,8BAA8B;QAC9B,GAAG,CAAC,SAAS,GAAG,WAAW,IAAI,UAAU,SAAS,yBAAyB,CAAA;IAC7E,CAAC;IAED,oEAAoE;IACpE,sEAAsE;IACtE,0DAA0D;IAC1D,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,IAAI,CAAC,IAAA,UAAG,EAAC,eAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,OAAO,IAAA,UAAG,EAAC,eAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;AAC9C,CAAC"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":";;AAmGA,kBA4FC;AA/LD,oCAAsE;AACtE,+CAA+E;AAC/E,yCAAqC;AACrC,iDAA+D;AAE/D,oCAAqC;AACrC,2CAAuD;AA0CvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,SAAgB,GAAG,CAAC,KAAe;IACjC,MAAM,EACJ,IAAI,EACJ,SAAS,EAAE,aAAa,EACxB,KAAK,EACL,IAAI,GAAG,IAAI,EACX,QAAQ,GAAG,CAAC,EACZ,IAAI,EACJ,GAAG,EACH,GAAG,GAAG,EAAE,EACR,OAAO,GAAG,EAAE,EACZ,KAAK,GAAG,EAAE,EACV,SAAS,EACT,KAAK,GAAG,KAAK,EACb,GAAG,EACH,aAAa,EACb,QAAQ,GACT,GAAG,KAAK,CAAA;IAET,kEAAkE;IAClE,MAAM,gBAAgB,GAAG,IAAA,iBAAU,EAAC,oBAAS,CAAC,CAAA;IAC9C,MAAM,SAAS,GACb,aAAa,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,SAAS,CAAA;IAE/F,MAAM,QAAQ,GAA6B,EAAE,CAAA;IAE7C,QAAQ,CAAC,IAAI,CACX,IAAA,UAAG,EAAC,wBAAU,EAAE;QACd,IAAI;QACJ,SAAS;QACT,KAAK;QACL,IAAI;QACJ,QAAQ;QACR,GAAG;QACH,OAAO;QACP,KAAK;QACL,SAAS;KACV,CAAC,CACH,CAAA;IAED,2CAA2C;IAC3C,IAAI,IAAI,EAAE,CAAC;QACT,QAAQ,CAAC,IAAI,CACX,IAAA,UAAG,EAAC,mBAAQ,EAAE;YACZ,IAAI,EAAE,GAAG,IAAI,WAAW;YACxB,SAAS;YACT,IAAI;YACJ,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,EAAE;YACf,GAAG;YACH,GAAG;YACH,GAAG,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,CAAC;SACxC,CAAC,CACH,CAAA;IACH,CAAC;IAED,cAAc;IACd,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,eAAe,GAAG,IAAA,iBAAU,EAAC,0BAAe,CAAC,CAAA;QACnD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAA;QAC3E,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,IAAA,sBAAe,EAAC,gBAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAA;QAC/D,CAAC;QACD,QAAQ,CAAC,IAAI,CACX,IAAA,6BAAqB,EAAC;YACpB,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,QAAQ,EAAE,SAAS,EAAE;YAC9C,IAAI,EAAE;gBACJ,WAAW,EAAE,CAAC;gBACd,gBAAgB,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE;gBAC/C,OAAO,EAAE;oBACP,mBAAmB,EAAE;wBACnB,IAAI,EAAE;4BACJ,WAAW,EAAE,CAAC,eAAe,CAAC;4BAC9B,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;yBAC5C;qBACF;iBACF;aACF;SACF,CAAC,CACH,CAAA;QACD,8BAA8B;QAC9B,GAAG,CAAC,SAAS,GAAG,WAAW,IAAI,iBAAiB,SAAS,yBAAyB,CAAA;IACpF,CAAC;IAED,oEAAoE;IACpE,sEAAsE;IACtE,0DAA0D;IAC1D,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,IAAI,CAAC,IAAA,UAAG,EAAC,eAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,OAAO,IAAA,UAAG,EAAC,eAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;AAC9C,CAAC"}
@@ -1,18 +1,68 @@
1
+ /**
2
+ * Continuous + scheduled backup configuration for a dedicated CNPG cluster.
3
+ * Renders `spec.backup.barmanObjectStore` on the Cluster plus a
4
+ * ScheduledBackup resource. Backup is explicit opt-in — nothing renders
5
+ * unless this prop is set.
6
+ */
7
+ export interface DatabaseBackupProps {
8
+ /** S3 destination path, e.g. 's3://backups/myapp-cnpg' */
9
+ destinationPath: string;
10
+ /** S3 endpoint URL, e.g. 'https://s3.example.com' (RustFS/Scaleway/…) */
11
+ endpointURL: string;
12
+ /**
13
+ * Name of an existing Secret holding the S3 credentials with CNPG keys
14
+ * `access-key-id` and `secret-access-key`. When omitted, the Platform
15
+ * secrets backend (openbao/vault) provisions `<name>-backup-credentials`
16
+ * from `<path>/<name>-s3-credentials` — the backend entry must contain
17
+ * the same kebab-case keys. Without backend or secret this throws.
18
+ */
19
+ credentialsSecret?: string;
20
+ /** Retention policy for barman backups (default: '30d') */
21
+ retention?: string;
22
+ /** Cron schedule for the ScheduledBackup (default: '0 3 * * *') */
23
+ schedule?: string;
24
+ /** Data/WAL compression — values valid for both streams (default: 'gzip') */
25
+ compression?: 'gzip' | 'bzip2' | 'snappy';
26
+ /** WAL encryption (default: 'AES256') */
27
+ encryption?: 'AES256' | 'aws:kms';
28
+ }
1
29
  export interface DatabaseProps {
2
30
  /** Resource name (also the default database name) */
3
31
  name: string;
4
32
  /** Kubernetes namespace (defaults to 'default') */
5
33
  namespace?: string;
34
+ /** Number of CNPG instances in the dedicated cluster (defaults to 3) */
35
+ instances?: number;
6
36
  /** Storage size (e.g., '10Gi') for the dedicated cluster data volume */
7
37
  storage?: string;
38
+ /** Storage class name for the data volume (defaults to cluster default) */
39
+ storageClass?: string;
40
+ /** PostgreSQL parameters, e.g. { max_connections: '200' } */
41
+ parameters?: Record<string, string>;
42
+ /**
43
+ * Continuous barman backup to S3 object storage + ScheduledBackup.
44
+ * Explicit opt-in.
45
+ */
46
+ backup?: DatabaseBackupProps;
47
+ /**
48
+ * Workloads that consume the database credentials. Rendered as
49
+ * `rolloutRestartTargets` on the generated VaultStaticSecret/
50
+ * OpenBaoStaticSecret so pods restart when credentials rotate.
51
+ */
52
+ rolloutRestartTargets?: {
53
+ kind?: string;
54
+ name: string;
55
+ apiVersion?: string;
56
+ }[];
8
57
  /** Operator version override. If not set, reads from OperatorContext or uses default. */
9
58
  operatorVersion?: string;
10
59
  /**
11
- * Password for the database. Only needed when no secrets backend is
12
- * configured on the Platform. When a secrets backend (openbao, vault,
13
- * sealed-secrets) is active, credentials are managed automatically.
60
+ * SQL statements run once after the initial database bootstrap
61
+ * (CNPG `bootstrap.initdb.postInitApplicationSQL`). Use for schema
62
+ * extensions the application requires on a fresh cluster — e.g.
63
+ * creating roles or extensions. Parameterized by the CNPG operator.
14
64
  */
15
- password?: string;
65
+ postInitSQL?: string[];
16
66
  /** Child components rendered with this database's connection info in context */
17
67
  children?: unknown;
18
68
  }
@@ -27,7 +77,10 @@ export interface DatabaseProps {
27
77
  * connection info via DatabaseContext automatically.
28
78
  *
29
79
  * Credentials are managed by the secrets backend configured on the Platform.
30
- * Without a secrets backend, CNPG manages the bootstrap secret automatically.
80
+ * Without a backend, credentials are CNPG-managed (bootstrap secret is
81
+ * generated automatically in-cluster). Plaintext password props are NOT
82
+ * supported — rendered YAML is committed to git and applied to clusters,
83
+ * so a plaintext password there is a credential leak.
31
84
  *
32
85
  * @example
33
86
  * import { Database } from '@r8s/recipes'
@@ -44,6 +97,28 @@ export interface DatabaseProps {
44
97
  * </Database>
45
98
  * </Platform>
46
99
  * )
100
+ *
101
+ * @example
102
+ * import { Platform, Database, WebService } from '@r8s/recipes'
103
+ *
104
+ * // HA database with continuous S3 backup — the backend provisions the
105
+ * // backup credentials, pods restart when they rotate.
106
+ * export default (
107
+ * <Platform secrets={{ backend: 'openbao', mount: 'kv', path: 'apps', refreshAfter: '3600s' }}>
108
+ * <Database
109
+ * name="app-db"
110
+ * storage="20Gi"
111
+ * instances={2}
112
+ * rolloutRestartTargets={[{ name: 'api' }]}
113
+ * backup={{
114
+ * destinationPath: 's3://backups/app-cnpg',
115
+ * endpointURL: 'https://s3.example.com',
116
+ * }}
117
+ * >
118
+ * <WebService name="api" image="myapp/api:v1" />
119
+ * </Database>
120
+ * </Platform>
121
+ * )
47
122
  */
48
123
  export declare function Database(props: DatabaseProps): import("@r8s/core").r8sElement[];
49
124
  //# sourceMappingURL=database.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAA;IACZ,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,yFAAyF;IACzF,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,oCA6G5C"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.tsx"],"names":[],"mappings":"AAWA;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,0DAA0D;IAC1D,eAAe,EAAE,MAAM,CAAA;IACvB,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;;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,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;;;OAGG;IACH,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B;;;;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,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,oCA+M5C"}
package/dist/database.js CHANGED
@@ -15,7 +15,10 @@ const operators_1 = require("./operators");
15
15
  * connection info via DatabaseContext automatically.
16
16
  *
17
17
  * Credentials are managed by the secrets backend configured on the Platform.
18
- * Without a secrets backend, CNPG manages the bootstrap secret automatically.
18
+ * Without a backend, credentials are CNPG-managed (bootstrap secret is
19
+ * generated automatically in-cluster). Plaintext password props are NOT
20
+ * supported — rendered YAML is committed to git and applied to clusters,
21
+ * so a plaintext password there is a credential leak.
19
22
  *
20
23
  * @example
21
24
  * import { Database } from '@r8s/recipes'
@@ -32,9 +35,47 @@ const operators_1 = require("./operators");
32
35
  * </Database>
33
36
  * </Platform>
34
37
  * )
38
+ *
39
+ * @example
40
+ * import { Platform, Database, WebService } from '@r8s/recipes'
41
+ *
42
+ * // HA database with continuous S3 backup — the backend provisions the
43
+ * // backup credentials, pods restart when they rotate.
44
+ * export default (
45
+ * <Platform secrets={{ backend: 'openbao', mount: 'kv', path: 'apps', refreshAfter: '3600s' }}>
46
+ * <Database
47
+ * name="app-db"
48
+ * storage="20Gi"
49
+ * instances={2}
50
+ * rolloutRestartTargets={[{ name: 'api' }]}
51
+ * backup={{
52
+ * destinationPath: 's3://backups/app-cnpg',
53
+ * endpointURL: 'https://s3.example.com',
54
+ * }}
55
+ * >
56
+ * <WebService name="api" image="myapp/api:v1" />
57
+ * </Database>
58
+ * </Platform>
59
+ * )
35
60
  */
36
61
  function Database(props) {
37
- const { name, namespace: namespaceProp, storage = '10Gi', operatorVersion, password, children, } = props;
62
+ const { name, namespace: namespaceProp, instances = 3, storage = '10Gi', storageClass, parameters, backup, rolloutRestartTargets, operatorVersion, postInitSQL, children, } = props;
63
+ // Plaintext password props are forbidden. This also catches untyped/JS
64
+ // callers that pass `password` to Database regardless of backend — the
65
+ // rendered Secret would leak the credential into git and cluster state.
66
+ const legacyPassword = props.password;
67
+ if (legacyPassword !== undefined && legacyPassword !== null && legacyPassword !== '') {
68
+ throw new Error(`Database "${name}" received a plaintext password. ` +
69
+ `Plaintext credentials in rendered manifests are no longer supported — ` +
70
+ `the YAML is committed to git and applied to clusters, which leaks the credential.\n` +
71
+ `\n` +
72
+ `Fix: configure a secrets backend on the Platform and let it manage credentials:\n` +
73
+ ` <Platform secrets={{ backend: 'openbao', mount: 'kv', path: 'apps' }}>\n` +
74
+ ` <Database name="${name}" />\n` +
75
+ ` </Platform>\n` +
76
+ `\n` +
77
+ `Supported backends: 'openbao', 'vault', 'sealed-secrets', 'kubernetes', 'manual-secrets'`);
78
+ }
38
79
  // Inherit namespace from <Platform> context if not explicitly set
39
80
  const contextNamespace = (0, core_1.useContext)(defaults_1.Namespace);
40
81
  const namespace = namespaceProp ?? (contextNamespace !== 'default' ? contextNamespace : undefined) ?? 'default';
@@ -54,7 +95,7 @@ function Database(props) {
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,21 +103,71 @@ 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
139
  database: name,
75
140
  owner: name,
76
141
  secret: { name: secretName },
142
+ // Roles/extensions the application needs on a fresh cluster —
143
+ // applied once by CNPG after the initial bootstrap.
144
+ ...(postInitSQL && postInitSQL.length > 0
145
+ ? { postInitApplicationSQL: postInitSQL }
146
+ : {}),
77
147
  },
78
148
  },
79
149
  monitoring: { enablePodMonitor: true },
150
+ ...(parameters && { postgresql: { parameters } }),
151
+ ...(backup && backupCredentials
152
+ ? {
153
+ backup: {
154
+ retentionPolicy: backup.retention ?? '30d',
155
+ barmanObjectStore: {
156
+ destinationPath: backup.destinationPath,
157
+ endpointURL: backup.endpointURL,
158
+ s3Credentials: {
159
+ accessKeyId: { name: backupCredentials, key: 'access-key-id' },
160
+ secretAccessKey: { name: backupCredentials, key: 'secret-access-key' },
161
+ },
162
+ data: { compression: backup.compression ?? 'gzip' },
163
+ wal: {
164
+ compression: backup.compression ?? 'gzip',
165
+ encryption: backup.encryption ?? 'AES256',
166
+ },
167
+ },
168
+ },
169
+ }
170
+ : {}),
80
171
  },
81
172
  };
82
173
  const connection = {
@@ -92,12 +183,27 @@ function Database(props) {
92
183
  resources.push((0, core_1.declareOperator)((0, operators_1.cnpgOperator)(operatorVersion)));
93
184
  }
94
185
  resources.push((0, core_1.jsx)('Cluster', cluster));
186
+ if (backup && backupCredentials) {
187
+ resources.push((0, core_1.jsx)('ScheduledBackup', {
188
+ apiVersion: 'postgresql.cnpg.io/v1',
189
+ kind: 'ScheduledBackup',
190
+ metadata: { name: `${name}-backup`, namespace },
191
+ spec: {
192
+ cluster: { name },
193
+ schedule: backup.schedule ?? '0 3 * * *',
194
+ backupOwnerReference: 'self',
195
+ },
196
+ }));
197
+ // Backend-provisioned S3 credentials for barman
198
+ if (!backup.credentialsSecret && secretProvider) {
199
+ resources.push(...createStaticSecretResource(`${name}-backup-credentials`, `${name}-backup-credentials`, namespace, secretProvider, `${secretProvider.path}/${name}-s3-credentials`, undefined));
200
+ }
201
+ }
95
202
  // 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.
203
+ // credentials. For kubernetes/manual-secrets backend, CNPG manages the
204
+ // bootstrap secret automatically — no plaintext Secret is rendered.
99
205
  if (secretProvider) {
100
- resources.push(...createSecretResources(name, namespace, secretName, secretProvider, password, `${name}-rw`));
206
+ resources.push(...createSecretResources(name, namespace, secretName, secretProvider, 'dedicated', rolloutRestartTargets));
101
207
  }
102
208
  if (children) {
103
209
  resources.push((0, core_1.jsx)(defaults_1.DatabaseContext.Provider, { value: connection, children }));
@@ -107,63 +213,34 @@ function Database(props) {
107
213
  }
108
214
  /**
109
215
  * 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.
216
+ * backend. Plaintext credentials are never rendered backends either
217
+ * reference credentials stored externally (openbao/vault), hold
218
+ * user-sealed ciphertext (sealed-secrets), or delegate to CNPG's
219
+ * in-cluster bootstrap secret generation (kubernetes/manual-secrets on
220
+ * dedicated clusters).
112
221
  */
113
- function createSecretResources(name, namespace, secretName, secretProvider, password, host) {
222
+ function createSecretResources(name, namespace, secretName, secretProvider, mode, rolloutRestartTargets) {
114
223
  const resources = [];
115
224
  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="..." />`);
225
+ if (mode === 'dedicated') {
226
+ // CNPG generates the bootstrap secret in-cluster no credential
227
+ // in the rendered manifest at all.
228
+ return resources;
126
229
  }
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;
230
+ throw new Error(`Database "${name}" is attached to a shared Cluster without a secrets backend.\n` +
231
+ `\n` +
232
+ `CNPG only provisions credentials for databases on dedicated clusters, so a ` +
233
+ `shared-cluster database needs a managed secrets backend:\n` +
234
+ ` <Platform secrets={{ backend: 'openbao', mount: 'kv', path: 'apps' }}>\n` +
235
+ ` <Database name="${name}" />\n` +
236
+ ` </Platform>\n` +
237
+ `\n` +
238
+ `Supported backends: 'openbao', 'vault', 'sealed-secrets', 'kubernetes', 'manual-secrets'`);
138
239
  }
139
240
  switch (secretProvider.backend) {
140
241
  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
242
  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
- }));
243
+ resources.push(...createStaticSecretResource(`${name}-db-secret`, secretName, namespace, secretProvider, `${secretProvider.path}/${name}`, rolloutRestartTargets));
167
244
  break;
168
245
  case 'sealed-secrets':
169
246
  // Sealed Secrets: the user provides a sealed secret that was encrypted
@@ -182,31 +259,67 @@ function createSecretResources(name, namespace, secretName, secretProvider, pass
182
259
  }));
183
260
  break;
184
261
  case 'kubernetes':
185
- if (!password) {
186
- throw new Error(`Database "${name}" uses the 'kubernetes' secrets backend, which requires a password.\n` +
262
+ case 'manual-secrets':
263
+ // Plain Kubernetes Secrets but the credential itself must never be
264
+ // in the rendered manifest. On dedicated clusters CNPG generates the
265
+ // bootstrap secret in-cluster; on shared clusters there is nothing to
266
+ // generate the credential, so a managed backend is required.
267
+ if (mode === 'shared') {
268
+ throw new Error(`Database "${name}" uses the '${secretProvider.backend}' secrets backend on a shared Cluster.\n` +
187
269
  `\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` +
270
+ `Credentials for shared-cluster databases cannot be provisioned automatically. ` +
271
+ `Use a managed backend instead:\n` +
272
+ ` <Platform secrets={{ backend: 'openbao', mount: 'kv', path: 'apps' }}>\n` +
273
+ ` <Database name="${name}" />\n` +
274
+ ` </Platform>\n` +
191
275
  `\n` +
192
- `Or provide a password explicitly:\n` +
193
- ` <Database name="${name}" password="..." />`);
276
+ `Supported backends: 'openbao', 'vault', 'sealed-secrets', 'kubernetes', 'manual-secrets'`);
194
277
  }
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
278
  break;
206
279
  default:
207
280
  throw new Error(`Database "${name}" has an unknown secrets backend "${secretProvider.backend}".\n` +
208
- `Supported backends: 'openbao', 'vault', 'sealed-secrets', 'kubernetes'`);
281
+ `Supported backends: 'openbao', 'vault', 'sealed-secrets', 'kubernetes', 'manual-secrets'`);
209
282
  }
210
283
  return resources;
211
284
  }
285
+ /**
286
+ * Render a VaultStaticSecret / OpenBaoStaticSecret syncing one backend entry
287
+ * into a Kubernetes Secret. Rotation semantics are first-class:
288
+ * `refreshAfter` comes from the provider (Platform secrets config),
289
+ * `rolloutRestartTargets` restarts consuming workloads on rotation.
290
+ * The secret content itself is never rendered into the manifest.
291
+ */
292
+ function createStaticSecretResource(resourceName, destinationName, namespace, secretProvider, vaultPath, rolloutRestartTargets) {
293
+ const targets = rolloutRestartTargets?.map((t) => ({
294
+ apiVersion: t.apiVersion ?? 'apps/v1',
295
+ kind: t.kind ?? 'Deployment',
296
+ name: t.name,
297
+ }));
298
+ const spec = {
299
+ mount: secretProvider.mount,
300
+ type: 'kv-v2',
301
+ path: vaultPath,
302
+ ...(secretProvider.refreshAfter && { refreshAfter: secretProvider.refreshAfter }),
303
+ ...(targets && targets.length > 0 && { rolloutRestartTargets: targets }),
304
+ destination: { create: true, name: destinationName },
305
+ };
306
+ if (secretProvider.backend === 'openbao') {
307
+ return [
308
+ (0, core_1.jsx)('OpenBaoStaticSecret', {
309
+ apiVersion: 'secrets.openbao.org/v1beta1',
310
+ kind: 'OpenBaoStaticSecret',
311
+ metadata: { name: resourceName, namespace },
312
+ spec: { openbaoAuthRef: secretProvider.authRef, ...spec },
313
+ }),
314
+ ];
315
+ }
316
+ return [
317
+ (0, core_1.jsx)('VaultStaticSecret', {
318
+ apiVersion: 'secrets.hashicorp.com/v1beta1',
319
+ kind: 'VaultStaticSecret',
320
+ metadata: { name: resourceName, namespace },
321
+ spec: { vaultAuthRef: secretProvider.authRef, ...spec },
322
+ }),
323
+ ];
324
+ }
212
325
  //# 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":";;;AA0CA,kCAKC;AA6ED,kCAqEC;AAjMD,oCAAsE;AACtE,iDAAkD;AAClD,iDAAmE;AACnE,oCAAqC;AAuCrC,SAAgB,WAAW,CAAC,KAAuB;IACjD,OAAO;QACL,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,KAAK;KAChB,CAAA;AACH,CAAC;AAaY,QAAA,UAAU,GAAG,IAAA,wBAAa,EAAmB,IAAI,CAAC,CAAA;AAmB/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,SAAgB,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IAEpC,MAAM,eAAe,GAAG,IAAA,iBAAU,EAAC,0BAAe,CAAC,CAAA;IACnD,MAAM,OAAO,GAAG,IAAA,iBAAU,EAAC,wBAAa,CAAC,CAAA;IAEzC,0BAA0B;IAC1B,IAAI,MAAiB,CAAA;IACrB,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;IACrC,CAAC;SAAM,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;QAClC,MAAM,GAAG,QAAQ,CAAA;IACnB,CAAC;SAAM,IACL,QAAQ;QACR,OAAO,QAAQ,KAAK,QAAQ;QAC5B,MAAM,IAAI,QAAQ;QACjB,QAAgB,CAAC,IAAI,KAAK,WAAW,EACtC,CAAC;QACD,sDAAsD;QACtD,MAAM,GAAG,WAAW,CAAE,QAAgB,CAAC,KAAK,CAAC,CAAA;IAC/C,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;IAC3D,CAAC;IAED,MAAM,SAAS,GAA6B,EAAE,CAAA;IAE9C,gCAAgC;IAChC,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,cAAc,CAAC,CAAA;IAC/E,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,SAAS,CAAC,IAAI,CAAC,IAAA,sBAAe,EAAC,gBAAS,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAA;IAC9D,CAAC;IAED,sBAAsB;IACtB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,EAAE,CAAC;YAC/E,MAAM,IAAI,KAAK,CACb,+EAA+E;gBAC7E,YAAY,OAAO,EAAE,OAAO,IAAI,MAAM,IAAI;gBAC1C,kEAAkE,CACrE,CAAA;QACH,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,mBAAmB,CAAA;QACzE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAA;QACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAA;QACnC,MAAM,QAAQ,GAAG,QAAQ;YACvB,CAAC,CAAC,GAAG,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;YAC5C,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAA;QAE7B,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,CAAA;QAC9F,SAAS,CAAC,IAAI,CACZ,IAAA,UAAG,EAAC,UAAU,EAAE;YACd,UAAU,EAAE,+BAA+B;YAC3C,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE;YACzD,IAAI,EAAE;gBACJ,KAAK;gBACL,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE;gBAC/C,YAAY,EAAE,IAAI;aACnB;SACF,CAAC,CACH,CAAA;IACH,CAAC;IAED,OAAO,IAAA,UAAG,EAAC,eAAQ,EAAE;QACnB,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,IAAA,UAAG,EAAC,kBAAU,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;KAChF,CAAC,CAAA;AACJ,CAAC"}