@reyemtech/nimbus 0.1.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/LICENSE +21 -0
- package/README.md +399 -0
- package/dist/cjs/aws/cluster.d.ts +32 -0
- package/dist/cjs/aws/cluster.d.ts.map +1 -0
- package/dist/cjs/aws/cluster.js +214 -0
- package/dist/cjs/aws/cluster.js.map +1 -0
- package/dist/cjs/aws/dns.d.ts +22 -0
- package/dist/cjs/aws/dns.d.ts.map +1 -0
- package/dist/cjs/aws/dns.js +95 -0
- package/dist/cjs/aws/dns.js.map +1 -0
- package/dist/cjs/aws/index.d.ts +10 -0
- package/dist/cjs/aws/index.d.ts.map +1 -0
- package/dist/cjs/aws/index.js +17 -0
- package/dist/cjs/aws/index.js.map +1 -0
- package/dist/cjs/aws/network.d.ts +27 -0
- package/dist/cjs/aws/network.d.ts.map +1 -0
- package/dist/cjs/aws/network.js +262 -0
- package/dist/cjs/aws/network.js.map +1 -0
- package/dist/cjs/aws/secrets.d.ts +26 -0
- package/dist/cjs/aws/secrets.d.ts.map +1 -0
- package/dist/cjs/aws/secrets.js +127 -0
- package/dist/cjs/aws/secrets.js.map +1 -0
- package/dist/cjs/azure/cluster.d.ts +44 -0
- package/dist/cjs/azure/cluster.d.ts.map +1 -0
- package/dist/cjs/azure/cluster.js +143 -0
- package/dist/cjs/azure/cluster.js.map +1 -0
- package/dist/cjs/azure/dns.d.ts +28 -0
- package/dist/cjs/azure/dns.d.ts.map +1 -0
- package/dist/cjs/azure/dns.js +169 -0
- package/dist/cjs/azure/dns.js.map +1 -0
- package/dist/cjs/azure/index.d.ts +10 -0
- package/dist/cjs/azure/index.d.ts.map +1 -0
- package/dist/cjs/azure/index.js +17 -0
- package/dist/cjs/azure/index.js.map +1 -0
- package/dist/cjs/azure/network.d.ts +28 -0
- package/dist/cjs/azure/network.d.ts.map +1 -0
- package/dist/cjs/azure/network.js +176 -0
- package/dist/cjs/azure/network.js.map +1 -0
- package/dist/cjs/azure/secrets.d.ts +37 -0
- package/dist/cjs/azure/secrets.d.ts.map +1 -0
- package/dist/cjs/azure/secrets.js +150 -0
- package/dist/cjs/azure/secrets.js.map +1 -0
- package/dist/cjs/cache/index.d.ts +7 -0
- package/dist/cjs/cache/index.d.ts.map +1 -0
- package/dist/cjs/cache/index.js +8 -0
- package/dist/cjs/cache/index.js.map +1 -0
- package/dist/cjs/cache/interfaces.d.ts +60 -0
- package/dist/cjs/cache/interfaces.d.ts.map +1 -0
- package/dist/cjs/cache/interfaces.js +11 -0
- package/dist/cjs/cache/interfaces.js.map +1 -0
- package/dist/cjs/cluster/index.d.ts +7 -0
- package/dist/cjs/cluster/index.d.ts.map +1 -0
- package/dist/cjs/cluster/index.js +8 -0
- package/dist/cjs/cluster/index.js.map +1 -0
- package/dist/cjs/cluster/interfaces.d.ts +120 -0
- package/dist/cjs/cluster/interfaces.d.ts.map +1 -0
- package/dist/cjs/cluster/interfaces.js +12 -0
- package/dist/cjs/cluster/interfaces.js.map +1 -0
- package/dist/cjs/database/index.d.ts +7 -0
- package/dist/cjs/database/index.d.ts.map +1 -0
- package/dist/cjs/database/index.js +8 -0
- package/dist/cjs/database/index.js.map +1 -0
- package/dist/cjs/database/interfaces.d.ts +93 -0
- package/dist/cjs/database/interfaces.d.ts.map +1 -0
- package/dist/cjs/database/interfaces.js +12 -0
- package/dist/cjs/database/interfaces.js.map +1 -0
- package/dist/cjs/dns/index.d.ts +7 -0
- package/dist/cjs/dns/index.d.ts.map +1 -0
- package/dist/cjs/dns/index.js +8 -0
- package/dist/cjs/dns/index.js.map +1 -0
- package/dist/cjs/dns/interfaces.d.ts +55 -0
- package/dist/cjs/dns/interfaces.d.ts.map +1 -0
- package/dist/cjs/dns/interfaces.js +11 -0
- package/dist/cjs/dns/interfaces.js.map +1 -0
- package/dist/cjs/factories/cluster.d.ts +45 -0
- package/dist/cjs/factories/cluster.d.ts.map +1 -0
- package/dist/cjs/factories/cluster.js +90 -0
- package/dist/cjs/factories/cluster.js.map +1 -0
- package/dist/cjs/factories/dns.d.ts +30 -0
- package/dist/cjs/factories/dns.d.ts.map +1 -0
- package/dist/cjs/factories/dns.js +56 -0
- package/dist/cjs/factories/dns.js.map +1 -0
- package/dist/cjs/factories/index.d.ts +15 -0
- package/dist/cjs/factories/index.d.ts.map +1 -0
- package/dist/cjs/factories/index.js +23 -0
- package/dist/cjs/factories/index.js.map +1 -0
- package/dist/cjs/factories/network.d.ts +40 -0
- package/dist/cjs/factories/network.d.ts.map +1 -0
- package/dist/cjs/factories/network.js +85 -0
- package/dist/cjs/factories/network.js.map +1 -0
- package/dist/cjs/factories/secrets.d.ts +38 -0
- package/dist/cjs/factories/secrets.d.ts.map +1 -0
- package/dist/cjs/factories/secrets.js +67 -0
- package/dist/cjs/factories/secrets.js.map +1 -0
- package/dist/cjs/factories/types.d.ts +75 -0
- package/dist/cjs/factories/types.d.ts.map +1 -0
- package/dist/cjs/factories/types.js +28 -0
- package/dist/cjs/factories/types.js.map +1 -0
- package/dist/cjs/global-lb/glb.d.ts +29 -0
- package/dist/cjs/global-lb/glb.d.ts.map +1 -0
- package/dist/cjs/global-lb/glb.js +220 -0
- package/dist/cjs/global-lb/glb.js.map +1 -0
- package/dist/cjs/global-lb/index.d.ts +8 -0
- package/dist/cjs/global-lb/index.d.ts.map +1 -0
- package/dist/cjs/global-lb/index.js +11 -0
- package/dist/cjs/global-lb/index.js.map +1 -0
- package/dist/cjs/global-lb/interfaces.d.ts +62 -0
- package/dist/cjs/global-lb/interfaces.d.ts.map +1 -0
- package/dist/cjs/global-lb/interfaces.js +11 -0
- package/dist/cjs/global-lb/interfaces.js.map +1 -0
- package/dist/cjs/index.d.ts +28 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +72 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/network/cidr.d.ts +92 -0
- package/dist/cjs/network/cidr.d.ts.map +1 -0
- package/dist/cjs/network/cidr.js +189 -0
- package/dist/cjs/network/cidr.js.map +1 -0
- package/dist/cjs/network/index.d.ts +8 -0
- package/dist/cjs/network/index.d.ts.map +1 -0
- package/dist/cjs/network/index.js +17 -0
- package/dist/cjs/network/index.js.map +1 -0
- package/dist/cjs/network/interfaces.d.ts +60 -0
- package/dist/cjs/network/interfaces.d.ts.map +1 -0
- package/dist/cjs/network/interfaces.js +12 -0
- package/dist/cjs/network/interfaces.js.map +1 -0
- package/dist/cjs/platform/index.d.ts +8 -0
- package/dist/cjs/platform/index.d.ts.map +1 -0
- package/dist/cjs/platform/index.js +11 -0
- package/dist/cjs/platform/index.js.map +1 -0
- package/dist/cjs/platform/interfaces.d.ts +86 -0
- package/dist/cjs/platform/interfaces.d.ts.map +1 -0
- package/dist/cjs/platform/interfaces.js +12 -0
- package/dist/cjs/platform/interfaces.js.map +1 -0
- package/dist/cjs/platform/stack.d.ts +32 -0
- package/dist/cjs/platform/stack.d.ts.map +1 -0
- package/dist/cjs/platform/stack.js +258 -0
- package/dist/cjs/platform/stack.js.map +1 -0
- package/dist/cjs/queue/index.d.ts +7 -0
- package/dist/cjs/queue/index.d.ts.map +1 -0
- package/dist/cjs/queue/index.js +8 -0
- package/dist/cjs/queue/index.js.map +1 -0
- package/dist/cjs/queue/interfaces.d.ts +46 -0
- package/dist/cjs/queue/interfaces.d.ts.map +1 -0
- package/dist/cjs/queue/interfaces.js +11 -0
- package/dist/cjs/queue/interfaces.js.map +1 -0
- package/dist/cjs/secrets/index.d.ts +7 -0
- package/dist/cjs/secrets/index.d.ts.map +1 -0
- package/dist/cjs/secrets/index.js +8 -0
- package/dist/cjs/secrets/index.js.map +1 -0
- package/dist/cjs/secrets/interfaces.d.ts +73 -0
- package/dist/cjs/secrets/interfaces.d.ts.map +1 -0
- package/dist/cjs/secrets/interfaces.js +11 -0
- package/dist/cjs/secrets/interfaces.js.map +1 -0
- package/dist/cjs/storage/index.d.ts +7 -0
- package/dist/cjs/storage/index.d.ts.map +1 -0
- package/dist/cjs/storage/index.js +8 -0
- package/dist/cjs/storage/index.js.map +1 -0
- package/dist/cjs/storage/interfaces.d.ts +63 -0
- package/dist/cjs/storage/interfaces.d.ts.map +1 -0
- package/dist/cjs/storage/interfaces.js +11 -0
- package/dist/cjs/storage/interfaces.js.map +1 -0
- package/dist/cjs/types/cloud-target.d.ts +89 -0
- package/dist/cjs/types/cloud-target.d.ts.map +1 -0
- package/dist/cjs/types/cloud-target.js +73 -0
- package/dist/cjs/types/cloud-target.js.map +1 -0
- package/dist/cjs/types/errors.d.ts +96 -0
- package/dist/cjs/types/errors.d.ts.map +1 -0
- package/dist/cjs/types/errors.js +127 -0
- package/dist/cjs/types/errors.js.map +1 -0
- package/dist/cjs/types/index.d.ts +10 -0
- package/dist/cjs/types/index.d.ts.map +1 -0
- package/dist/cjs/types/index.js +33 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/tags.d.ts +53 -0
- package/dist/cjs/types/tags.d.ts.map +1 -0
- package/dist/cjs/types/tags.js +110 -0
- package/dist/cjs/types/tags.js.map +1 -0
- package/dist/cjs/types/validation.d.ts +63 -0
- package/dist/cjs/types/validation.d.ts.map +1 -0
- package/dist/cjs/types/validation.js +158 -0
- package/dist/cjs/types/validation.js.map +1 -0
- package/dist/esm/aws/cluster.d.ts +32 -0
- package/dist/esm/aws/cluster.d.ts.map +1 -0
- package/dist/esm/aws/cluster.js +214 -0
- package/dist/esm/aws/cluster.js.map +1 -0
- package/dist/esm/aws/dns.d.ts +22 -0
- package/dist/esm/aws/dns.d.ts.map +1 -0
- package/dist/esm/aws/dns.js +95 -0
- package/dist/esm/aws/dns.js.map +1 -0
- package/dist/esm/aws/index.d.ts +10 -0
- package/dist/esm/aws/index.d.ts.map +1 -0
- package/dist/esm/aws/index.js +17 -0
- package/dist/esm/aws/index.js.map +1 -0
- package/dist/esm/aws/network.d.ts +27 -0
- package/dist/esm/aws/network.d.ts.map +1 -0
- package/dist/esm/aws/network.js +262 -0
- package/dist/esm/aws/network.js.map +1 -0
- package/dist/esm/aws/secrets.d.ts +26 -0
- package/dist/esm/aws/secrets.d.ts.map +1 -0
- package/dist/esm/aws/secrets.js +127 -0
- package/dist/esm/aws/secrets.js.map +1 -0
- package/dist/esm/azure/cluster.d.ts +44 -0
- package/dist/esm/azure/cluster.d.ts.map +1 -0
- package/dist/esm/azure/cluster.js +143 -0
- package/dist/esm/azure/cluster.js.map +1 -0
- package/dist/esm/azure/dns.d.ts +28 -0
- package/dist/esm/azure/dns.d.ts.map +1 -0
- package/dist/esm/azure/dns.js +169 -0
- package/dist/esm/azure/dns.js.map +1 -0
- package/dist/esm/azure/index.d.ts +10 -0
- package/dist/esm/azure/index.d.ts.map +1 -0
- package/dist/esm/azure/index.js +17 -0
- package/dist/esm/azure/index.js.map +1 -0
- package/dist/esm/azure/network.d.ts +28 -0
- package/dist/esm/azure/network.d.ts.map +1 -0
- package/dist/esm/azure/network.js +176 -0
- package/dist/esm/azure/network.js.map +1 -0
- package/dist/esm/azure/secrets.d.ts +37 -0
- package/dist/esm/azure/secrets.d.ts.map +1 -0
- package/dist/esm/azure/secrets.js +150 -0
- package/dist/esm/azure/secrets.js.map +1 -0
- package/dist/esm/cache/index.d.ts +7 -0
- package/dist/esm/cache/index.d.ts.map +1 -0
- package/dist/esm/cache/index.js +8 -0
- package/dist/esm/cache/index.js.map +1 -0
- package/dist/esm/cache/interfaces.d.ts +60 -0
- package/dist/esm/cache/interfaces.d.ts.map +1 -0
- package/dist/esm/cache/interfaces.js +11 -0
- package/dist/esm/cache/interfaces.js.map +1 -0
- package/dist/esm/cluster/index.d.ts +7 -0
- package/dist/esm/cluster/index.d.ts.map +1 -0
- package/dist/esm/cluster/index.js +8 -0
- package/dist/esm/cluster/index.js.map +1 -0
- package/dist/esm/cluster/interfaces.d.ts +120 -0
- package/dist/esm/cluster/interfaces.d.ts.map +1 -0
- package/dist/esm/cluster/interfaces.js +12 -0
- package/dist/esm/cluster/interfaces.js.map +1 -0
- package/dist/esm/database/index.d.ts +7 -0
- package/dist/esm/database/index.d.ts.map +1 -0
- package/dist/esm/database/index.js +8 -0
- package/dist/esm/database/index.js.map +1 -0
- package/dist/esm/database/interfaces.d.ts +93 -0
- package/dist/esm/database/interfaces.d.ts.map +1 -0
- package/dist/esm/database/interfaces.js +12 -0
- package/dist/esm/database/interfaces.js.map +1 -0
- package/dist/esm/dns/index.d.ts +7 -0
- package/dist/esm/dns/index.d.ts.map +1 -0
- package/dist/esm/dns/index.js +8 -0
- package/dist/esm/dns/index.js.map +1 -0
- package/dist/esm/dns/interfaces.d.ts +55 -0
- package/dist/esm/dns/interfaces.d.ts.map +1 -0
- package/dist/esm/dns/interfaces.js +11 -0
- package/dist/esm/dns/interfaces.js.map +1 -0
- package/dist/esm/factories/cluster.d.ts +45 -0
- package/dist/esm/factories/cluster.d.ts.map +1 -0
- package/dist/esm/factories/cluster.js +90 -0
- package/dist/esm/factories/cluster.js.map +1 -0
- package/dist/esm/factories/dns.d.ts +30 -0
- package/dist/esm/factories/dns.d.ts.map +1 -0
- package/dist/esm/factories/dns.js +56 -0
- package/dist/esm/factories/dns.js.map +1 -0
- package/dist/esm/factories/index.d.ts +15 -0
- package/dist/esm/factories/index.d.ts.map +1 -0
- package/dist/esm/factories/index.js +23 -0
- package/dist/esm/factories/index.js.map +1 -0
- package/dist/esm/factories/network.d.ts +40 -0
- package/dist/esm/factories/network.d.ts.map +1 -0
- package/dist/esm/factories/network.js +85 -0
- package/dist/esm/factories/network.js.map +1 -0
- package/dist/esm/factories/secrets.d.ts +38 -0
- package/dist/esm/factories/secrets.d.ts.map +1 -0
- package/dist/esm/factories/secrets.js +67 -0
- package/dist/esm/factories/secrets.js.map +1 -0
- package/dist/esm/factories/types.d.ts +75 -0
- package/dist/esm/factories/types.d.ts.map +1 -0
- package/dist/esm/factories/types.js +28 -0
- package/dist/esm/factories/types.js.map +1 -0
- package/dist/esm/global-lb/glb.d.ts +29 -0
- package/dist/esm/global-lb/glb.d.ts.map +1 -0
- package/dist/esm/global-lb/glb.js +220 -0
- package/dist/esm/global-lb/glb.js.map +1 -0
- package/dist/esm/global-lb/index.d.ts +8 -0
- package/dist/esm/global-lb/index.d.ts.map +1 -0
- package/dist/esm/global-lb/index.js +11 -0
- package/dist/esm/global-lb/index.js.map +1 -0
- package/dist/esm/global-lb/interfaces.d.ts +62 -0
- package/dist/esm/global-lb/interfaces.d.ts.map +1 -0
- package/dist/esm/global-lb/interfaces.js +11 -0
- package/dist/esm/global-lb/interfaces.js.map +1 -0
- package/dist/esm/index.d.ts +28 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +72 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/network/cidr.d.ts +92 -0
- package/dist/esm/network/cidr.d.ts.map +1 -0
- package/dist/esm/network/cidr.js +189 -0
- package/dist/esm/network/cidr.js.map +1 -0
- package/dist/esm/network/index.d.ts +8 -0
- package/dist/esm/network/index.d.ts.map +1 -0
- package/dist/esm/network/index.js +17 -0
- package/dist/esm/network/index.js.map +1 -0
- package/dist/esm/network/interfaces.d.ts +60 -0
- package/dist/esm/network/interfaces.d.ts.map +1 -0
- package/dist/esm/network/interfaces.js +12 -0
- package/dist/esm/network/interfaces.js.map +1 -0
- package/dist/esm/platform/index.d.ts +8 -0
- package/dist/esm/platform/index.d.ts.map +1 -0
- package/dist/esm/platform/index.js +11 -0
- package/dist/esm/platform/index.js.map +1 -0
- package/dist/esm/platform/interfaces.d.ts +86 -0
- package/dist/esm/platform/interfaces.d.ts.map +1 -0
- package/dist/esm/platform/interfaces.js +12 -0
- package/dist/esm/platform/interfaces.js.map +1 -0
- package/dist/esm/platform/stack.d.ts +32 -0
- package/dist/esm/platform/stack.d.ts.map +1 -0
- package/dist/esm/platform/stack.js +258 -0
- package/dist/esm/platform/stack.js.map +1 -0
- package/dist/esm/queue/index.d.ts +7 -0
- package/dist/esm/queue/index.d.ts.map +1 -0
- package/dist/esm/queue/index.js +8 -0
- package/dist/esm/queue/index.js.map +1 -0
- package/dist/esm/queue/interfaces.d.ts +46 -0
- package/dist/esm/queue/interfaces.d.ts.map +1 -0
- package/dist/esm/queue/interfaces.js +11 -0
- package/dist/esm/queue/interfaces.js.map +1 -0
- package/dist/esm/secrets/index.d.ts +7 -0
- package/dist/esm/secrets/index.d.ts.map +1 -0
- package/dist/esm/secrets/index.js +8 -0
- package/dist/esm/secrets/index.js.map +1 -0
- package/dist/esm/secrets/interfaces.d.ts +73 -0
- package/dist/esm/secrets/interfaces.d.ts.map +1 -0
- package/dist/esm/secrets/interfaces.js +11 -0
- package/dist/esm/secrets/interfaces.js.map +1 -0
- package/dist/esm/storage/index.d.ts +7 -0
- package/dist/esm/storage/index.d.ts.map +1 -0
- package/dist/esm/storage/index.js +8 -0
- package/dist/esm/storage/index.js.map +1 -0
- package/dist/esm/storage/interfaces.d.ts +63 -0
- package/dist/esm/storage/interfaces.d.ts.map +1 -0
- package/dist/esm/storage/interfaces.js +11 -0
- package/dist/esm/storage/interfaces.js.map +1 -0
- package/dist/esm/types/cloud-target.d.ts +89 -0
- package/dist/esm/types/cloud-target.d.ts.map +1 -0
- package/dist/esm/types/cloud-target.js +73 -0
- package/dist/esm/types/cloud-target.js.map +1 -0
- package/dist/esm/types/errors.d.ts +96 -0
- package/dist/esm/types/errors.d.ts.map +1 -0
- package/dist/esm/types/errors.js +127 -0
- package/dist/esm/types/errors.js.map +1 -0
- package/dist/esm/types/index.d.ts +10 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/index.js +33 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/tags.d.ts +53 -0
- package/dist/esm/types/tags.d.ts.map +1 -0
- package/dist/esm/types/tags.js +110 -0
- package/dist/esm/types/tags.js.map +1 -0
- package/dist/esm/types/validation.d.ts +63 -0
- package/dist/esm/types/validation.d.ts.map +1 -0
- package/dist/esm/types/validation.js +158 -0
- package/dist/esm/types/validation.js.map +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DNS interfaces for @reyemtech/nimbus.
|
|
3
|
+
*
|
|
4
|
+
* Abstracts DNS zone management across Route 53 (AWS),
|
|
5
|
+
* Azure DNS Zone, and Cloud DNS (GCP).
|
|
6
|
+
*
|
|
7
|
+
* @module dns/interfaces
|
|
8
|
+
*/
|
|
9
|
+
import type * as pulumi from "@pulumi/pulumi";
|
|
10
|
+
import type { CloudArg, ResolvedCloudTarget } from "../types";
|
|
11
|
+
/** Supported DNS record types. */
|
|
12
|
+
export type DnsRecordType = "A" | "AAAA" | "CNAME" | "TXT" | "MX" | "NS" | "SRV" | "CAA";
|
|
13
|
+
/** DNS record configuration. */
|
|
14
|
+
export interface IDnsRecord {
|
|
15
|
+
/** Record name relative to zone (e.g., "www" or "argocd"). Use "@" for apex. */
|
|
16
|
+
readonly name: string;
|
|
17
|
+
readonly type: DnsRecordType;
|
|
18
|
+
readonly values: ReadonlyArray<string>;
|
|
19
|
+
/** TTL in seconds. Default: 300. */
|
|
20
|
+
readonly ttl?: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* DNS configuration input.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const config: IDnsConfig = {
|
|
28
|
+
* cloud: "aws",
|
|
29
|
+
* zoneName: "reyem.tech",
|
|
30
|
+
* };
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export interface IDnsConfig {
|
|
34
|
+
readonly cloud: CloudArg;
|
|
35
|
+
readonly zoneName: string;
|
|
36
|
+
readonly records?: ReadonlyArray<IDnsRecord>;
|
|
37
|
+
readonly tags?: Readonly<Record<string, string>>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* DNS output — the created DNS zone.
|
|
41
|
+
*
|
|
42
|
+
* Use `addRecord()` to manage records in the zone.
|
|
43
|
+
*/
|
|
44
|
+
export interface IDns {
|
|
45
|
+
readonly name: string;
|
|
46
|
+
readonly cloud: ResolvedCloudTarget;
|
|
47
|
+
readonly zoneId: pulumi.Output<string>;
|
|
48
|
+
readonly zoneName: string;
|
|
49
|
+
readonly nameServers: pulumi.Output<ReadonlyArray<string>>;
|
|
50
|
+
/** Add a DNS record to the zone. */
|
|
51
|
+
addRecord(record: IDnsRecord): void;
|
|
52
|
+
/** Escape hatch: cloud-native DNS zone resource. */
|
|
53
|
+
readonly nativeResource: pulumi.Resource;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/dns/interfaces.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE9D,kCAAkC;AAClC,MAAM,MAAM,aAAa,GAAG,GAAG,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;AAEzF,gCAAgC;AAChC,MAAM,WAAW,UAAU;IACzB,gFAAgF;IAChF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,oCAAoC;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAClD;AAED;;;;GAIG;AACH,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAE3D,oCAAoC;IACpC,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAEpC,oDAAoD;IACpD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC1C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DNS interfaces for @reyemtech/nimbus.
|
|
4
|
+
*
|
|
5
|
+
* Abstracts DNS zone management across Route 53 (AWS),
|
|
6
|
+
* Azure DNS Zone, and Cloud DNS (GCP).
|
|
7
|
+
*
|
|
8
|
+
* @module dns/interfaces
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
//# sourceMappingURL=interfaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/dns/interfaces.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cluster factory — creates EKS/AKS via a single cloud-agnostic function.
|
|
3
|
+
*
|
|
4
|
+
* Dispatches to AWS or Azure based on the `cloud` parameter.
|
|
5
|
+
* For multi-cloud arrays, matches networks by provider and returns an array.
|
|
6
|
+
*
|
|
7
|
+
* @module factories/cluster
|
|
8
|
+
*/
|
|
9
|
+
import type { ICluster, IClusterConfig } from "../cluster";
|
|
10
|
+
import type { INetwork } from "../network";
|
|
11
|
+
import type { IProviderOptions } from "./types";
|
|
12
|
+
/** Config for the createCluster factory. */
|
|
13
|
+
export type ICreateClusterConfig = IClusterConfig & {
|
|
14
|
+
readonly providerOptions?: IProviderOptions;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Create a Kubernetes cluster (EKS/AKS) for one or more cloud providers.
|
|
18
|
+
*
|
|
19
|
+
* @param name - Resource name prefix
|
|
20
|
+
* @param config - Cluster configuration with cloud target and optional providerOptions
|
|
21
|
+
* @param networks - Network(s) to deploy into. For multi-cloud, pass an array matched by provider.
|
|
22
|
+
* @returns Single ICluster for a single cloud target, array for multi-cloud
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* // Single cloud
|
|
27
|
+
* const cluster = createCluster("prod", {
|
|
28
|
+
* cloud: "aws",
|
|
29
|
+
* nodePools: [{ name: "system", instanceType: "t4g.small", minNodes: 2, maxNodes: 3 }],
|
|
30
|
+
* providerOptions: { aws: { autoMode: true } },
|
|
31
|
+
* }, network);
|
|
32
|
+
*
|
|
33
|
+
* // Multi-cloud
|
|
34
|
+
* const clusters = createCluster("prod", {
|
|
35
|
+
* cloud: ["aws", "azure"],
|
|
36
|
+
* nodePools: [...],
|
|
37
|
+
* providerOptions: {
|
|
38
|
+
* aws: { autoMode: true },
|
|
39
|
+
* azure: { resourceGroupName: "my-rg" },
|
|
40
|
+
* },
|
|
41
|
+
* }, networks);
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare function createCluster(name: string, config: ICreateClusterConfig, networks: INetwork | INetwork[]): ICluster | ICluster[];
|
|
45
|
+
//# sourceMappingURL=cluster.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cluster.d.ts","sourceRoot":"","sources":["../../../src/factories/cluster.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAK3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,4CAA4C;AAC5C,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG;IAClD,QAAQ,CAAC,eAAe,CAAC,EAAE,gBAAgB,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAC9B,QAAQ,GAAG,QAAQ,EAAE,CAoBvB"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cluster factory — creates EKS/AKS via a single cloud-agnostic function.
|
|
4
|
+
*
|
|
5
|
+
* Dispatches to AWS or Azure based on the `cloud` parameter.
|
|
6
|
+
* For multi-cloud arrays, matches networks by provider and returns an array.
|
|
7
|
+
*
|
|
8
|
+
* @module factories/cluster
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.createCluster = createCluster;
|
|
12
|
+
const types_1 = require("../types");
|
|
13
|
+
const aws_1 = require("../aws");
|
|
14
|
+
const azure_1 = require("../azure");
|
|
15
|
+
const types_2 = require("./types");
|
|
16
|
+
/**
|
|
17
|
+
* Create a Kubernetes cluster (EKS/AKS) for one or more cloud providers.
|
|
18
|
+
*
|
|
19
|
+
* @param name - Resource name prefix
|
|
20
|
+
* @param config - Cluster configuration with cloud target and optional providerOptions
|
|
21
|
+
* @param networks - Network(s) to deploy into. For multi-cloud, pass an array matched by provider.
|
|
22
|
+
* @returns Single ICluster for a single cloud target, array for multi-cloud
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* // Single cloud
|
|
27
|
+
* const cluster = createCluster("prod", {
|
|
28
|
+
* cloud: "aws",
|
|
29
|
+
* nodePools: [{ name: "system", instanceType: "t4g.small", minNodes: 2, maxNodes: 3 }],
|
|
30
|
+
* providerOptions: { aws: { autoMode: true } },
|
|
31
|
+
* }, network);
|
|
32
|
+
*
|
|
33
|
+
* // Multi-cloud
|
|
34
|
+
* const clusters = createCluster("prod", {
|
|
35
|
+
* cloud: ["aws", "azure"],
|
|
36
|
+
* nodePools: [...],
|
|
37
|
+
* providerOptions: {
|
|
38
|
+
* aws: { autoMode: true },
|
|
39
|
+
* azure: { resourceGroupName: "my-rg" },
|
|
40
|
+
* },
|
|
41
|
+
* }, networks);
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
function createCluster(name, config, networks) {
|
|
45
|
+
if (!(0, types_2.isMultiCloud)(config.cloud)) {
|
|
46
|
+
const target = (0, types_1.resolveCloudTarget)(config.cloud);
|
|
47
|
+
const network = Array.isArray(networks) ? findNetworkForProvider(networks, target) : networks;
|
|
48
|
+
return dispatchCluster(name, config, target, network, config.providerOptions);
|
|
49
|
+
}
|
|
50
|
+
const targets = (0, types_1.resolveCloudTarget)(config.cloud);
|
|
51
|
+
const networkArray = Array.isArray(networks) ? networks : [networks];
|
|
52
|
+
return targets.map((target) => {
|
|
53
|
+
const network = findNetworkForProvider(networkArray, target);
|
|
54
|
+
return dispatchCluster(`${name}-${target.provider}`, config, target, network, config.providerOptions);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function dispatchCluster(name, config, target, network, opts) {
|
|
58
|
+
const targetConfig = { ...config, cloud: { provider: target.provider, region: target.region } };
|
|
59
|
+
switch (target.provider) {
|
|
60
|
+
case "aws":
|
|
61
|
+
return (0, aws_1.createEksCluster)(name, targetConfig, network, opts?.aws);
|
|
62
|
+
case "azure": {
|
|
63
|
+
const azureOpts = opts?.azure;
|
|
64
|
+
if (!azureOpts) {
|
|
65
|
+
throw new types_1.UnsupportedFeatureError("Azure requires providerOptions.azure.resourceGroupName", "azure");
|
|
66
|
+
}
|
|
67
|
+
return (0, azure_1.createAksCluster)(name, targetConfig, network, {
|
|
68
|
+
resourceGroupName: azureOpts.resourceGroupName,
|
|
69
|
+
azureCni: azureOpts.azureCni,
|
|
70
|
+
virtualNodes: azureOpts.virtualNodes,
|
|
71
|
+
aadTenantId: azureOpts.aadTenantId,
|
|
72
|
+
dnsPrefix: azureOpts.dnsPrefix,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
default:
|
|
76
|
+
throw new types_1.UnsupportedFeatureError("cluster", target.provider);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Find a network matching the target provider from an array of networks.
|
|
81
|
+
*/
|
|
82
|
+
function findNetworkForProvider(networks, target) {
|
|
83
|
+
const match = networks.find((n) => n.cloud.provider === target.provider);
|
|
84
|
+
if (!match) {
|
|
85
|
+
throw new types_1.UnsupportedFeatureError(`No network found for provider "${target.provider}". ` +
|
|
86
|
+
`Available: ${networks.map((n) => n.cloud.provider).join(", ")}`, target.provider);
|
|
87
|
+
}
|
|
88
|
+
return match;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=cluster.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cluster.js","sourceRoot":"","sources":["../../../src/factories/cluster.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DNS factory — creates Route 53/Azure DNS via a single cloud-agnostic function.
|
|
3
|
+
*
|
|
4
|
+
* Dispatches to AWS or Azure based on the `cloud` parameter.
|
|
5
|
+
*
|
|
6
|
+
* @module factories/dns
|
|
7
|
+
*/
|
|
8
|
+
import type { IDns, IDnsConfig } from "../dns";
|
|
9
|
+
import type { IProviderOptions } from "./types";
|
|
10
|
+
/** Config for the createDns factory. */
|
|
11
|
+
export type ICreateDnsConfig = IDnsConfig & {
|
|
12
|
+
readonly providerOptions?: IProviderOptions;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Create a DNS zone for one or more cloud providers.
|
|
16
|
+
*
|
|
17
|
+
* @param name - Resource name prefix
|
|
18
|
+
* @param config - DNS configuration with cloud target and optional providerOptions
|
|
19
|
+
* @returns Single IDns for a single cloud target, array for multi-cloud
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const dns = createDns("prod", {
|
|
24
|
+
* cloud: "aws",
|
|
25
|
+
* zoneName: "example.com",
|
|
26
|
+
* });
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function createDns(name: string, config: ICreateDnsConfig): IDns | IDns[];
|
|
30
|
+
//# sourceMappingURL=dns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dns.d.ts","sourceRoot":"","sources":["../../../src/factories/dns.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAK/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,wCAAwC;AACxC,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG;IAC1C,QAAQ,CAAC,eAAe,CAAC,EAAE,gBAAgB,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI,EAAE,CAU/E"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DNS factory — creates Route 53/Azure DNS via a single cloud-agnostic function.
|
|
4
|
+
*
|
|
5
|
+
* Dispatches to AWS or Azure based on the `cloud` parameter.
|
|
6
|
+
*
|
|
7
|
+
* @module factories/dns
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.createDns = createDns;
|
|
11
|
+
const types_1 = require("../types");
|
|
12
|
+
const aws_1 = require("../aws");
|
|
13
|
+
const azure_1 = require("../azure");
|
|
14
|
+
const types_2 = require("./types");
|
|
15
|
+
/**
|
|
16
|
+
* Create a DNS zone for one or more cloud providers.
|
|
17
|
+
*
|
|
18
|
+
* @param name - Resource name prefix
|
|
19
|
+
* @param config - DNS configuration with cloud target and optional providerOptions
|
|
20
|
+
* @returns Single IDns for a single cloud target, array for multi-cloud
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const dns = createDns("prod", {
|
|
25
|
+
* cloud: "aws",
|
|
26
|
+
* zoneName: "example.com",
|
|
27
|
+
* });
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
function createDns(name, config) {
|
|
31
|
+
if (!(0, types_2.isMultiCloud)(config.cloud)) {
|
|
32
|
+
const target = (0, types_1.resolveCloudTarget)(config.cloud);
|
|
33
|
+
return dispatchDns(name, config, target, config.providerOptions);
|
|
34
|
+
}
|
|
35
|
+
const targets = (0, types_1.resolveCloudTarget)(config.cloud);
|
|
36
|
+
return targets.map((target) => dispatchDns(`${name}-${target.provider}`, config, target, config.providerOptions));
|
|
37
|
+
}
|
|
38
|
+
function dispatchDns(name, config, target, opts) {
|
|
39
|
+
const targetConfig = { ...config, cloud: { provider: target.provider, region: target.region } };
|
|
40
|
+
switch (target.provider) {
|
|
41
|
+
case "aws":
|
|
42
|
+
return (0, aws_1.createRoute53Dns)(name, targetConfig);
|
|
43
|
+
case "azure": {
|
|
44
|
+
const azureOpts = opts?.azure;
|
|
45
|
+
if (!azureOpts) {
|
|
46
|
+
throw new types_1.UnsupportedFeatureError("Azure requires providerOptions.azure.resourceGroupName", "azure");
|
|
47
|
+
}
|
|
48
|
+
return (0, azure_1.createAzureDns)(name, targetConfig, {
|
|
49
|
+
resourceGroupName: azureOpts.resourceGroupName,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
default:
|
|
53
|
+
throw new types_1.UnsupportedFeatureError("dns", target.provider);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=dns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dns.js","sourceRoot":"","sources":["../../../src/factories/dns.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AA8BH,8BAUC;AArCD,oCAAuE;AAEvE,gCAA0C;AAC1C,oCAA0C;AAE1C,mCAAuC;AAOvC;;;;;;;;;;;;;;GAcG;AACH,SAAgB,SAAS,CAAC,IAAY,EAAE,MAAwB;IAC9D,IAAI,CAAC,IAAA,oBAAY,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC5B,WAAW,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAClF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,IAAY,EACZ,MAAkB,EAClB,MAA2B,EAC3B,IAAuB;IAEvB,MAAM,YAAY,GAAG,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;IAEhG,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,KAAK;YACR,OAAO,IAAA,sBAAgB,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC9C,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,+BAAuB,CAC/B,wDAAwD,EACxD,OAAO,CACR,CAAC;YACJ,CAAC;YACD,OAAO,IAAA,sBAAc,EAAC,IAAI,EAAE,YAAY,EAAE;gBACxC,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;aAC/C,CAAC,CAAC;QACL,CAAC;QACD;YACE,MAAM,IAAI,+BAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Factory functions — the primary cloud-agnostic API.
|
|
3
|
+
*
|
|
4
|
+
* Use these instead of cloud-specific functions (createAwsNetwork, createEksCluster, etc.)
|
|
5
|
+
* for truly cloud-agnostic infrastructure code.
|
|
6
|
+
*
|
|
7
|
+
* @module factories
|
|
8
|
+
*/
|
|
9
|
+
export type { IProviderOptions, IAwsProviderOptions, IAzureProviderOptions } from "./types";
|
|
10
|
+
export { extractProvider, isMultiCloud } from "./types";
|
|
11
|
+
export { createNetwork, type ICreateNetworkConfig } from "./network";
|
|
12
|
+
export { createCluster, type ICreateClusterConfig } from "./cluster";
|
|
13
|
+
export { createDns, type ICreateDnsConfig } from "./dns";
|
|
14
|
+
export { createSecrets, type ICreateSecretsConfig } from "./secrets";
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/factories/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Factory functions — the primary cloud-agnostic API.
|
|
4
|
+
*
|
|
5
|
+
* Use these instead of cloud-specific functions (createAwsNetwork, createEksCluster, etc.)
|
|
6
|
+
* for truly cloud-agnostic infrastructure code.
|
|
7
|
+
*
|
|
8
|
+
* @module factories
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.createSecrets = exports.createDns = exports.createCluster = exports.createNetwork = exports.isMultiCloud = exports.extractProvider = void 0;
|
|
12
|
+
var types_1 = require("./types");
|
|
13
|
+
Object.defineProperty(exports, "extractProvider", { enumerable: true, get: function () { return types_1.extractProvider; } });
|
|
14
|
+
Object.defineProperty(exports, "isMultiCloud", { enumerable: true, get: function () { return types_1.isMultiCloud; } });
|
|
15
|
+
var network_1 = require("./network");
|
|
16
|
+
Object.defineProperty(exports, "createNetwork", { enumerable: true, get: function () { return network_1.createNetwork; } });
|
|
17
|
+
var cluster_1 = require("./cluster");
|
|
18
|
+
Object.defineProperty(exports, "createCluster", { enumerable: true, get: function () { return cluster_1.createCluster; } });
|
|
19
|
+
var dns_1 = require("./dns");
|
|
20
|
+
Object.defineProperty(exports, "createDns", { enumerable: true, get: function () { return dns_1.createDns; } });
|
|
21
|
+
var secrets_1 = require("./secrets");
|
|
22
|
+
Object.defineProperty(exports, "createSecrets", { enumerable: true, get: function () { return secrets_1.createSecrets; } });
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/factories/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAGH,iCAAwD;AAA/C,wGAAA,eAAe,OAAA;AAAE,qGAAA,YAAY,OAAA;AAEtC,qCAAqE;AAA5D,wGAAA,aAAa,OAAA;AACtB,qCAAqE;AAA5D,wGAAA,aAAa,OAAA;AACtB,6BAAyD;AAAhD,gGAAA,SAAS,OAAA;AAClB,qCAAqE;AAA5D,wGAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Network factory — creates VPC/VNet via a single cloud-agnostic function.
|
|
3
|
+
*
|
|
4
|
+
* Dispatches to AWS or Azure based on the `cloud` parameter.
|
|
5
|
+
* For multi-cloud arrays, auto-offsets CIDRs and returns an array.
|
|
6
|
+
*
|
|
7
|
+
* @module factories/network
|
|
8
|
+
*/
|
|
9
|
+
import type { INetwork, INetworkConfig } from "../network";
|
|
10
|
+
import type { IProviderOptions } from "./types";
|
|
11
|
+
/** Config for the createNetwork factory. */
|
|
12
|
+
export type ICreateNetworkConfig = INetworkConfig & {
|
|
13
|
+
readonly providerOptions?: IProviderOptions;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Create a network (VPC/VNet) for one or more cloud providers.
|
|
17
|
+
*
|
|
18
|
+
* @param name - Resource name prefix
|
|
19
|
+
* @param config - Network configuration with cloud target and optional providerOptions
|
|
20
|
+
* @returns Single INetwork for a single cloud target, array for multi-cloud
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* // Single cloud
|
|
25
|
+
* const network = createNetwork("prod", {
|
|
26
|
+
* cloud: "aws",
|
|
27
|
+
* cidr: "10.0.0.0/16",
|
|
28
|
+
* natStrategy: "fck-nat",
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* // Multi-cloud
|
|
32
|
+
* const networks = createNetwork("prod", {
|
|
33
|
+
* cloud: ["aws", "azure"],
|
|
34
|
+
* cidr: "10.0.0.0/16",
|
|
35
|
+
* providerOptions: { azure: { resourceGroupName: "my-rg" } },
|
|
36
|
+
* });
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare function createNetwork(name: string, config: ICreateNetworkConfig): INetwork | INetwork[];
|
|
40
|
+
//# sourceMappingURL=network.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../src/factories/network.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAM3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,4CAA4C;AAC5C,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG;IAClD,QAAQ,CAAC,eAAe,CAAC,EAAE,gBAAgB,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,QAAQ,GAAG,QAAQ,EAAE,CAkB/F"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Network factory — creates VPC/VNet via a single cloud-agnostic function.
|
|
4
|
+
*
|
|
5
|
+
* Dispatches to AWS or Azure based on the `cloud` parameter.
|
|
6
|
+
* For multi-cloud arrays, auto-offsets CIDRs and returns an array.
|
|
7
|
+
*
|
|
8
|
+
* @module factories/network
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.createNetwork = createNetwork;
|
|
12
|
+
const network_1 = require("../network");
|
|
13
|
+
const types_1 = require("../types");
|
|
14
|
+
const aws_1 = require("../aws");
|
|
15
|
+
const azure_1 = require("../azure");
|
|
16
|
+
const types_2 = require("./types");
|
|
17
|
+
/**
|
|
18
|
+
* Create a network (VPC/VNet) for one or more cloud providers.
|
|
19
|
+
*
|
|
20
|
+
* @param name - Resource name prefix
|
|
21
|
+
* @param config - Network configuration with cloud target and optional providerOptions
|
|
22
|
+
* @returns Single INetwork for a single cloud target, array for multi-cloud
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* // Single cloud
|
|
27
|
+
* const network = createNetwork("prod", {
|
|
28
|
+
* cloud: "aws",
|
|
29
|
+
* cidr: "10.0.0.0/16",
|
|
30
|
+
* natStrategy: "fck-nat",
|
|
31
|
+
* });
|
|
32
|
+
*
|
|
33
|
+
* // Multi-cloud
|
|
34
|
+
* const networks = createNetwork("prod", {
|
|
35
|
+
* cloud: ["aws", "azure"],
|
|
36
|
+
* cidr: "10.0.0.0/16",
|
|
37
|
+
* providerOptions: { azure: { resourceGroupName: "my-rg" } },
|
|
38
|
+
* });
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
function createNetwork(name, config) {
|
|
42
|
+
if (!(0, types_2.isMultiCloud)(config.cloud)) {
|
|
43
|
+
const target = (0, types_1.resolveCloudTarget)(config.cloud);
|
|
44
|
+
return dispatchNetwork(name, config, target, config.providerOptions);
|
|
45
|
+
}
|
|
46
|
+
const targets = (0, types_1.resolveCloudTarget)(config.cloud);
|
|
47
|
+
const cidrs = resolveMultiCloudCidrs(config.cidr, targets.length);
|
|
48
|
+
return targets.map((target, i) => {
|
|
49
|
+
const perTargetConfig = { ...config, cloud: config.cloud, cidr: cidrs[i] };
|
|
50
|
+
return dispatchNetwork(`${name}-${target.provider}`, perTargetConfig, target, config.providerOptions);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
function dispatchNetwork(name, config, target, opts) {
|
|
54
|
+
const targetConfig = { ...config, cloud: { provider: target.provider, region: target.region } };
|
|
55
|
+
switch (target.provider) {
|
|
56
|
+
case "aws":
|
|
57
|
+
return (0, aws_1.createAwsNetwork)(name, targetConfig, opts?.aws);
|
|
58
|
+
case "azure": {
|
|
59
|
+
const azureOpts = opts?.azure;
|
|
60
|
+
if (!azureOpts) {
|
|
61
|
+
throw new types_1.UnsupportedFeatureError("Azure requires providerOptions.azure.resourceGroupName", "azure");
|
|
62
|
+
}
|
|
63
|
+
return (0, azure_1.createAzureNetwork)(name, targetConfig, {
|
|
64
|
+
resourceGroupName: azureOpts.resourceGroupName,
|
|
65
|
+
subnetCount: azureOpts.subnetCount,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
default:
|
|
69
|
+
throw new types_1.UnsupportedFeatureError("network", target.provider);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Resolve CIDRs for multi-cloud deployment.
|
|
74
|
+
* If a single CIDR is provided, auto-offset for each target.
|
|
75
|
+
* If no CIDR, use defaults.
|
|
76
|
+
*/
|
|
77
|
+
function resolveMultiCloudCidrs(cidr, count) {
|
|
78
|
+
if (!cidr) {
|
|
79
|
+
return (0, network_1.autoOffsetCidrs)(count);
|
|
80
|
+
}
|
|
81
|
+
const parsed = (0, network_1.parseCidr)(cidr);
|
|
82
|
+
const secondOctet = (parsed.start >>> 16) & 0xff;
|
|
83
|
+
return (0, network_1.autoOffsetCidrs)(count, { base: secondOctet });
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=network.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/factories/network.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAwCH,sCAkBC;AAvDD,wCAAwD;AACxD,oCAAuE;AAEvE,gCAA0C;AAC1C,oCAA8C;AAE9C,mCAAuC;AAOvC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAgB,aAAa,CAAC,IAAY,EAAE,MAA4B;IACtE,IAAI,CAAC,IAAA,oBAAY,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAElE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/B,MAAM,eAAe,GAAG,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,OAAO,eAAe,CACpB,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAC5B,eAAe,EACf,MAAM,EACN,MAAM,CAAC,eAAe,CACvB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CACtB,IAAY,EACZ,MAAsB,EACtB,MAA2B,EAC3B,IAAuB;IAEvB,MAAM,YAAY,GAAG,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;IAEhG,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,KAAK;YACR,OAAO,IAAA,sBAAgB,EAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACzD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,+BAAuB,CAC/B,wDAAwD,EACxD,OAAO,CACR,CAAC;YACJ,CAAC;YACD,OAAO,IAAA,0BAAkB,EAAC,IAAI,EAAE,YAAY,EAAE;gBAC5C,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;gBAC9C,WAAW,EAAE,SAAS,CAAC,WAAW;aACnC,CAAC,CAAC;QACL,CAAC;QACD;YACE,MAAM,IAAI,+BAAuB,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAAC,IAAwB,EAAE,KAAa;IACrE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAA,yBAAe,EAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,mBAAS,EAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACjD,OAAO,IAAA,yBAAe,EAAC,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secrets factory — creates Secrets Manager/Key Vault via a single cloud-agnostic function.
|
|
3
|
+
*
|
|
4
|
+
* Dispatches to AWS or Azure based on the `cloud` parameter.
|
|
5
|
+
*
|
|
6
|
+
* @module factories/secrets
|
|
7
|
+
*/
|
|
8
|
+
import type { ISecrets, ISecretsConfig } from "../secrets";
|
|
9
|
+
import type { IProviderOptions } from "./types";
|
|
10
|
+
/** Config for the createSecrets factory. */
|
|
11
|
+
export type ICreateSecretsConfig = ISecretsConfig & {
|
|
12
|
+
readonly providerOptions?: IProviderOptions;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Create a secrets store for one or more cloud providers.
|
|
16
|
+
*
|
|
17
|
+
* @param name - Resource name prefix
|
|
18
|
+
* @param config - Secrets configuration with cloud target and optional providerOptions
|
|
19
|
+
* @returns Single ISecrets for a single cloud target, array for multi-cloud
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const secrets = createSecrets("prod", {
|
|
24
|
+
* cloud: "aws",
|
|
25
|
+
* backend: "aws-secrets-manager",
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* const secrets = createSecrets("prod", {
|
|
29
|
+
* cloud: "azure",
|
|
30
|
+
* backend: "azure-key-vault",
|
|
31
|
+
* providerOptions: {
|
|
32
|
+
* azure: { resourceGroupName: "my-rg", tenantId: "..." },
|
|
33
|
+
* },
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function createSecrets(name: string, config: ICreateSecretsConfig): ISecrets | ISecrets[];
|
|
38
|
+
//# sourceMappingURL=secrets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../../src/factories/secrets.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAK3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,4CAA4C;AAC5C,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG;IAClD,QAAQ,CAAC,eAAe,CAAC,EAAE,gBAAgB,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,QAAQ,GAAG,QAAQ,EAAE,CAU/F"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Secrets factory — creates Secrets Manager/Key Vault via a single cloud-agnostic function.
|
|
4
|
+
*
|
|
5
|
+
* Dispatches to AWS or Azure based on the `cloud` parameter.
|
|
6
|
+
*
|
|
7
|
+
* @module factories/secrets
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.createSecrets = createSecrets;
|
|
11
|
+
const types_1 = require("../types");
|
|
12
|
+
const aws_1 = require("../aws");
|
|
13
|
+
const azure_1 = require("../azure");
|
|
14
|
+
const types_2 = require("./types");
|
|
15
|
+
/**
|
|
16
|
+
* Create a secrets store for one or more cloud providers.
|
|
17
|
+
*
|
|
18
|
+
* @param name - Resource name prefix
|
|
19
|
+
* @param config - Secrets configuration with cloud target and optional providerOptions
|
|
20
|
+
* @returns Single ISecrets for a single cloud target, array for multi-cloud
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const secrets = createSecrets("prod", {
|
|
25
|
+
* cloud: "aws",
|
|
26
|
+
* backend: "aws-secrets-manager",
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* const secrets = createSecrets("prod", {
|
|
30
|
+
* cloud: "azure",
|
|
31
|
+
* backend: "azure-key-vault",
|
|
32
|
+
* providerOptions: {
|
|
33
|
+
* azure: { resourceGroupName: "my-rg", tenantId: "..." },
|
|
34
|
+
* },
|
|
35
|
+
* });
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
function createSecrets(name, config) {
|
|
39
|
+
if (!(0, types_2.isMultiCloud)(config.cloud)) {
|
|
40
|
+
const target = (0, types_1.resolveCloudTarget)(config.cloud);
|
|
41
|
+
return dispatchSecrets(name, config, target, config.providerOptions);
|
|
42
|
+
}
|
|
43
|
+
const targets = (0, types_1.resolveCloudTarget)(config.cloud);
|
|
44
|
+
return targets.map((target) => dispatchSecrets(`${name}-${target.provider}`, config, target, config.providerOptions));
|
|
45
|
+
}
|
|
46
|
+
function dispatchSecrets(name, config, target, opts) {
|
|
47
|
+
const targetConfig = { ...config, cloud: { provider: target.provider, region: target.region } };
|
|
48
|
+
switch (target.provider) {
|
|
49
|
+
case "aws":
|
|
50
|
+
return (0, aws_1.createAwsSecrets)(name, targetConfig);
|
|
51
|
+
case "azure": {
|
|
52
|
+
const azureOpts = opts?.azure;
|
|
53
|
+
if (!azureOpts?.tenantId) {
|
|
54
|
+
throw new types_1.UnsupportedFeatureError("Azure requires providerOptions.azure with resourceGroupName and tenantId", "azure");
|
|
55
|
+
}
|
|
56
|
+
return (0, azure_1.createAzureSecrets)(name, targetConfig, {
|
|
57
|
+
resourceGroupName: azureOpts.resourceGroupName,
|
|
58
|
+
tenantId: azureOpts.tenantId,
|
|
59
|
+
objectId: azureOpts.objectId,
|
|
60
|
+
sku: azureOpts.sku,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
default:
|
|
64
|
+
throw new types_1.UnsupportedFeatureError("secrets", target.provider);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=secrets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../../src/factories/secrets.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAsCH,sCAUC;AA7CD,oCAAuE;AAEvE,gCAA0C;AAC1C,oCAA8C;AAE9C,mCAAuC;AAOvC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAgB,aAAa,CAAC,IAAY,EAAE,MAA4B;IACtE,IAAI,CAAC,IAAA,oBAAY,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC5B,eAAe,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CACtF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,IAAY,EACZ,MAAsB,EACtB,MAA2B,EAC3B,IAAuB;IAEvB,MAAM,YAAY,GAAG,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;IAEhG,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,KAAK;YACR,OAAO,IAAA,sBAAgB,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC9C,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;gBACzB,MAAM,IAAI,+BAAuB,CAC/B,0EAA0E,EAC1E,OAAO,CACR,CAAC;YACJ,CAAC;YACD,OAAO,IAAA,0BAAkB,EAAC,IAAI,EAAE,YAAY,EAAE;gBAC5C,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;gBAC9C,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,GAAG,EAAE,SAAS,CAAC,GAAG;aACnB,CAAC,CAAC;QACL,CAAC;QACD;YACE,MAAM,IAAI,+BAAuB,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
|