@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,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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Factory types for cloud-agnostic resource creation.
|
|
3
|
+
*
|
|
4
|
+
* Defines provider-specific options that can be passed through
|
|
5
|
+
* the unified factory functions via the `providerOptions` field.
|
|
6
|
+
*
|
|
7
|
+
* @module factories/types
|
|
8
|
+
*/
|
|
9
|
+
import type * as pulumi from "@pulumi/pulumi";
|
|
10
|
+
import type { CloudArg, CloudProvider, CloudTarget } from "../types";
|
|
11
|
+
/** AWS-specific options passed through factory functions. */
|
|
12
|
+
export interface IAwsProviderOptions {
|
|
13
|
+
/** fck-nat instance type. Default: "t4g.nano". */
|
|
14
|
+
readonly fckNatInstanceType?: string;
|
|
15
|
+
/** Number of AZs to use. Default: 2. */
|
|
16
|
+
readonly availabilityZoneCount?: number;
|
|
17
|
+
/** Enable EKS Auto Mode. Default: false. */
|
|
18
|
+
readonly autoMode?: boolean;
|
|
19
|
+
/** EKS add-ons to install. Default: vpc-cni, coredns, kube-proxy. */
|
|
20
|
+
readonly addons?: ReadonlyArray<string>;
|
|
21
|
+
/** Endpoint access: "public", "private", or "both". Default: "both". */
|
|
22
|
+
readonly endpointAccess?: "public" | "private" | "both";
|
|
23
|
+
}
|
|
24
|
+
/** Azure-specific options passed through factory functions. */
|
|
25
|
+
export interface IAzureProviderOptions {
|
|
26
|
+
/** Resource group name. Required for Azure. */
|
|
27
|
+
readonly resourceGroupName: pulumi.Input<string>;
|
|
28
|
+
/** Number of subnet pairs. Default: 2. */
|
|
29
|
+
readonly subnetCount?: number;
|
|
30
|
+
/** Enable Azure CNI networking. Default: true. */
|
|
31
|
+
readonly azureCni?: boolean;
|
|
32
|
+
/** Enable virtual node (ACI). Default: false. */
|
|
33
|
+
readonly virtualNodes?: boolean;
|
|
34
|
+
/** Azure AD tenant ID for RBAC integration. */
|
|
35
|
+
readonly aadTenantId?: string;
|
|
36
|
+
/** DNS prefix for the cluster FQDN. Default: cluster name. */
|
|
37
|
+
readonly dnsPrefix?: string;
|
|
38
|
+
/** Azure AD tenant ID for Key Vault. Required for secrets. */
|
|
39
|
+
readonly tenantId?: pulumi.Input<string>;
|
|
40
|
+
/** Object ID for Key Vault access. */
|
|
41
|
+
readonly objectId?: pulumi.Input<string>;
|
|
42
|
+
/** Key Vault SKU. Default: "standard". */
|
|
43
|
+
readonly sku?: "standard" | "premium";
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Provider-specific options keyed by cloud provider.
|
|
47
|
+
*
|
|
48
|
+
* Used in factory functions to pass cloud-specific configuration
|
|
49
|
+
* without changing the unified API surface.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* createNetwork("prod", {
|
|
54
|
+
* cloud: "azure",
|
|
55
|
+
* cidr: "10.1.0.0/16",
|
|
56
|
+
* providerOptions: {
|
|
57
|
+
* azure: { resourceGroupName: "my-rg" },
|
|
58
|
+
* },
|
|
59
|
+
* });
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export interface IProviderOptions {
|
|
63
|
+
readonly aws?: IAwsProviderOptions;
|
|
64
|
+
readonly azure?: IAzureProviderOptions;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Extract the provider string from a CloudArg for single-target dispatch.
|
|
68
|
+
* For arrays, returns the first element's provider.
|
|
69
|
+
*/
|
|
70
|
+
export declare function extractProvider(cloud: CloudProvider | CloudTarget): CloudProvider;
|
|
71
|
+
/**
|
|
72
|
+
* Check if a CloudArg is a multi-cloud array.
|
|
73
|
+
*/
|
|
74
|
+
export declare function isMultiCloud(cloud: CloudArg): cloud is ReadonlyArray<CloudProvider | CloudTarget>;
|
|
75
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/factories/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB;IAClC,kDAAkD;IAClD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,wCAAwC;IACxC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,wEAAwE;IACxE,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;CACzD;AAED,+DAA+D;AAC/D,MAAM,WAAW,qBAAqB;IACpC,+CAA+C;IAC/C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACjD,0CAA0C;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,iDAAiD;IACjD,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,+CAA+C;IAC/C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,0CAA0C;IAC1C,QAAQ,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,GAAG,aAAa,CAGjF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,IAAI,aAAa,CAAC,aAAa,GAAG,WAAW,CAAC,CAEjG"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Factory types for cloud-agnostic resource creation.
|
|
4
|
+
*
|
|
5
|
+
* Defines provider-specific options that can be passed through
|
|
6
|
+
* the unified factory functions via the `providerOptions` field.
|
|
7
|
+
*
|
|
8
|
+
* @module factories/types
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.extractProvider = extractProvider;
|
|
12
|
+
exports.isMultiCloud = isMultiCloud;
|
|
13
|
+
/**
|
|
14
|
+
* Extract the provider string from a CloudArg for single-target dispatch.
|
|
15
|
+
* For arrays, returns the first element's provider.
|
|
16
|
+
*/
|
|
17
|
+
function extractProvider(cloud) {
|
|
18
|
+
if (typeof cloud === "string")
|
|
19
|
+
return cloud;
|
|
20
|
+
return cloud.provider;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Check if a CloudArg is a multi-cloud array.
|
|
24
|
+
*/
|
|
25
|
+
function isMultiCloud(cloud) {
|
|
26
|
+
return Array.isArray(cloud);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/factories/types.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAmEH,0CAGC;AAKD,oCAEC;AAdD;;;GAGG;AACH,SAAgB,eAAe,CAAC,KAAkC;IAChE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,KAAK,CAAC,QAAQ,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,KAAe;IAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global Load Balancer implementation.
|
|
3
|
+
*
|
|
4
|
+
* Routes traffic across multiple clusters using DNS-based health checks.
|
|
5
|
+
* Currently supports Route53 as the DNS provider. Azure Traffic Manager
|
|
6
|
+
* and Cloudflare can be added as future providers.
|
|
7
|
+
*
|
|
8
|
+
* @module global-lb/glb
|
|
9
|
+
*/
|
|
10
|
+
import type { IGlobalLoadBalancer, IGlobalLoadBalancerConfig } from "./interfaces";
|
|
11
|
+
/**
|
|
12
|
+
* Create a Global Load Balancer across multiple clusters.
|
|
13
|
+
*
|
|
14
|
+
* Uses DNS-based routing with health checks to distribute traffic.
|
|
15
|
+
* Supports active-active, active-passive, and geo-routing strategies.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const glb = createGlobalLoadBalancer("prod", {
|
|
20
|
+
* strategy: "active-active",
|
|
21
|
+
* clusters: [awsCluster, azureCluster],
|
|
22
|
+
* domain: "app.example.com",
|
|
23
|
+
* healthCheck: { path: "/health", port: 443, protocol: "HTTPS" },
|
|
24
|
+
* dnsProvider: "route53",
|
|
25
|
+
* });
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function createGlobalLoadBalancer(name: string, config: IGlobalLoadBalancerConfig): IGlobalLoadBalancer;
|
|
29
|
+
//# sourceMappingURL=glb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glb.d.ts","sourceRoot":"","sources":["../../../src/global-lb/glb.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EAE1B,MAAM,cAAc,CAAC;AAEtB;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,yBAAyB,GAChC,mBAAmB,CASrB"}
|