@reyemtech/nimbus 0.1.0 → 1.0.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.
Files changed (260) hide show
  1. package/README.md +71 -311
  2. package/dist/cjs/aws/dns.d.ts.map +1 -1
  3. package/dist/cjs/aws/dns.js +3 -1
  4. package/dist/cjs/aws/dns.js.map +1 -1
  5. package/dist/cjs/aws/index.d.ts +1 -0
  6. package/dist/cjs/aws/index.d.ts.map +1 -1
  7. package/dist/cjs/aws/index.js +3 -1
  8. package/dist/cjs/aws/index.js.map +1 -1
  9. package/dist/cjs/aws/network.d.ts.map +1 -1
  10. package/dist/cjs/aws/network.js +3 -1
  11. package/dist/cjs/aws/network.js.map +1 -1
  12. package/dist/cjs/aws/state.d.ts +32 -0
  13. package/dist/cjs/aws/state.d.ts.map +1 -0
  14. package/dist/cjs/aws/state.js +209 -0
  15. package/dist/cjs/aws/state.js.map +1 -0
  16. package/dist/cjs/azure/cluster.d.ts.map +1 -1
  17. package/dist/cjs/azure/cluster.js +15 -5
  18. package/dist/cjs/azure/cluster.js.map +1 -1
  19. package/dist/cjs/azure/dns.d.ts.map +1 -1
  20. package/dist/cjs/azure/dns.js +3 -1
  21. package/dist/cjs/azure/dns.js.map +1 -1
  22. package/dist/cjs/azure/index.d.ts +1 -0
  23. package/dist/cjs/azure/index.d.ts.map +1 -1
  24. package/dist/cjs/azure/index.js +3 -1
  25. package/dist/cjs/azure/index.js.map +1 -1
  26. package/dist/cjs/azure/network.d.ts.map +1 -1
  27. package/dist/cjs/azure/network.js +9 -3
  28. package/dist/cjs/azure/network.js.map +1 -1
  29. package/dist/cjs/azure/secrets.d.ts.map +1 -1
  30. package/dist/cjs/azure/secrets.js +6 -2
  31. package/dist/cjs/azure/secrets.js.map +1 -1
  32. package/dist/cjs/azure/state.d.ts +30 -0
  33. package/dist/cjs/azure/state.d.ts.map +1 -0
  34. package/dist/cjs/azure/state.js +115 -0
  35. package/dist/cjs/azure/state.js.map +1 -0
  36. package/dist/cjs/cache/interfaces.d.ts +12 -0
  37. package/dist/cjs/cache/interfaces.d.ts.map +1 -1
  38. package/dist/cjs/cli/templates.d.ts +67 -0
  39. package/dist/cjs/cli/templates.d.ts.map +1 -0
  40. package/dist/cjs/cli/templates.js +752 -0
  41. package/dist/cjs/cli/templates.js.map +1 -0
  42. package/dist/cjs/cli.d.ts +15 -0
  43. package/dist/cjs/cli.d.ts.map +1 -0
  44. package/dist/cjs/cli.js +209 -0
  45. package/dist/cjs/cli.js.map +1 -0
  46. package/dist/cjs/cluster/interfaces.d.ts +28 -0
  47. package/dist/cjs/cluster/interfaces.d.ts.map +1 -1
  48. package/dist/cjs/database/interfaces.d.ts +15 -0
  49. package/dist/cjs/database/interfaces.d.ts.map +1 -1
  50. package/dist/cjs/dns/interfaces.d.ts +11 -0
  51. package/dist/cjs/dns/interfaces.d.ts.map +1 -1
  52. package/dist/cjs/factories/cluster.d.ts +4 -3
  53. package/dist/cjs/factories/cluster.d.ts.map +1 -1
  54. package/dist/cjs/factories/cluster.js +46 -11
  55. package/dist/cjs/factories/cluster.js.map +1 -1
  56. package/dist/cjs/factories/dns.d.ts +3 -2
  57. package/dist/cjs/factories/dns.d.ts.map +1 -1
  58. package/dist/cjs/factories/dns.js +44 -9
  59. package/dist/cjs/factories/dns.js.map +1 -1
  60. package/dist/cjs/factories/index.d.ts +1 -0
  61. package/dist/cjs/factories/index.d.ts.map +1 -1
  62. package/dist/cjs/factories/index.js +3 -1
  63. package/dist/cjs/factories/index.js.map +1 -1
  64. package/dist/cjs/factories/network.d.ts +4 -3
  65. package/dist/cjs/factories/network.d.ts.map +1 -1
  66. package/dist/cjs/factories/network.js +46 -11
  67. package/dist/cjs/factories/network.js.map +1 -1
  68. package/dist/cjs/factories/secrets.d.ts +4 -3
  69. package/dist/cjs/factories/secrets.d.ts.map +1 -1
  70. package/dist/cjs/factories/secrets.js +45 -10
  71. package/dist/cjs/factories/secrets.js.map +1 -1
  72. package/dist/cjs/factories/state.d.ts +33 -0
  73. package/dist/cjs/factories/state.d.ts.map +1 -0
  74. package/dist/cjs/factories/state.js +96 -0
  75. package/dist/cjs/factories/state.js.map +1 -0
  76. package/dist/cjs/factories/types.d.ts +22 -0
  77. package/dist/cjs/factories/types.d.ts.map +1 -1
  78. package/dist/cjs/factories/types.js +18 -0
  79. package/dist/cjs/factories/types.js.map +1 -1
  80. package/dist/cjs/global-lb/glb.d.ts.map +1 -1
  81. package/dist/cjs/global-lb/glb.js +23 -9
  82. package/dist/cjs/global-lb/glb.js.map +1 -1
  83. package/dist/cjs/index.d.ts +2 -3
  84. package/dist/cjs/index.d.ts.map +1 -1
  85. package/dist/cjs/index.js +2 -13
  86. package/dist/cjs/index.js.map +1 -1
  87. package/dist/cjs/network/cidr.d.ts +34 -0
  88. package/dist/cjs/network/cidr.d.ts.map +1 -1
  89. package/dist/cjs/network/cidr.js +34 -0
  90. package/dist/cjs/network/cidr.js.map +1 -1
  91. package/dist/cjs/network/interfaces.d.ts +16 -0
  92. package/dist/cjs/network/interfaces.d.ts.map +1 -1
  93. package/dist/cjs/platform/interfaces.d.ts +1 -1
  94. package/dist/cjs/platform/interfaces.d.ts.map +1 -1
  95. package/dist/cjs/platform/stack.d.ts.map +1 -1
  96. package/dist/cjs/platform/stack.js +6 -1
  97. package/dist/cjs/platform/stack.js.map +1 -1
  98. package/dist/cjs/queue/interfaces.d.ts +8 -0
  99. package/dist/cjs/queue/interfaces.d.ts.map +1 -1
  100. package/dist/cjs/secrets/interfaces.d.ts +5 -0
  101. package/dist/cjs/secrets/interfaces.d.ts.map +1 -1
  102. package/dist/cjs/state/index.d.ts +7 -0
  103. package/dist/cjs/state/index.d.ts.map +1 -0
  104. package/dist/cjs/state/index.js +8 -0
  105. package/dist/cjs/state/index.js.map +1 -0
  106. package/dist/cjs/state/interfaces.d.ts +82 -0
  107. package/dist/cjs/state/interfaces.d.ts.map +1 -0
  108. package/dist/cjs/state/interfaces.js +11 -0
  109. package/dist/cjs/state/interfaces.js.map +1 -0
  110. package/dist/cjs/storage/interfaces.d.ts +17 -0
  111. package/dist/cjs/storage/interfaces.d.ts.map +1 -1
  112. package/dist/cjs/types/cloud-target.d.ts +12 -0
  113. package/dist/cjs/types/cloud-target.d.ts.map +1 -1
  114. package/dist/cjs/types/cloud-target.js +12 -0
  115. package/dist/cjs/types/cloud-target.js.map +1 -1
  116. package/dist/cjs/types/tags.d.ts +16 -0
  117. package/dist/cjs/types/tags.d.ts.map +1 -1
  118. package/dist/cjs/types/tags.js +16 -0
  119. package/dist/cjs/types/tags.js.map +1 -1
  120. package/dist/cjs/types/validation.d.ts.map +1 -1
  121. package/dist/cjs/types/validation.js +14 -11
  122. package/dist/cjs/types/validation.js.map +1 -1
  123. package/dist/cjs/utils/index.d.ts +7 -0
  124. package/dist/cjs/utils/index.d.ts.map +1 -0
  125. package/dist/cjs/utils/index.js +11 -0
  126. package/dist/cjs/utils/index.js.map +1 -0
  127. package/dist/cjs/utils/provider-loader.d.ts +14 -0
  128. package/dist/cjs/utils/provider-loader.d.ts.map +1 -0
  129. package/dist/cjs/utils/provider-loader.js +66 -0
  130. package/dist/cjs/utils/provider-loader.js.map +1 -0
  131. package/dist/esm/aws/dns.d.ts.map +1 -1
  132. package/dist/esm/aws/dns.js +3 -1
  133. package/dist/esm/aws/dns.js.map +1 -1
  134. package/dist/esm/aws/index.d.ts +1 -0
  135. package/dist/esm/aws/index.d.ts.map +1 -1
  136. package/dist/esm/aws/index.js +3 -1
  137. package/dist/esm/aws/index.js.map +1 -1
  138. package/dist/esm/aws/network.d.ts.map +1 -1
  139. package/dist/esm/aws/network.js +3 -1
  140. package/dist/esm/aws/network.js.map +1 -1
  141. package/dist/esm/aws/state.d.ts +32 -0
  142. package/dist/esm/aws/state.d.ts.map +1 -0
  143. package/dist/esm/aws/state.js +209 -0
  144. package/dist/esm/aws/state.js.map +1 -0
  145. package/dist/esm/azure/cluster.d.ts.map +1 -1
  146. package/dist/esm/azure/cluster.js +15 -5
  147. package/dist/esm/azure/cluster.js.map +1 -1
  148. package/dist/esm/azure/dns.d.ts.map +1 -1
  149. package/dist/esm/azure/dns.js +3 -1
  150. package/dist/esm/azure/dns.js.map +1 -1
  151. package/dist/esm/azure/index.d.ts +1 -0
  152. package/dist/esm/azure/index.d.ts.map +1 -1
  153. package/dist/esm/azure/index.js +3 -1
  154. package/dist/esm/azure/index.js.map +1 -1
  155. package/dist/esm/azure/network.d.ts.map +1 -1
  156. package/dist/esm/azure/network.js +9 -3
  157. package/dist/esm/azure/network.js.map +1 -1
  158. package/dist/esm/azure/secrets.d.ts.map +1 -1
  159. package/dist/esm/azure/secrets.js +6 -2
  160. package/dist/esm/azure/secrets.js.map +1 -1
  161. package/dist/esm/azure/state.d.ts +30 -0
  162. package/dist/esm/azure/state.d.ts.map +1 -0
  163. package/dist/esm/azure/state.js +115 -0
  164. package/dist/esm/azure/state.js.map +1 -0
  165. package/dist/esm/cache/interfaces.d.ts +12 -0
  166. package/dist/esm/cache/interfaces.d.ts.map +1 -1
  167. package/dist/esm/cli/templates.d.ts +67 -0
  168. package/dist/esm/cli/templates.d.ts.map +1 -0
  169. package/dist/esm/cli/templates.js +752 -0
  170. package/dist/esm/cli/templates.js.map +1 -0
  171. package/dist/esm/cli.d.ts +15 -0
  172. package/dist/esm/cli.d.ts.map +1 -0
  173. package/dist/esm/cli.js +176 -0
  174. package/dist/esm/cli.js.map +1 -0
  175. package/dist/esm/cluster/interfaces.d.ts +28 -0
  176. package/dist/esm/cluster/interfaces.d.ts.map +1 -1
  177. package/dist/esm/database/interfaces.d.ts +15 -0
  178. package/dist/esm/database/interfaces.d.ts.map +1 -1
  179. package/dist/esm/dns/interfaces.d.ts +11 -0
  180. package/dist/esm/dns/interfaces.d.ts.map +1 -1
  181. package/dist/esm/factories/cluster.d.ts +4 -3
  182. package/dist/esm/factories/cluster.d.ts.map +1 -1
  183. package/dist/esm/factories/cluster.js +13 -11
  184. package/dist/esm/factories/cluster.js.map +1 -1
  185. package/dist/esm/factories/dns.d.ts +3 -2
  186. package/dist/esm/factories/dns.d.ts.map +1 -1
  187. package/dist/esm/factories/dns.js +11 -9
  188. package/dist/esm/factories/dns.js.map +1 -1
  189. package/dist/esm/factories/index.d.ts +1 -0
  190. package/dist/esm/factories/index.d.ts.map +1 -1
  191. package/dist/esm/factories/index.js +3 -1
  192. package/dist/esm/factories/index.js.map +1 -1
  193. package/dist/esm/factories/network.d.ts +4 -3
  194. package/dist/esm/factories/network.d.ts.map +1 -1
  195. package/dist/esm/factories/network.js +13 -11
  196. package/dist/esm/factories/network.js.map +1 -1
  197. package/dist/esm/factories/secrets.d.ts +4 -3
  198. package/dist/esm/factories/secrets.d.ts.map +1 -1
  199. package/dist/esm/factories/secrets.js +12 -10
  200. package/dist/esm/factories/secrets.js.map +1 -1
  201. package/dist/esm/factories/state.d.ts +33 -0
  202. package/dist/esm/factories/state.d.ts.map +1 -0
  203. package/dist/esm/factories/state.js +63 -0
  204. package/dist/esm/factories/state.js.map +1 -0
  205. package/dist/esm/factories/types.d.ts +22 -0
  206. package/dist/esm/factories/types.d.ts.map +1 -1
  207. package/dist/esm/factories/types.js +18 -0
  208. package/dist/esm/factories/types.js.map +1 -1
  209. package/dist/esm/global-lb/glb.d.ts.map +1 -1
  210. package/dist/esm/global-lb/glb.js +23 -9
  211. package/dist/esm/global-lb/glb.js.map +1 -1
  212. package/dist/esm/index.d.ts +2 -3
  213. package/dist/esm/index.d.ts.map +1 -1
  214. package/dist/esm/index.js +2 -13
  215. package/dist/esm/index.js.map +1 -1
  216. package/dist/esm/network/cidr.d.ts +34 -0
  217. package/dist/esm/network/cidr.d.ts.map +1 -1
  218. package/dist/esm/network/cidr.js +34 -0
  219. package/dist/esm/network/cidr.js.map +1 -1
  220. package/dist/esm/network/interfaces.d.ts +16 -0
  221. package/dist/esm/network/interfaces.d.ts.map +1 -1
  222. package/dist/esm/platform/interfaces.d.ts +1 -1
  223. package/dist/esm/platform/interfaces.d.ts.map +1 -1
  224. package/dist/esm/platform/stack.d.ts.map +1 -1
  225. package/dist/esm/platform/stack.js +6 -1
  226. package/dist/esm/platform/stack.js.map +1 -1
  227. package/dist/esm/queue/interfaces.d.ts +8 -0
  228. package/dist/esm/queue/interfaces.d.ts.map +1 -1
  229. package/dist/esm/secrets/interfaces.d.ts +5 -0
  230. package/dist/esm/secrets/interfaces.d.ts.map +1 -1
  231. package/dist/esm/state/index.d.ts +7 -0
  232. package/dist/esm/state/index.d.ts.map +1 -0
  233. package/dist/esm/state/index.js +8 -0
  234. package/dist/esm/state/index.js.map +1 -0
  235. package/dist/esm/state/interfaces.d.ts +82 -0
  236. package/dist/esm/state/interfaces.d.ts.map +1 -0
  237. package/dist/esm/state/interfaces.js +11 -0
  238. package/dist/esm/state/interfaces.js.map +1 -0
  239. package/dist/esm/storage/interfaces.d.ts +17 -0
  240. package/dist/esm/storage/interfaces.d.ts.map +1 -1
  241. package/dist/esm/types/cloud-target.d.ts +12 -0
  242. package/dist/esm/types/cloud-target.d.ts.map +1 -1
  243. package/dist/esm/types/cloud-target.js +12 -0
  244. package/dist/esm/types/cloud-target.js.map +1 -1
  245. package/dist/esm/types/tags.d.ts +16 -0
  246. package/dist/esm/types/tags.d.ts.map +1 -1
  247. package/dist/esm/types/tags.js +16 -0
  248. package/dist/esm/types/tags.js.map +1 -1
  249. package/dist/esm/types/validation.d.ts.map +1 -1
  250. package/dist/esm/types/validation.js +14 -11
  251. package/dist/esm/types/validation.js.map +1 -1
  252. package/dist/esm/utils/index.d.ts +7 -0
  253. package/dist/esm/utils/index.d.ts.map +1 -0
  254. package/dist/esm/utils/index.js +11 -0
  255. package/dist/esm/utils/index.js.map +1 -0
  256. package/dist/esm/utils/provider-loader.d.ts +14 -0
  257. package/dist/esm/utils/provider-loader.d.ts.map +1 -0
  258. package/dist/esm/utils/provider-loader.js +33 -0
  259. package/dist/esm/utils/provider-loader.js.map +1 -0
  260. package/package.json +41 -3
@@ -0,0 +1,82 @@
1
+ /**
2
+ * State backend interfaces for @reyemtech/nimbus.
3
+ *
4
+ * Abstracts Pulumi state storage (S3, Azure Blob) with BCDR features:
5
+ * versioning, encryption, replication, and locking.
6
+ *
7
+ * @module state/interfaces
8
+ */
9
+ import type * as pulumi from "@pulumi/pulumi";
10
+ import type { CloudArg, ResolvedCloudTarget } from "../types";
11
+ /** Supported state backend storage types. */
12
+ export type StateBackendType = "s3" | "azblob" | "gs";
13
+ /** Cross-region replication configuration. */
14
+ export interface IReplicationConfig {
15
+ /** Enable cross-region replication for disaster recovery. */
16
+ readonly enabled: boolean;
17
+ /** Destination region for replication. */
18
+ readonly destinationRegion?: string;
19
+ }
20
+ /** State locking configuration. */
21
+ export interface IStateLockConfig {
22
+ /** Enable state locking. Default: true. */
23
+ readonly enabled?: boolean;
24
+ /** DynamoDB table name for AWS state locking. Auto-generated if not provided. */
25
+ readonly dynamoDbTableName?: string;
26
+ }
27
+ /**
28
+ * State backend configuration input.
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * const config: IStateBackendConfig = {
33
+ * cloud: "aws",
34
+ * versioning: true,
35
+ * encryption: true,
36
+ * locking: { enabled: true },
37
+ * replication: { enabled: true, destinationRegion: "us-west-2" },
38
+ * };
39
+ * ```
40
+ */
41
+ export interface IStateBackendConfig {
42
+ readonly cloud: CloudArg;
43
+ /** Override the auto-detected backend type. */
44
+ readonly backendType?: StateBackendType;
45
+ /** Enable bucket/container versioning. Default: true. */
46
+ readonly versioning?: boolean;
47
+ /** Enable server-side encryption. Default: true. */
48
+ readonly encryption?: boolean;
49
+ /** State locking configuration. Default: enabled. */
50
+ readonly locking?: IStateLockConfig;
51
+ /** Cross-region replication configuration. */
52
+ readonly replication?: IReplicationConfig;
53
+ /** Resource tags. */
54
+ readonly tags?: Readonly<Record<string, string>>;
55
+ }
56
+ /**
57
+ * State backend output — the created state storage resources.
58
+ *
59
+ * Use `backendUrl` to configure Pulumi's backend:
60
+ * ```
61
+ * pulumi login s3://bucket-name
62
+ * pulumi login azblob://container-name
63
+ * ```
64
+ */
65
+ export interface IStateBackend {
66
+ readonly name: string;
67
+ readonly cloud: ResolvedCloudTarget;
68
+ readonly backendType: StateBackendType;
69
+ /** Backend URL for `pulumi login`. e.g., `s3://bucket-name` or `azblob://container-name`. */
70
+ readonly backendUrl: pulumi.Output<string>;
71
+ readonly bucketName: pulumi.Output<string>;
72
+ /** DynamoDB table name for state locking (AWS only). */
73
+ readonly lockTableName?: pulumi.Output<string>;
74
+ /** Storage account name (Azure only). */
75
+ readonly storageAccountName?: pulumi.Output<string>;
76
+ readonly versioning: boolean;
77
+ readonly encryption: boolean;
78
+ readonly replicationEnabled: boolean;
79
+ /** Escape hatch: cloud-native state storage resource. */
80
+ readonly nativeResource: pulumi.Resource;
81
+ }
82
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/state/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,6CAA6C;AAC7C,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC;AAEtD,8CAA8C;AAC9C,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,0CAA0C;IAC1C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,mCAAmC;AACnC,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,iFAAiF;IACjF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,+CAA+C;IAC/C,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IACxC,yDAAyD;IACzD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,qDAAqD;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IACpC,8CAA8C;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAC1C,qBAAqB;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAClD;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACvC,6FAA6F;IAC7F,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3C,wDAAwD;IACxD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,yCAAyC;IACzC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,yDAAyD;IACzD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC1C"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ /**
3
+ * State backend interfaces for @reyemtech/nimbus.
4
+ *
5
+ * Abstracts Pulumi state storage (S3, Azure Blob) with BCDR features:
6
+ * versioning, encryption, replication, and locking.
7
+ *
8
+ * @module state/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/state/interfaces.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG"}
@@ -10,16 +10,24 @@ import type * as pulumi from "@pulumi/pulumi";
10
10
  import type { CloudArg, ResolvedCloudTarget } from "../types";
11
11
  /** Lifecycle rule for object expiration/transition. */
12
12
  export interface ILifecycleRule {
13
+ /** Object key prefix to scope this rule (e.g., "logs/"). Applies to all objects if omitted. */
13
14
  readonly prefix?: string;
15
+ /** Number of days after creation before objects are deleted. */
14
16
  readonly expirationDays?: number;
17
+ /** Number of days after creation before objects are transitioned to another storage class. */
15
18
  readonly transitionDays?: number;
19
+ /** Target storage class for transition (e.g., "GLACIER", "COOL"). */
16
20
  readonly transitionStorageClass?: string;
17
21
  }
18
22
  /** CORS rule for cross-origin access. */
19
23
  export interface ICorsRule {
24
+ /** Allowed origin domains (e.g., ["https://reyem.tech"]). Use ["*"] for any origin. */
20
25
  readonly allowedOrigins: ReadonlyArray<string>;
26
+ /** Allowed HTTP methods (e.g., ["GET", "PUT"]). */
21
27
  readonly allowedMethods: ReadonlyArray<string>;
28
+ /** Allowed request headers. */
22
29
  readonly allowedHeaders?: ReadonlyArray<string>;
30
+ /** Max time in seconds the browser may cache the preflight response. */
23
31
  readonly maxAgeSeconds?: number;
24
32
  }
25
33
  /**
@@ -39,23 +47,32 @@ export interface ICorsRule {
39
47
  * ```
40
48
  */
41
49
  export interface IObjectStorageConfig {
50
+ /** Cloud provider target or multi-cloud array. */
42
51
  readonly cloud: CloudArg;
52
+ /** Enable object versioning on the bucket. */
43
53
  readonly versioning?: boolean;
44
54
  /** Enable server-side encryption. Default: true. */
45
55
  readonly encryption?: boolean;
56
+ /** Lifecycle rules for automatic object expiration or storage class transition. */
46
57
  readonly lifecycleRules?: ReadonlyArray<ILifecycleRule>;
47
58
  /** Allow public access. Default: false. */
48
59
  readonly publicAccess?: boolean;
60
+ /** CORS rules for cross-origin browser access. */
49
61
  readonly corsRules?: ReadonlyArray<ICorsRule>;
62
+ /** Resource tags applied to the bucket. */
50
63
  readonly tags?: Readonly<Record<string, string>>;
51
64
  }
52
65
  /** Object storage output — the created bucket. */
53
66
  export interface IObjectStorage {
67
+ /** Logical name of the storage resource. */
54
68
  readonly name: string;
69
+ /** Resolved cloud target this bucket was provisioned on. */
55
70
  readonly cloud: ResolvedCloudTarget;
71
+ /** Cloud-assigned bucket name. */
56
72
  readonly bucketName: pulumi.Output<string>;
57
73
  /** AWS-specific: bucket ARN. */
58
74
  readonly bucketArn?: pulumi.Output<string>;
75
+ /** Bucket endpoint URL for object access. */
59
76
  readonly endpoint: pulumi.Output<string>;
60
77
  /** Escape hatch: cloud-native bucket resource. */
61
78
  readonly nativeResource: pulumi.Resource;
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/storage/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,uDAAuD;AACvD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CAC1C;AAED,yCAAyC;AACzC,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACxD,2CAA2C;IAC3C,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAC9C,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAClD;AAED,kDAAkD;AAClD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3C,gCAAgC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEzC,kDAAkD;IAClD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC1C"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/storage/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,uDAAuD;AACvD,MAAM,WAAW,cAAc;IAC7B,+FAA+F;IAC/F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,8FAA8F;IAC9F,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,qEAAqE;IACrE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CAC1C;AAED,yCAAyC;AACzC,MAAM,WAAW,SAAS;IACxB,uFAAuF;IACvF,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/C,mDAAmD;IACnD,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/C,+BAA+B;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,wEAAwE;IACxE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,oBAAoB;IACnC,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,8CAA8C;IAC9C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,mFAAmF;IACnF,QAAQ,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACxD,2CAA2C;IAC3C,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,kDAAkD;IAClD,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAC9C,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAClD;AAED,kDAAkD;AAClD,MAAM,WAAW,cAAc;IAC7B,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,kCAAkC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3C,gCAAgC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3C,6CAA6C;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEzC,kDAAkD;IAClD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC1C"}
@@ -62,6 +62,12 @@ export declare const CLOUD_PROVIDERS: ReadonlyArray<CloudProvider>;
62
62
  *
63
63
  * @param value - Value to check
64
64
  * @returns True if value is a valid CloudProvider
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * isCloudProvider("aws"); // true
69
+ * isCloudProvider("digitalocean"); // false
70
+ * ```
65
71
  */
66
72
  export declare function isCloudProvider(value: unknown): value is CloudProvider;
67
73
  /**
@@ -69,6 +75,12 @@ export declare function isCloudProvider(value: unknown): value is CloudProvider;
69
75
  *
70
76
  * @param value - Value to check
71
77
  * @returns True if value is a CloudTarget
78
+ *
79
+ * @example
80
+ * ```typescript
81
+ * isCloudTarget({ provider: "aws", region: "us-east-1" }); // true
82
+ * isCloudTarget("aws"); // false
83
+ * ```
72
84
  */
73
85
  export declare function isCloudTarget(value: unknown): value is CloudTarget;
74
86
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"cloud-target.d.ts","sourceRoot":"","sources":["../../../src/types/cloud-target.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,iCAAiC;AACjC,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,WAAW,CAAC;AAElE;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,WAAW,GAAG,aAAa,CAAC,aAAa,GAAG,WAAW,CAAC,CAAC;AAEhG;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,0EAA0E;AAC1E,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAK1D,CAAC;AAEX,uDAAuD;AACvD,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,aAAa,CAK/C,CAAC;AAEX;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAOlE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,GAAG,mBAAmB,CAAC;AAC5F,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,CAAC,aAAa,GAAG,WAAW,CAAC,GAChD,aAAa,CAAC,mBAAmB,CAAC,CAAC;AACtC,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,QAAQ,GACd,mBAAmB,GAAG,aAAa,CAAC,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"cloud-target.d.ts","sourceRoot":"","sources":["../../../src/types/cloud-target.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,iCAAiC;AACjC,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,WAAW,CAAC;AAElE;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,WAAW,GAAG,aAAa,CAAC,aAAa,GAAG,WAAW,CAAC,CAAC;AAEhG;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,0EAA0E;AAC1E,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAK1D,CAAC;AAEX,uDAAuD;AACvD,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,aAAa,CAK/C,CAAC;AAEX;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAOlE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,GAAG,mBAAmB,CAAC;AAC5F,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,CAAC,aAAa,GAAG,WAAW,CAAC,GAChD,aAAa,CAAC,mBAAmB,CAAC,CAAC;AACtC,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,QAAQ,GACd,mBAAmB,GAAG,aAAa,CAAC,mBAAmB,CAAC,CAAC"}
@@ -33,6 +33,12 @@ exports.CLOUD_PROVIDERS = [
33
33
  *
34
34
  * @param value - Value to check
35
35
  * @returns True if value is a valid CloudProvider
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * isCloudProvider("aws"); // true
40
+ * isCloudProvider("digitalocean"); // false
41
+ * ```
36
42
  */
37
43
  function isCloudProvider(value) {
38
44
  return typeof value === "string" && exports.CLOUD_PROVIDERS.includes(value);
@@ -42,6 +48,12 @@ function isCloudProvider(value) {
42
48
  *
43
49
  * @param value - Value to check
44
50
  * @returns True if value is a CloudTarget
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * isCloudTarget({ provider: "aws", region: "us-east-1" }); // true
55
+ * isCloudTarget("aws"); // false
56
+ * ```
45
57
  */
46
58
  function isCloudTarget(value) {
47
59
  return (typeof value === "object" &&
@@ -1 +1 @@
1
- {"version":3,"file":"cloud-target.js","sourceRoot":"","sources":["../../../src/types/cloud-target.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AA4EH,0CAEC;AAQD,sCAOC;AAqBD,gDAOC;AAvHD,qCAAgD;AAoDhD,0EAA0E;AAC7D,QAAA,eAAe,GAA4C;IACtE,GAAG,EAAE,WAAW;IAChB,KAAK,EAAE,QAAQ;IACf,GAAG,EAAE,aAAa;IAClB,SAAS,EAAE,iBAAiB;CACpB,CAAC;AAEX,uDAAuD;AAC1C,QAAA,eAAe,GAAiC;IAC3D,KAAK;IACL,OAAO;IACP,KAAK;IACL,WAAW;CACH,CAAC;AAEX;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,uBAAe,CAAC,QAAQ,CAAC,KAAsB,CAAC,CAAC;AACvF,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,KAAc;IAC1C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,UAAU,IAAI,KAAK;QACnB,eAAe,CAAE,KAAqB,CAAC,QAAQ,CAAC,CACjD,CAAC;AACJ,CAAC;AAqBD,SAAgB,kBAAkB,CAChC,KAAe;IAEf,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,aAAa,CAAC,KAAoC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,aAAa,CAAC,KAAkC;IACvD,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,uBAAe,CAAC,KAAK,CAAC;SAC/B,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,uBAAe,CAAC,KAAK,CAAC,QAAQ,CAAC;SACxD,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,6BAAoB,CAC5B,2BAA2B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,wDAAwD,CACzG,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"cloud-target.js","sourceRoot":"","sources":["../../../src/types/cloud-target.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAkFH,0CAEC;AAcD,sCAOC;AAqBD,gDAOC;AAnID,qCAAgD;AAoDhD,0EAA0E;AAC7D,QAAA,eAAe,GAA4C;IACtE,GAAG,EAAE,WAAW;IAChB,KAAK,EAAE,QAAQ;IACf,GAAG,EAAE,aAAa;IAClB,SAAS,EAAE,iBAAiB;CACpB,CAAC;AAEX,uDAAuD;AAC1C,QAAA,eAAe,GAAiC;IAC3D,KAAK;IACL,OAAO;IACP,KAAK;IACL,WAAW;CACH,CAAC;AAEX;;;;;;;;;;;GAWG;AACH,SAAgB,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,uBAAe,CAAC,QAAQ,CAAC,KAAsB,CAAC,CAAC;AACvF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,aAAa,CAAC,KAAc;IAC1C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,UAAU,IAAI,KAAK;QACnB,eAAe,CAAE,KAAqB,CAAC,QAAQ,CAAC,CACjD,CAAC;AACJ,CAAC;AAqBD,SAAgB,kBAAkB,CAChC,KAAe;IAEf,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,aAAa,CAAC,KAAoC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,aAAa,CAAC,KAAkC;IACvD,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,uBAAe,CAAC,KAAK,CAAC;SAC/B,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,uBAAe,CAAC,KAAK,CAAC,QAAQ,CAAC;SACxD,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,6BAAoB,CAC5B,2BAA2B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,wDAAwD,CACzG,CAAC;AACJ,CAAC"}
@@ -39,6 +39,13 @@ export declare function normalizeTags(tags: Readonly<Record<string, string>>, pr
39
39
  *
40
40
  * @param value - Label string to validate
41
41
  * @returns True if the label is valid for GCP
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * isValidGcpLabel("environment"); // true
46
+ * isValidGcpLabel("My-Label"); // false (uppercase)
47
+ * isValidGcpLabel(""); // false (empty)
48
+ * ```
42
49
  */
43
50
  export declare function isValidGcpLabel(value: string): boolean;
44
51
  /**
@@ -48,6 +55,15 @@ export declare function isValidGcpLabel(value: string): boolean;
48
55
  * @param required - Required tag values
49
56
  * @param userTags - User-provided additional tags
50
57
  * @returns Merged tag set
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * mergeWithRequiredTags(
62
+ * { environment: "prod", client: "acme", costCenter: "eng" },
63
+ * { team: "platform" }
64
+ * );
65
+ * // { team: "platform", environment: "prod", client: "acme", costCenter: "eng", managedBy: "nimbus" }
66
+ * ```
51
67
  */
52
68
  export declare function mergeWithRequiredTags(required: Omit<IRequiredTags, "managedBy">, userTags?: Readonly<Record<string, string>>): Record<string, string>;
53
69
  //# sourceMappingURL=tags.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../../src/types/tags.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,+CAA+C;AAC/C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;CAC9B;AAQD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,QAAQ,EAAE,aAAa,GACtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxB;AAuCD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,EAC1C,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxB"}
1
+ {"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../../src/types/tags.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,+CAA+C;AAC/C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;CAC9B;AAQD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,QAAQ,EAAE,aAAa,GACtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxB;AAuCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,EAC1C,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxB"}
@@ -86,6 +86,13 @@ function normalizeGcpLabelValue(value) {
86
86
  *
87
87
  * @param value - Label string to validate
88
88
  * @returns True if the label is valid for GCP
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * isValidGcpLabel("environment"); // true
93
+ * isValidGcpLabel("My-Label"); // false (uppercase)
94
+ * isValidGcpLabel(""); // false (empty)
95
+ * ```
89
96
  */
90
97
  function isValidGcpLabel(value) {
91
98
  return value.length > 0 && value.length <= GCP_LABEL_MAX_LENGTH && GCP_LABEL_REGEX.test(value);
@@ -97,6 +104,15 @@ function isValidGcpLabel(value) {
97
104
  * @param required - Required tag values
98
105
  * @param userTags - User-provided additional tags
99
106
  * @returns Merged tag set
107
+ *
108
+ * @example
109
+ * ```typescript
110
+ * mergeWithRequiredTags(
111
+ * { environment: "prod", client: "acme", costCenter: "eng" },
112
+ * { team: "platform" }
113
+ * );
114
+ * // { team: "platform", environment: "prod", client: "acme", costCenter: "eng", managedBy: "nimbus" }
115
+ * ```
100
116
  */
101
117
  function mergeWithRequiredTags(required, userTags) {
102
118
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"tags.js","sourceRoot":"","sources":["../../../src/types/tags.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAqCH,sCAqBC;AA6CD,0CAEC;AAUD,sDAWC;AAlHD,8CAA8C;AAC9C,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC,+FAA+F;AAC/F,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAE7C;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,aAAa,CAC3B,IAAsC,EACtC,QAAuB;IAEvB,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,aAAa,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,eAAe,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,aAAa,IAAI,UAAU,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CACV,sCAAsC,GAAG,oBAAoB,aAAa,mCAAmC,CAC9G,CAAC;YACF,SAAS;QACX,CAAC;QACD,UAAU,CAAC,aAAa,CAAC,GAAG,eAAe,CAAC;IAC9C,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,KAAa;IACzC,IAAI,KAAK,GAAG,KAAK;SACd,WAAW,EAAE;SACb,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;SACzB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAErB,IAAI,KAAK,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;QACxC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAAC,KAAa;IAC3C,IAAI,KAAK,GAAG,KAAK;SACd,WAAW,EAAE;SACb,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAErB,IAAI,KAAK,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;QACxC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,KAAa;IAC3C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,oBAAoB,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjG,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,qBAAqB,CACnC,QAA0C,EAC1C,QAA2C;IAE3C,OAAO;QACL,GAAG,QAAQ;QACX,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,SAAS,EAAE,QAAQ;KACpB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tags.js","sourceRoot":"","sources":["../../../src/types/tags.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAqCH,sCAqBC;AAoDD,0CAEC;AAmBD,sDAWC;AAlID,8CAA8C;AAC9C,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC,+FAA+F;AAC/F,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAE7C;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,aAAa,CAC3B,IAAsC,EACtC,QAAuB;IAEvB,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,aAAa,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,eAAe,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,aAAa,IAAI,UAAU,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CACV,sCAAsC,GAAG,oBAAoB,aAAa,mCAAmC,CAC9G,CAAC;YACF,SAAS;QACX,CAAC;QACD,UAAU,CAAC,aAAa,CAAC,GAAG,eAAe,CAAC;IAC9C,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,KAAa;IACzC,IAAI,KAAK,GAAG,KAAK;SACd,WAAW,EAAE;SACb,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;SACzB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAErB,IAAI,KAAK,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;QACxC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAAC,KAAa;IAC3C,IAAI,KAAK,GAAG,KAAK;SACd,WAAW,EAAE;SACb,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAErB,IAAI,KAAK,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;QACxC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,eAAe,CAAC,KAAa;IAC3C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,oBAAoB,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjG,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,qBAAqB,CACnC,QAA0C,EAC1C,QAA2C;IAE3C,OAAO;QACL,GAAG,QAAQ;QACX,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,SAAS,EAAE,QAAQ;KACpB,CAAC;AACJ,CAAC"}
@@ -1 +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"}
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;AASzE,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,CAiD7F;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAC3C,YAAY,EAAE,MAAM,GACnB,IAAI,CAKN"}
@@ -16,6 +16,10 @@ exports.validateMultiCloud = validateMultiCloud;
16
16
  exports.validateResourceName = validateResourceName;
17
17
  exports.assertValidMultiCloud = assertValidMultiCloud;
18
18
  const errors_1 = require("./errors");
19
+ /** Maximum resource name length for AWS, Azure, and GCP. */
20
+ const RESOURCE_NAME_MAX_LENGTH = 63;
21
+ /** Maximum resource name length for Rackspace. */
22
+ const RACKSPACE_NAME_MAX_LENGTH = 255;
19
23
  /** Features that may not be available on all providers. */
20
24
  const PROVIDER_FEATURES = {
21
25
  aws: new Set([
@@ -108,24 +112,21 @@ function validateResourceName(name, provider) {
108
112
  const warnings = [];
109
113
  switch (provider) {
110
114
  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.`);
115
+ if (name.length > RESOURCE_NAME_MAX_LENGTH) {
116
+ errors.push(`Resource name "${name}" exceeds AWS ${RESOURCE_NAME_MAX_LENGTH}-character limit.`);
114
117
  }
115
118
  break;
116
119
  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
+ if (name.length > RESOURCE_NAME_MAX_LENGTH) {
121
+ errors.push(`Resource name "${name}" exceeds Azure ${RESOURCE_NAME_MAX_LENGTH}-character limit.`);
120
122
  }
121
123
  if (/[^a-zA-Z0-9-]/.test(name)) {
122
124
  warnings.push(`Resource name "${name}" contains characters not allowed in Azure (only alphanumeric + hyphens).`);
123
125
  }
124
126
  break;
125
127
  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.`);
128
+ if (name.length > RESOURCE_NAME_MAX_LENGTH) {
129
+ errors.push(`Resource name "${name}" exceeds GCP ${RESOURCE_NAME_MAX_LENGTH}-character limit.`);
129
130
  }
130
131
  if (name !== name.toLowerCase()) {
131
132
  warnings.push(`Resource name "${name}" will be lowercased for GCP.`);
@@ -135,10 +136,12 @@ function validateResourceName(name, provider) {
135
136
  }
136
137
  break;
137
138
  case "rackspace":
138
- if (name.length > 255) {
139
- errors.push(`Resource name "${name}" exceeds Rackspace 255-character limit.`);
139
+ if (name.length > RACKSPACE_NAME_MAX_LENGTH) {
140
+ errors.push(`Resource name "${name}" exceeds Rackspace ${RACKSPACE_NAME_MAX_LENGTH}-character limit.`);
140
141
  }
141
142
  break;
143
+ default:
144
+ (0, errors_1.assertNever)(provider);
142
145
  }
143
146
  return { valid: errors.length === 0, errors, warnings };
144
147
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/types/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/types/validation.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AA+CH,0CAKC;AASD,gDAEC;AAcD,gDA6BC;AASD,oDAiDC;AASD,sDAQC;AAlLD,qCAAsF;AAEtF,4DAA4D;AAC5D,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAEpC,kDAAkD;AAClD,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAStC,2DAA2D;AAC3D,MAAM,iBAAiB,GAAyD;IAC9E,GAAG,EAAE,IAAI,GAAG,CAAC;QACX,eAAe;QACf,SAAS;QACT,aAAa;QACb,gBAAgB;QAChB,SAAS;QACT,iBAAiB;KAClB,CAAC;IACF,KAAK,EAAE,IAAI,GAAG,CAAC;QACb,eAAe;QACf,WAAW;QACX,aAAa;QACb,gBAAgB;QAChB,WAAW;QACX,WAAW;KACZ,CAAC;IACF,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAC3F,SAAS,EAAE,IAAI,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC;CACvC,CAAC;AAEF;;;;;;GAMG;AACH,SAAgB,eAAe,CAAC,OAAe,EAAE,QAAuB;IACtE,MAAM,SAAS,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,gCAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAAC,OAAe,EAAE,QAAuB;IACzE,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,kBAAkB,CAChC,OAA2C,EAC3C,YAAoB;IAEpB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,8BAA8B;IAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,qBAAqB,GAAG,oDAAoD,CAAC,CAAC;QAC5F,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IAED,wCAAwC;IACxC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAClC,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM;QACN,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAAC,IAAY,EAAE,QAAuB;IACxE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,KAAK;YACR,IAAI,IAAI,CAAC,MAAM,GAAG,wBAAwB,EAAE,CAAC;gBAC3C,MAAM,CAAC,IAAI,CACT,kBAAkB,IAAI,iBAAiB,wBAAwB,mBAAmB,CACnF,CAAC;YACJ,CAAC;YACD,MAAM;QACR,KAAK,OAAO;YACV,IAAI,IAAI,CAAC,MAAM,GAAG,wBAAwB,EAAE,CAAC;gBAC3C,MAAM,CAAC,IAAI,CACT,kBAAkB,IAAI,mBAAmB,wBAAwB,mBAAmB,CACrF,CAAC;YACJ,CAAC;YACD,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,QAAQ,CAAC,IAAI,CACX,kBAAkB,IAAI,2EAA2E,CAClG,CAAC;YACJ,CAAC;YACD,MAAM;QACR,KAAK,KAAK;YACR,IAAI,IAAI,CAAC,MAAM,GAAG,wBAAwB,EAAE,CAAC;gBAC3C,MAAM,CAAC,IAAI,CACT,kBAAkB,IAAI,iBAAiB,wBAAwB,mBAAmB,CACnF,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBAChC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,IAAI,+BAA+B,CAAC,CAAC;YACvE,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,qCAAqC,CAAC,CAAC;YAC3E,CAAC;YACD,MAAM;QACR,KAAK,WAAW;YACd,IAAI,IAAI,CAAC,MAAM,GAAG,yBAAyB,EAAE,CAAC;gBAC5C,MAAM,CAAC,IAAI,CACT,kBAAkB,IAAI,uBAAuB,yBAAyB,mBAAmB,CAC1F,CAAC;YACJ,CAAC;YACD,MAAM;QACR;YACE,IAAA,oBAAW,EAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC1D,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,qBAAqB,CACnC,OAA2C,EAC3C,YAAoB;IAEpB,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACzD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,6BAAoB,CAAC,mCAAmC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChG,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Utility functions for @reyemtech/nimbus.
3
+ *
4
+ * @module utils
5
+ */
6
+ export { loadProvider } from "./provider-loader";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ /**
3
+ * Utility functions for @reyemtech/nimbus.
4
+ *
5
+ * @module utils
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.loadProvider = void 0;
9
+ var provider_loader_1 = require("./provider-loader");
10
+ Object.defineProperty(exports, "loadProvider", { enumerable: true, get: function () { return provider_loader_1.loadProvider; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,qDAAiD;AAAxC,+GAAA,YAAY,OAAA"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Dynamic provider loader with helpful error messages.
3
+ *
4
+ * @module utils/provider-loader
5
+ */
6
+ /**
7
+ * Dynamically import a provider module, throwing a helpful error if missing.
8
+ *
9
+ * @param provider - The cloud provider name (aws, azure, etc.)
10
+ * @param modulePath - The module path to import
11
+ * @returns The imported module
12
+ */
13
+ export declare function loadProvider<T>(provider: string, modulePath: string): Promise<T>;
14
+ //# sourceMappingURL=provider-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-loader.d.ts","sourceRoot":"","sources":["../../../src/utils/provider-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAYtF"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ /**
3
+ * Dynamic provider loader with helpful error messages.
4
+ *
5
+ * @module utils/provider-loader
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.loadProvider = loadProvider;
9
+ const PROVIDER_PACKAGES = {
10
+ aws: ["@pulumi/aws"],
11
+ azure: ["@pulumi/azure-native"],
12
+ gcp: ["@pulumi/gcp"],
13
+ kubernetes: ["@pulumi/kubernetes"],
14
+ };
15
+ /**
16
+ * Dynamically import a provider module, throwing a helpful error if missing.
17
+ *
18
+ * @param provider - The cloud provider name (aws, azure, etc.)
19
+ * @param modulePath - The module path to import
20
+ * @returns The imported module
21
+ */
22
+ async function loadProvider(provider, modulePath) {
23
+ try {
24
+ return (await import(modulePath));
25
+ }
26
+ catch (cause) {
27
+ const packages = PROVIDER_PACKAGES[provider] ?? [modulePath];
28
+ throw new Error(`Cloud provider "${provider}" requires: ${packages.join(", ")}\n` +
29
+ `Run: npm install ${packages.join(" ")}\n` +
30
+ `Or: npx @reyemtech/nimbus install ${provider}`, { cause });
31
+ }
32
+ }
33
+ //# sourceMappingURL=provider-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-loader.js","sourceRoot":"","sources":["../../../src/utils/provider-loader.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAgBH,oCAYC;AA1BD,MAAM,iBAAiB,GAAoD;IACzE,GAAG,EAAE,CAAC,aAAa,CAAC;IACpB,KAAK,EAAE,CAAC,sBAAsB,CAAC;IAC/B,GAAG,EAAE,CAAC,aAAa,CAAC;IACpB,UAAU,EAAE,CAAC,oBAAoB,CAAC;CACnC,CAAC;AAEF;;;;;;GAMG;AACI,KAAK,UAAU,YAAY,CAAI,QAAgB,EAAE,UAAkB;IACxE,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAM,CAAC;IACzC,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7D,MAAM,IAAI,KAAK,CACb,mBAAmB,QAAQ,eAAe,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAC/D,oBAAoB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;YAC1C,sCAAsC,QAAQ,EAAE,EAClD,EAAE,KAAK,EAAE,CACV,CAAC;IACJ,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reyemtech/nimbus",
3
- "version": "0.1.0",
3
+ "version": "1.0.0",
4
4
  "description": "Cloud-agnostic infrastructure abstractions for Pulumi",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -15,12 +15,36 @@
15
15
  "types": "./dist/cjs/index.d.ts",
16
16
  "default": "./dist/cjs/index.js"
17
17
  }
18
+ },
19
+ "./aws": {
20
+ "import": {
21
+ "types": "./dist/esm/aws/index.d.ts",
22
+ "default": "./dist/esm/aws/index.js"
23
+ },
24
+ "require": {
25
+ "types": "./dist/cjs/aws/index.d.ts",
26
+ "default": "./dist/cjs/aws/index.js"
27
+ }
28
+ },
29
+ "./azure": {
30
+ "import": {
31
+ "types": "./dist/esm/azure/index.d.ts",
32
+ "default": "./dist/esm/azure/index.js"
33
+ },
34
+ "require": {
35
+ "types": "./dist/cjs/azure/index.d.ts",
36
+ "default": "./dist/cjs/azure/index.js"
37
+ }
18
38
  }
19
39
  },
40
+ "bin": {
41
+ "nimbus": "./dist/cjs/cli.js"
42
+ },
20
43
  "files": [
21
44
  "dist",
22
45
  "README.md",
23
- "LICENSE"
46
+ "LICENSE",
47
+ "bin"
24
48
  ],
25
49
  "scripts": {
26
50
  "build": "npm run build:esm && npm run build:cjs",
@@ -62,7 +86,21 @@
62
86
  "node": ">=20"
63
87
  },
64
88
  "peerDependencies": {
65
- "@pulumi/pulumi": ">=3.0.0"
89
+ "@pulumi/pulumi": ">=3.0.0",
90
+ "@pulumi/aws": ">=6.0.0",
91
+ "@pulumi/azure-native": ">=2.0.0",
92
+ "@pulumi/kubernetes": ">=4.0.0"
93
+ },
94
+ "peerDependenciesMeta": {
95
+ "@pulumi/aws": {
96
+ "optional": true
97
+ },
98
+ "@pulumi/azure-native": {
99
+ "optional": true
100
+ },
101
+ "@pulumi/kubernetes": {
102
+ "optional": true
103
+ }
66
104
  },
67
105
  "devDependencies": {
68
106
  "@eslint/js": "^9.0.0",