@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,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-cloud validation utilities.
|
|
3
|
+
*
|
|
4
|
+
* Validates multi-cloud configurations for compatibility:
|
|
5
|
+
* - Region naming consistency
|
|
6
|
+
* - Resource naming conflicts
|
|
7
|
+
* - Feature availability per provider
|
|
8
|
+
*
|
|
9
|
+
* @module types/validation
|
|
10
|
+
*/
|
|
11
|
+
import type { CloudProvider, ResolvedCloudTarget } from "./cloud-target";
|
|
12
|
+
/** Validation result with warnings and errors. */
|
|
13
|
+
export interface IValidationResult {
|
|
14
|
+
readonly valid: boolean;
|
|
15
|
+
readonly errors: ReadonlyArray<string>;
|
|
16
|
+
readonly warnings: ReadonlyArray<string>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Validate that a feature is supported on a given provider.
|
|
20
|
+
*
|
|
21
|
+
* @param feature - Feature name to check
|
|
22
|
+
* @param provider - Cloud provider
|
|
23
|
+
* @throws {UnsupportedFeatureError} If the feature is not available
|
|
24
|
+
*/
|
|
25
|
+
export declare function validateFeature(feature: string, provider: CloudProvider): void;
|
|
26
|
+
/**
|
|
27
|
+
* Check if a feature is available on a provider (non-throwing).
|
|
28
|
+
*
|
|
29
|
+
* @param feature - Feature name
|
|
30
|
+
* @param provider - Cloud provider
|
|
31
|
+
* @returns True if the feature is supported
|
|
32
|
+
*/
|
|
33
|
+
export declare function isFeatureSupported(feature: string, provider: CloudProvider): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Validate a multi-cloud deployment configuration.
|
|
36
|
+
*
|
|
37
|
+
* Checks for:
|
|
38
|
+
* - Duplicate provider+region combinations
|
|
39
|
+
* - Resource name length constraints per provider
|
|
40
|
+
* - Region availability
|
|
41
|
+
*
|
|
42
|
+
* @param targets - Array of resolved cloud targets
|
|
43
|
+
* @param resourceName - Name that will be used for resources
|
|
44
|
+
* @returns Validation result with any errors/warnings
|
|
45
|
+
*/
|
|
46
|
+
export declare function validateMultiCloud(targets: ReadonlyArray<ResolvedCloudTarget>, resourceName: string): IValidationResult;
|
|
47
|
+
/**
|
|
48
|
+
* Validate a resource name against provider-specific constraints.
|
|
49
|
+
*
|
|
50
|
+
* @param name - Resource name to validate
|
|
51
|
+
* @param provider - Target cloud provider
|
|
52
|
+
* @returns Validation result
|
|
53
|
+
*/
|
|
54
|
+
export declare function validateResourceName(name: string, provider: CloudProvider): IValidationResult;
|
|
55
|
+
/**
|
|
56
|
+
* Assert that a multi-cloud configuration is valid, throwing on errors.
|
|
57
|
+
*
|
|
58
|
+
* @param targets - Resolved cloud targets
|
|
59
|
+
* @param resourceName - Resource name
|
|
60
|
+
* @throws {CloudValidationError} If validation fails
|
|
61
|
+
*/
|
|
62
|
+
export declare function assertValidMultiCloud(targets: ReadonlyArray<ResolvedCloudTarget>, resourceName: string): void;
|
|
63
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/types/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGzE,kDAAkD;AAClD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC1C;AAwBD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAK9E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO,CAEpF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAC3C,YAAY,EAAE,MAAM,GACnB,iBAAiB,CA0BnB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,iBAAiB,CA0C7F;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAC3C,YAAY,EAAE,MAAM,GACnB,IAAI,CAKN"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cross-cloud validation utilities.
|
|
4
|
+
*
|
|
5
|
+
* Validates multi-cloud configurations for compatibility:
|
|
6
|
+
* - Region naming consistency
|
|
7
|
+
* - Resource naming conflicts
|
|
8
|
+
* - Feature availability per provider
|
|
9
|
+
*
|
|
10
|
+
* @module types/validation
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.validateFeature = validateFeature;
|
|
14
|
+
exports.isFeatureSupported = isFeatureSupported;
|
|
15
|
+
exports.validateMultiCloud = validateMultiCloud;
|
|
16
|
+
exports.validateResourceName = validateResourceName;
|
|
17
|
+
exports.assertValidMultiCloud = assertValidMultiCloud;
|
|
18
|
+
const errors_1 = require("./errors");
|
|
19
|
+
/** Features that may not be available on all providers. */
|
|
20
|
+
const PROVIDER_FEATURES = {
|
|
21
|
+
aws: new Set([
|
|
22
|
+
"eks-auto-mode",
|
|
23
|
+
"fck-nat",
|
|
24
|
+
"managed-nat",
|
|
25
|
+
"spot-instances",
|
|
26
|
+
"route53",
|
|
27
|
+
"secrets-manager",
|
|
28
|
+
]),
|
|
29
|
+
azure: new Set([
|
|
30
|
+
"virtual-nodes",
|
|
31
|
+
"azure-cni",
|
|
32
|
+
"managed-nat",
|
|
33
|
+
"spot-instances",
|
|
34
|
+
"azure-dns",
|
|
35
|
+
"key-vault",
|
|
36
|
+
]),
|
|
37
|
+
gcp: new Set(["autopilot", "managed-nat", "spot-instances", "cloud-dns", "secret-manager"]),
|
|
38
|
+
rackspace: new Set(["spot-instances"]),
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Validate that a feature is supported on a given provider.
|
|
42
|
+
*
|
|
43
|
+
* @param feature - Feature name to check
|
|
44
|
+
* @param provider - Cloud provider
|
|
45
|
+
* @throws {UnsupportedFeatureError} If the feature is not available
|
|
46
|
+
*/
|
|
47
|
+
function validateFeature(feature, provider) {
|
|
48
|
+
const supported = PROVIDER_FEATURES[provider];
|
|
49
|
+
if (!supported.has(feature)) {
|
|
50
|
+
throw new errors_1.UnsupportedFeatureError(feature, provider);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Check if a feature is available on a provider (non-throwing).
|
|
55
|
+
*
|
|
56
|
+
* @param feature - Feature name
|
|
57
|
+
* @param provider - Cloud provider
|
|
58
|
+
* @returns True if the feature is supported
|
|
59
|
+
*/
|
|
60
|
+
function isFeatureSupported(feature, provider) {
|
|
61
|
+
return PROVIDER_FEATURES[provider].has(feature);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Validate a multi-cloud deployment configuration.
|
|
65
|
+
*
|
|
66
|
+
* Checks for:
|
|
67
|
+
* - Duplicate provider+region combinations
|
|
68
|
+
* - Resource name length constraints per provider
|
|
69
|
+
* - Region availability
|
|
70
|
+
*
|
|
71
|
+
* @param targets - Array of resolved cloud targets
|
|
72
|
+
* @param resourceName - Name that will be used for resources
|
|
73
|
+
* @returns Validation result with any errors/warnings
|
|
74
|
+
*/
|
|
75
|
+
function validateMultiCloud(targets, resourceName) {
|
|
76
|
+
const errors = [];
|
|
77
|
+
const warnings = [];
|
|
78
|
+
// Check for duplicate targets
|
|
79
|
+
const seen = new Set();
|
|
80
|
+
for (const target of targets) {
|
|
81
|
+
const key = `${target.provider}:${target.region}`;
|
|
82
|
+
if (seen.has(key)) {
|
|
83
|
+
errors.push(`Duplicate target: ${key}. Each provider+region combination must be unique.`);
|
|
84
|
+
}
|
|
85
|
+
seen.add(key);
|
|
86
|
+
}
|
|
87
|
+
// Validate resource naming per provider
|
|
88
|
+
for (const target of targets) {
|
|
89
|
+
const nameIssues = validateResourceName(resourceName, target.provider);
|
|
90
|
+
errors.push(...nameIssues.errors);
|
|
91
|
+
warnings.push(...nameIssues.warnings);
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
valid: errors.length === 0,
|
|
95
|
+
errors,
|
|
96
|
+
warnings,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Validate a resource name against provider-specific constraints.
|
|
101
|
+
*
|
|
102
|
+
* @param name - Resource name to validate
|
|
103
|
+
* @param provider - Target cloud provider
|
|
104
|
+
* @returns Validation result
|
|
105
|
+
*/
|
|
106
|
+
function validateResourceName(name, provider) {
|
|
107
|
+
const errors = [];
|
|
108
|
+
const warnings = [];
|
|
109
|
+
switch (provider) {
|
|
110
|
+
case "aws":
|
|
111
|
+
// AWS names are generally flexible but some have 63-char limits
|
|
112
|
+
if (name.length > 63) {
|
|
113
|
+
errors.push(`Resource name "${name}" exceeds AWS 63-character limit.`);
|
|
114
|
+
}
|
|
115
|
+
break;
|
|
116
|
+
case "azure":
|
|
117
|
+
// Azure resource names: 1-63 chars, alphanumeric + hyphens
|
|
118
|
+
if (name.length > 63) {
|
|
119
|
+
errors.push(`Resource name "${name}" exceeds Azure 63-character limit.`);
|
|
120
|
+
}
|
|
121
|
+
if (/[^a-zA-Z0-9-]/.test(name)) {
|
|
122
|
+
warnings.push(`Resource name "${name}" contains characters not allowed in Azure (only alphanumeric + hyphens).`);
|
|
123
|
+
}
|
|
124
|
+
break;
|
|
125
|
+
case "gcp":
|
|
126
|
+
// GCP: 1-63 chars, lowercase + hyphens, must start with letter
|
|
127
|
+
if (name.length > 63) {
|
|
128
|
+
errors.push(`Resource name "${name}" exceeds GCP 63-character limit.`);
|
|
129
|
+
}
|
|
130
|
+
if (name !== name.toLowerCase()) {
|
|
131
|
+
warnings.push(`Resource name "${name}" will be lowercased for GCP.`);
|
|
132
|
+
}
|
|
133
|
+
if (!/^[a-z]/.test(name.toLowerCase())) {
|
|
134
|
+
errors.push(`Resource name "${name}" must start with a letter for GCP.`);
|
|
135
|
+
}
|
|
136
|
+
break;
|
|
137
|
+
case "rackspace":
|
|
138
|
+
if (name.length > 255) {
|
|
139
|
+
errors.push(`Resource name "${name}" exceeds Rackspace 255-character limit.`);
|
|
140
|
+
}
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
return { valid: errors.length === 0, errors, warnings };
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Assert that a multi-cloud configuration is valid, throwing on errors.
|
|
147
|
+
*
|
|
148
|
+
* @param targets - Resolved cloud targets
|
|
149
|
+
* @param resourceName - Resource name
|
|
150
|
+
* @throws {CloudValidationError} If validation fails
|
|
151
|
+
*/
|
|
152
|
+
function assertValidMultiCloud(targets, resourceName) {
|
|
153
|
+
const result = validateMultiCloud(targets, resourceName);
|
|
154
|
+
if (!result.valid) {
|
|
155
|
+
throw new errors_1.CloudValidationError(`Multi-cloud validation failed:\n${result.errors.join("\n")}`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/types/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@reyemtech/nimbus",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Cloud-agnostic infrastructure abstractions for Pulumi",
|
|
5
|
+
"main": "./dist/cjs/index.js",
|
|
6
|
+
"module": "./dist/esm/index.js",
|
|
7
|
+
"types": "./dist/esm/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": {
|
|
11
|
+
"types": "./dist/esm/index.d.ts",
|
|
12
|
+
"default": "./dist/esm/index.js"
|
|
13
|
+
},
|
|
14
|
+
"require": {
|
|
15
|
+
"types": "./dist/cjs/index.d.ts",
|
|
16
|
+
"default": "./dist/cjs/index.js"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist",
|
|
22
|
+
"README.md",
|
|
23
|
+
"LICENSE"
|
|
24
|
+
],
|
|
25
|
+
"scripts": {
|
|
26
|
+
"build": "npm run build:esm && npm run build:cjs",
|
|
27
|
+
"build:esm": "tsc -p tsconfig.esm.json",
|
|
28
|
+
"build:cjs": "tsc -p tsconfig.cjs.json",
|
|
29
|
+
"lint": "eslint src/ tests/",
|
|
30
|
+
"lint:fix": "eslint src/ tests/ --fix",
|
|
31
|
+
"format": "prettier --write 'src/**/*.ts' 'tests/**/*.ts'",
|
|
32
|
+
"format:check": "prettier --check 'src/**/*.ts' 'tests/**/*.ts'",
|
|
33
|
+
"typecheck": "tsc --noEmit",
|
|
34
|
+
"test": "vitest run",
|
|
35
|
+
"test:watch": "vitest",
|
|
36
|
+
"test:coverage": "vitest run --coverage",
|
|
37
|
+
"docs:api": "typedoc",
|
|
38
|
+
"clean": "rm -rf dist",
|
|
39
|
+
"prepublishOnly": "npm run clean && npm run build"
|
|
40
|
+
},
|
|
41
|
+
"keywords": [
|
|
42
|
+
"pulumi",
|
|
43
|
+
"cloud",
|
|
44
|
+
"aws",
|
|
45
|
+
"azure",
|
|
46
|
+
"gcp",
|
|
47
|
+
"infrastructure",
|
|
48
|
+
"iac",
|
|
49
|
+
"multi-cloud"
|
|
50
|
+
],
|
|
51
|
+
"author": "ReyemTech <mario@reyem.tech>",
|
|
52
|
+
"license": "MIT",
|
|
53
|
+
"repository": {
|
|
54
|
+
"type": "git",
|
|
55
|
+
"url": "https://github.com/reyemtech/nimbus.git"
|
|
56
|
+
},
|
|
57
|
+
"publishConfig": {
|
|
58
|
+
"access": "public",
|
|
59
|
+
"registry": "https://registry.npmjs.org/"
|
|
60
|
+
},
|
|
61
|
+
"engines": {
|
|
62
|
+
"node": ">=20"
|
|
63
|
+
},
|
|
64
|
+
"peerDependencies": {
|
|
65
|
+
"@pulumi/pulumi": ">=3.0.0"
|
|
66
|
+
},
|
|
67
|
+
"devDependencies": {
|
|
68
|
+
"@eslint/js": "^9.0.0",
|
|
69
|
+
"@pulumi/aws": "^7.19.0",
|
|
70
|
+
"@pulumi/awsx": "^3.1.0",
|
|
71
|
+
"@pulumi/azure-native": "^3.13.0",
|
|
72
|
+
"@pulumi/eks": "^4.2.0",
|
|
73
|
+
"@pulumi/kubernetes": "^4.25.0",
|
|
74
|
+
"@pulumi/pulumi": "^3.142.0",
|
|
75
|
+
"@semantic-release/changelog": "^6.0.3",
|
|
76
|
+
"@semantic-release/git": "^10.0.1",
|
|
77
|
+
"@types/node": "^22.0.0",
|
|
78
|
+
"@vitest/coverage-v8": "^3.0.0",
|
|
79
|
+
"eslint": "^9.0.0",
|
|
80
|
+
"eslint-config-prettier": "^10.0.0",
|
|
81
|
+
"prettier": "^3.4.0",
|
|
82
|
+
"semantic-release": "^25.0.3",
|
|
83
|
+
"typedoc": "^0.28.16",
|
|
84
|
+
"typescript": "^5.7.0",
|
|
85
|
+
"typescript-eslint": "^8.0.0",
|
|
86
|
+
"vitest": "^3.0.0"
|
|
87
|
+
}
|
|
88
|
+
}
|