@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
@@ -9,8 +9,6 @@
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.createDns = createDns;
11
11
  const types_1 = require("../types");
12
- const aws_1 = require("../aws");
13
- const azure_1 = require("../azure");
14
12
  const types_2 = require("./types");
15
13
  /**
16
14
  * Create a DNS zone for one or more cloud providers.
@@ -18,34 +16,38 @@ const types_2 = require("./types");
18
16
  * @param name - Resource name prefix
19
17
  * @param config - DNS configuration with cloud target and optional providerOptions
20
18
  * @returns Single IDns for a single cloud target, array for multi-cloud
19
+ * @throws {UnsupportedFeatureError} If the cloud provider is not supported or Azure options are missing
21
20
  *
22
21
  * @example
23
22
  * ```typescript
24
- * const dns = createDns("prod", {
23
+ * const dns = await createDns("prod", {
25
24
  * cloud: "aws",
26
25
  * zoneName: "example.com",
27
26
  * });
28
27
  * ```
29
28
  */
30
- function createDns(name, config) {
29
+ async function createDns(name, config) {
31
30
  if (!(0, types_2.isMultiCloud)(config.cloud)) {
32
31
  const target = (0, types_1.resolveCloudTarget)(config.cloud);
33
32
  return dispatchDns(name, config, target, config.providerOptions);
34
33
  }
35
34
  const targets = (0, types_1.resolveCloudTarget)(config.cloud);
36
- return targets.map((target) => dispatchDns(`${name}-${target.provider}`, config, target, config.providerOptions));
35
+ return Promise.all(targets.map((target) => dispatchDns(`${name}-${target.provider}`, config, target, config.providerOptions)));
37
36
  }
38
- function dispatchDns(name, config, target, opts) {
37
+ async function dispatchDns(name, config, target, opts) {
39
38
  const targetConfig = { ...config, cloud: { provider: target.provider, region: target.region } };
40
39
  switch (target.provider) {
41
- case "aws":
42
- return (0, aws_1.createRoute53Dns)(name, targetConfig);
40
+ case "aws": {
41
+ const { createRoute53Dns } = await import("../aws/index.js");
42
+ return createRoute53Dns(name, targetConfig);
43
+ }
43
44
  case "azure": {
44
45
  const azureOpts = opts?.azure;
45
46
  if (!azureOpts) {
46
47
  throw new types_1.UnsupportedFeatureError("Azure requires providerOptions.azure.resourceGroupName", "azure");
47
48
  }
48
- return (0, azure_1.createAzureDns)(name, targetConfig, {
49
+ const { createAzureDns } = await import("../azure/index.js");
50
+ return createAzureDns(name, targetConfig, {
49
51
  resourceGroupName: azureOpts.resourceGroupName,
50
52
  });
51
53
  }
@@ -1 +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"}
1
+ {"version":3,"file":"dns.js","sourceRoot":"","sources":["../../../src/factories/dns.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AA6BH,8BAYC;AAtCD,oCAAuE;AAGvE,mCAAuC;AAOvC;;;;;;;;;;;;;;;GAeG;AACI,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,MAAwB;IACpE,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,CAChB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACrB,WAAW,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAClF,CACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,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,CAAC,CAAC,CAAC;YACX,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC7D,OAAO,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC9C,CAAC;QACD,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,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC7D,OAAO,cAAc,CAAC,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"}
@@ -12,4 +12,5 @@ export { createNetwork, type ICreateNetworkConfig } from "./network";
12
12
  export { createCluster, type ICreateClusterConfig } from "./cluster";
13
13
  export { createDns, type ICreateDnsConfig } from "./dns";
14
14
  export { createSecrets, type ICreateSecretsConfig } from "./secrets";
15
+ export { createStateBackend, type ICreateStateBackendConfig } from "./state";
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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"}
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;AACrE,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,SAAS,CAAC"}
@@ -8,7 +8,7 @@
8
8
  * @module factories
9
9
  */
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.createSecrets = exports.createDns = exports.createCluster = exports.createNetwork = exports.isMultiCloud = exports.extractProvider = void 0;
11
+ exports.createStateBackend = exports.createSecrets = exports.createDns = exports.createCluster = exports.createNetwork = exports.isMultiCloud = exports.extractProvider = void 0;
12
12
  var types_1 = require("./types");
13
13
  Object.defineProperty(exports, "extractProvider", { enumerable: true, get: function () { return types_1.extractProvider; } });
14
14
  Object.defineProperty(exports, "isMultiCloud", { enumerable: true, get: function () { return types_1.isMultiCloud; } });
@@ -20,4 +20,6 @@ var dns_1 = require("./dns");
20
20
  Object.defineProperty(exports, "createDns", { enumerable: true, get: function () { return dns_1.createDns; } });
21
21
  var secrets_1 = require("./secrets");
22
22
  Object.defineProperty(exports, "createSecrets", { enumerable: true, get: function () { return secrets_1.createSecrets; } });
23
+ var state_1 = require("./state");
24
+ Object.defineProperty(exports, "createStateBackend", { enumerable: true, get: function () { return state_1.createStateBackend; } });
23
25
  //# sourceMappingURL=index.js.map
@@ -1 +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"}
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;AACtB,iCAA6E;AAApE,2GAAA,kBAAkB,OAAA"}
@@ -18,23 +18,24 @@ export type ICreateNetworkConfig = INetworkConfig & {
18
18
  * @param name - Resource name prefix
19
19
  * @param config - Network configuration with cloud target and optional providerOptions
20
20
  * @returns Single INetwork for a single cloud target, array for multi-cloud
21
+ * @throws {UnsupportedFeatureError} If the cloud provider is not supported or Azure options are missing
21
22
  *
22
23
  * @example
23
24
  * ```typescript
24
25
  * // Single cloud
25
- * const network = createNetwork("prod", {
26
+ * const network = await createNetwork("prod", {
26
27
  * cloud: "aws",
27
28
  * cidr: "10.0.0.0/16",
28
29
  * natStrategy: "fck-nat",
29
30
  * });
30
31
  *
31
32
  * // Multi-cloud
32
- * const networks = createNetwork("prod", {
33
+ * const networks = await createNetwork("prod", {
33
34
  * cloud: ["aws", "azure"],
34
35
  * cidr: "10.0.0.0/16",
35
36
  * providerOptions: { azure: { resourceGroupName: "my-rg" } },
36
37
  * });
37
38
  * ```
38
39
  */
39
- export declare function createNetwork(name: string, config: ICreateNetworkConfig): INetwork | INetwork[];
40
+ export declare function createNetwork(name: string, config: ICreateNetworkConfig): Promise<INetwork | INetwork[]>;
40
41
  //# sourceMappingURL=network.d.ts.map
@@ -1 +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"}
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;AAI3D,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;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,CAoBhC"}
@@ -11,8 +11,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
11
11
  exports.createNetwork = createNetwork;
12
12
  const network_1 = require("../network");
13
13
  const types_1 = require("../types");
14
- const aws_1 = require("../aws");
15
- const azure_1 = require("../azure");
16
14
  const types_2 = require("./types");
17
15
  /**
18
16
  * Create a network (VPC/VNet) for one or more cloud providers.
@@ -20,47 +18,51 @@ const types_2 = require("./types");
20
18
  * @param name - Resource name prefix
21
19
  * @param config - Network configuration with cloud target and optional providerOptions
22
20
  * @returns Single INetwork for a single cloud target, array for multi-cloud
21
+ * @throws {UnsupportedFeatureError} If the cloud provider is not supported or Azure options are missing
23
22
  *
24
23
  * @example
25
24
  * ```typescript
26
25
  * // Single cloud
27
- * const network = createNetwork("prod", {
26
+ * const network = await createNetwork("prod", {
28
27
  * cloud: "aws",
29
28
  * cidr: "10.0.0.0/16",
30
29
  * natStrategy: "fck-nat",
31
30
  * });
32
31
  *
33
32
  * // Multi-cloud
34
- * const networks = createNetwork("prod", {
33
+ * const networks = await createNetwork("prod", {
35
34
  * cloud: ["aws", "azure"],
36
35
  * cidr: "10.0.0.0/16",
37
36
  * providerOptions: { azure: { resourceGroupName: "my-rg" } },
38
37
  * });
39
38
  * ```
40
39
  */
41
- function createNetwork(name, config) {
40
+ async function createNetwork(name, config) {
42
41
  if (!(0, types_2.isMultiCloud)(config.cloud)) {
43
42
  const target = (0, types_1.resolveCloudTarget)(config.cloud);
44
43
  return dispatchNetwork(name, config, target, config.providerOptions);
45
44
  }
46
45
  const targets = (0, types_1.resolveCloudTarget)(config.cloud);
47
46
  const cidrs = resolveMultiCloudCidrs(config.cidr, targets.length);
48
- return targets.map((target, i) => {
47
+ return Promise.all(targets.map((target, i) => {
49
48
  const perTargetConfig = { ...config, cloud: config.cloud, cidr: cidrs[i] };
50
49
  return dispatchNetwork(`${name}-${target.provider}`, perTargetConfig, target, config.providerOptions);
51
- });
50
+ }));
52
51
  }
53
- function dispatchNetwork(name, config, target, opts) {
52
+ async function dispatchNetwork(name, config, target, opts) {
54
53
  const targetConfig = { ...config, cloud: { provider: target.provider, region: target.region } };
55
54
  switch (target.provider) {
56
- case "aws":
57
- return (0, aws_1.createAwsNetwork)(name, targetConfig, opts?.aws);
55
+ case "aws": {
56
+ const { createAwsNetwork } = await import("../aws/index.js");
57
+ return createAwsNetwork(name, targetConfig, opts?.aws);
58
+ }
58
59
  case "azure": {
59
60
  const azureOpts = opts?.azure;
60
61
  if (!azureOpts) {
61
62
  throw new types_1.UnsupportedFeatureError("Azure requires providerOptions.azure.resourceGroupName", "azure");
62
63
  }
63
- return (0, azure_1.createAzureNetwork)(name, targetConfig, {
64
+ const { createAzureNetwork } = await import("../azure/index.js");
65
+ return createAzureNetwork(name, targetConfig, {
64
66
  resourceGroupName: azureOpts.resourceGroupName,
65
67
  subnetCount: azureOpts.subnetCount,
66
68
  });
@@ -1 +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"}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/factories/network.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAuCH,sCAuBC;AA3DD,wCAAwD;AACxD,oCAAuE;AAGvE,mCAAuC;AAOvC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACI,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,MAA4B;IAE5B,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,CAChB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACxB,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,CACH,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,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,CAAC,CAAC,CAAC;YACX,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC7D,OAAO,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;QACD,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,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACjE,OAAO,kBAAkB,CAAC,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"}
@@ -17,15 +17,16 @@ export type ICreateSecretsConfig = ISecretsConfig & {
17
17
  * @param name - Resource name prefix
18
18
  * @param config - Secrets configuration with cloud target and optional providerOptions
19
19
  * @returns Single ISecrets for a single cloud target, array for multi-cloud
20
+ * @throws {UnsupportedFeatureError} If the cloud provider is not supported or Azure options are missing
20
21
  *
21
22
  * @example
22
23
  * ```typescript
23
- * const secrets = createSecrets("prod", {
24
+ * const secrets = await createSecrets("prod", {
24
25
  * cloud: "aws",
25
26
  * backend: "aws-secrets-manager",
26
27
  * });
27
28
  *
28
- * const secrets = createSecrets("prod", {
29
+ * const secrets = await createSecrets("prod", {
29
30
  * cloud: "azure",
30
31
  * backend: "azure-key-vault",
31
32
  * providerOptions: {
@@ -34,5 +35,5 @@ export type ICreateSecretsConfig = ISecretsConfig & {
34
35
  * });
35
36
  * ```
36
37
  */
37
- export declare function createSecrets(name: string, config: ICreateSecretsConfig): ISecrets | ISecrets[];
38
+ export declare function createSecrets(name: string, config: ICreateSecretsConfig): Promise<ISecrets | ISecrets[]>;
38
39
  //# sourceMappingURL=secrets.d.ts.map
@@ -1 +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"}
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;AAG3D,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,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,CAYhC"}
@@ -9,8 +9,6 @@
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.createSecrets = createSecrets;
11
11
  const types_1 = require("../types");
12
- const aws_1 = require("../aws");
13
- const azure_1 = require("../azure");
14
12
  const types_2 = require("./types");
15
13
  /**
16
14
  * Create a secrets store for one or more cloud providers.
@@ -18,15 +16,16 @@ const types_2 = require("./types");
18
16
  * @param name - Resource name prefix
19
17
  * @param config - Secrets configuration with cloud target and optional providerOptions
20
18
  * @returns Single ISecrets for a single cloud target, array for multi-cloud
19
+ * @throws {UnsupportedFeatureError} If the cloud provider is not supported or Azure options are missing
21
20
  *
22
21
  * @example
23
22
  * ```typescript
24
- * const secrets = createSecrets("prod", {
23
+ * const secrets = await createSecrets("prod", {
25
24
  * cloud: "aws",
26
25
  * backend: "aws-secrets-manager",
27
26
  * });
28
27
  *
29
- * const secrets = createSecrets("prod", {
28
+ * const secrets = await createSecrets("prod", {
30
29
  * cloud: "azure",
31
30
  * backend: "azure-key-vault",
32
31
  * providerOptions: {
@@ -35,25 +34,28 @@ const types_2 = require("./types");
35
34
  * });
36
35
  * ```
37
36
  */
38
- function createSecrets(name, config) {
37
+ async function createSecrets(name, config) {
39
38
  if (!(0, types_2.isMultiCloud)(config.cloud)) {
40
39
  const target = (0, types_1.resolveCloudTarget)(config.cloud);
41
40
  return dispatchSecrets(name, config, target, config.providerOptions);
42
41
  }
43
42
  const targets = (0, types_1.resolveCloudTarget)(config.cloud);
44
- return targets.map((target) => dispatchSecrets(`${name}-${target.provider}`, config, target, config.providerOptions));
43
+ return Promise.all(targets.map((target) => dispatchSecrets(`${name}-${target.provider}`, config, target, config.providerOptions)));
45
44
  }
46
- function dispatchSecrets(name, config, target, opts) {
45
+ async function dispatchSecrets(name, config, target, opts) {
47
46
  const targetConfig = { ...config, cloud: { provider: target.provider, region: target.region } };
48
47
  switch (target.provider) {
49
- case "aws":
50
- return (0, aws_1.createAwsSecrets)(name, targetConfig);
48
+ case "aws": {
49
+ const { createAwsSecrets } = await import("../aws/index.js");
50
+ return createAwsSecrets(name, targetConfig);
51
+ }
51
52
  case "azure": {
52
53
  const azureOpts = opts?.azure;
53
54
  if (!azureOpts?.tenantId) {
54
55
  throw new types_1.UnsupportedFeatureError("Azure requires providerOptions.azure with resourceGroupName and tenantId", "azure");
55
56
  }
56
- return (0, azure_1.createAzureSecrets)(name, targetConfig, {
57
+ const { createAzureSecrets } = await import("../azure/index.js");
58
+ return createAzureSecrets(name, targetConfig, {
57
59
  resourceGroupName: azureOpts.resourceGroupName,
58
60
  tenantId: azureOpts.tenantId,
59
61
  objectId: azureOpts.objectId,
@@ -1 +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"}
1
+ {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../../src/factories/secrets.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAqCH,sCAeC;AAjDD,oCAAuE;AAGvE,mCAAuC;AAOvC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACI,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,MAA4B;IAE5B,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,CAChB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACrB,eAAe,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CACtF,CACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,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,CAAC,CAAC,CAAC;YACX,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC7D,OAAO,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC9C,CAAC;QACD,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,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACjE,OAAO,kBAAkB,CAAC,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,33 @@
1
+ /**
2
+ * State backend factory — creates S3/Azure Blob state storage via a single cloud-agnostic function.
3
+ *
4
+ * Dispatches to AWS or Azure based on the `cloud` parameter.
5
+ *
6
+ * @module factories/state
7
+ */
8
+ import type { IStateBackend, IStateBackendConfig } from "../state";
9
+ import type { IProviderOptions } from "./types";
10
+ /** Config for the createStateBackend factory. */
11
+ export type ICreateStateBackendConfig = IStateBackendConfig & {
12
+ readonly providerOptions?: IProviderOptions;
13
+ };
14
+ /**
15
+ * Create a state backend (S3/Azure Blob) for one or more cloud providers.
16
+ *
17
+ * @param name - Resource name prefix
18
+ * @param config - State backend configuration with cloud target and optional providerOptions
19
+ * @returns Single IStateBackend for a single cloud target, array for multi-cloud
20
+ * @throws {UnsupportedFeatureError} If the cloud provider is not supported or Azure options are missing
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const state = await createStateBackend("prod", {
25
+ * cloud: "aws",
26
+ * versioning: true,
27
+ * encryption: true,
28
+ * locking: { enabled: true },
29
+ * });
30
+ * ```
31
+ */
32
+ export declare function createStateBackend(name: string, config: ICreateStateBackendConfig): Promise<IStateBackend | IStateBackend[]>;
33
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/factories/state.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,iDAAiD;AACjD,MAAM,MAAM,yBAAyB,GAAG,mBAAmB,GAAG;IAC5D,QAAQ,CAAC,eAAe,CAAC,EAAE,gBAAgB,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,aAAa,GAAG,aAAa,EAAE,CAAC,CAY1C"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ /**
3
+ * State backend factory — creates S3/Azure Blob state storage via a single cloud-agnostic function.
4
+ *
5
+ * Dispatches to AWS or Azure based on the `cloud` parameter.
6
+ *
7
+ * @module factories/state
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.createStateBackend = createStateBackend;
11
+ const types_1 = require("../types");
12
+ const types_2 = require("./types");
13
+ /**
14
+ * Create a state backend (S3/Azure Blob) for one or more cloud providers.
15
+ *
16
+ * @param name - Resource name prefix
17
+ * @param config - State backend configuration with cloud target and optional providerOptions
18
+ * @returns Single IStateBackend for a single cloud target, array for multi-cloud
19
+ * @throws {UnsupportedFeatureError} If the cloud provider is not supported or Azure options are missing
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const state = await createStateBackend("prod", {
24
+ * cloud: "aws",
25
+ * versioning: true,
26
+ * encryption: true,
27
+ * locking: { enabled: true },
28
+ * });
29
+ * ```
30
+ */
31
+ async function createStateBackend(name, config) {
32
+ if (!(0, types_2.isMultiCloud)(config.cloud)) {
33
+ const target = (0, types_1.resolveCloudTarget)(config.cloud);
34
+ return dispatchStateBackend(name, config, target, config.providerOptions);
35
+ }
36
+ const targets = (0, types_1.resolveCloudTarget)(config.cloud);
37
+ return Promise.all(targets.map((target) => dispatchStateBackend(`${name}-${target.provider}`, config, target, config.providerOptions)));
38
+ }
39
+ async function dispatchStateBackend(name, config, target, opts) {
40
+ const targetConfig = { ...config, cloud: { provider: target.provider, region: target.region } };
41
+ switch (target.provider) {
42
+ case "aws": {
43
+ const { createAwsStateBackend } = await import("../aws/index.js");
44
+ return createAwsStateBackend(name, targetConfig, {
45
+ kmsKeyArn: opts?.aws?.stateKmsKeyArn,
46
+ forceDestroy: opts?.aws?.stateForceDestroy,
47
+ });
48
+ }
49
+ case "azure": {
50
+ const azureOpts = opts?.azure;
51
+ if (!azureOpts) {
52
+ throw new types_1.UnsupportedFeatureError("Azure requires providerOptions.azure.resourceGroupName", "azure");
53
+ }
54
+ const { createAzureStateBackend } = await import("../azure/index.js");
55
+ return createAzureStateBackend(name, targetConfig, {
56
+ resourceGroupName: azureOpts.resourceGroupName,
57
+ });
58
+ }
59
+ default:
60
+ throw new types_1.UnsupportedFeatureError("state-backend", target.provider);
61
+ }
62
+ }
63
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/factories/state.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AA+BH,gDAeC;AA3CD,oCAAuE;AAGvE,mCAAuC;AAOvC;;;;;;;;;;;;;;;;;GAiBG;AACI,KAAK,UAAU,kBAAkB,CACtC,IAAY,EACZ,MAAiC;IAEjC,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,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,GAAG,CAChB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACrB,oBAAoB,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAC3F,CACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,IAAY,EACZ,MAA2B,EAC3B,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,CAAC,CAAC,CAAC;YACX,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAClE,OAAO,qBAAqB,CAAC,IAAI,EAAE,YAAY,EAAE;gBAC/C,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc;gBACpC,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,iBAAiB;aAC3C,CAAC,CAAC;QACL,CAAC;QACD,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,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACtE,OAAO,uBAAuB,CAAC,IAAI,EAAE,YAAY,EAAE;gBACjD,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;aAC/C,CAAC,CAAC;QACL,CAAC;QACD;YACE,MAAM,IAAI,+BAAuB,CAAC,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxE,CAAC;AACH,CAAC"}
@@ -20,6 +20,10 @@ export interface IAwsProviderOptions {
20
20
  readonly addons?: ReadonlyArray<string>;
21
21
  /** Endpoint access: "public", "private", or "both". Default: "both". */
22
22
  readonly endpointAccess?: "public" | "private" | "both";
23
+ /** KMS key ARN for state backend encryption. Uses AES256 if not provided. */
24
+ readonly stateKmsKeyArn?: string;
25
+ /** Allow Pulumi to destroy the state bucket (for dev/test). Default: false. */
26
+ readonly stateForceDestroy?: boolean;
23
27
  }
24
28
  /** Azure-specific options passed through factory functions. */
25
29
  export interface IAzureProviderOptions {
@@ -66,10 +70,28 @@ export interface IProviderOptions {
66
70
  /**
67
71
  * Extract the provider string from a CloudArg for single-target dispatch.
68
72
  * For arrays, returns the first element's provider.
73
+ *
74
+ * @param cloud - A cloud provider string or CloudTarget object
75
+ * @returns The cloud provider identifier
76
+ *
77
+ * @example
78
+ * ```typescript
79
+ * extractProvider("aws"); // "aws"
80
+ * extractProvider({ provider: "azure", region: "eastus" }); // "azure"
81
+ * ```
69
82
  */
70
83
  export declare function extractProvider(cloud: CloudProvider | CloudTarget): CloudProvider;
71
84
  /**
72
85
  * Check if a CloudArg is a multi-cloud array.
86
+ *
87
+ * @param cloud - The cloud argument to check
88
+ * @returns True if the argument is an array of cloud targets
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * isMultiCloud("aws"); // false
93
+ * isMultiCloud(["aws", "azure"]); // true
94
+ * ```
73
95
  */
74
96
  export declare function isMultiCloud(cloud: CloudArg): cloud is ReadonlyArray<CloudProvider | CloudTarget>;
75
97
  //# sourceMappingURL=types.d.ts.map
@@ -1 +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"}
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;IACxD,6EAA6E;IAC7E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,+EAA+E;IAC/E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC;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;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,GAAG,aAAa,CAGjF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,IAAI,aAAa,CAAC,aAAa,GAAG,WAAW,CAAC,CAEjG"}
@@ -13,6 +13,15 @@ exports.isMultiCloud = isMultiCloud;
13
13
  /**
14
14
  * Extract the provider string from a CloudArg for single-target dispatch.
15
15
  * For arrays, returns the first element's provider.
16
+ *
17
+ * @param cloud - A cloud provider string or CloudTarget object
18
+ * @returns The cloud provider identifier
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * extractProvider("aws"); // "aws"
23
+ * extractProvider({ provider: "azure", region: "eastus" }); // "azure"
24
+ * ```
16
25
  */
17
26
  function extractProvider(cloud) {
18
27
  if (typeof cloud === "string")
@@ -21,6 +30,15 @@ function extractProvider(cloud) {
21
30
  }
22
31
  /**
23
32
  * Check if a CloudArg is a multi-cloud array.
33
+ *
34
+ * @param cloud - The cloud argument to check
35
+ * @returns True if the argument is an array of cloud targets
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * isMultiCloud("aws"); // false
40
+ * isMultiCloud(["aws", "azure"]); // true
41
+ * ```
24
42
  */
25
43
  function isMultiCloud(cloud) {
26
44
  return Array.isArray(cloud);
@@ -1 +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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/factories/types.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAgFH,0CAGC;AAcD,oCAEC;AAhCD;;;;;;;;;;;;GAYG;AACH,SAAgB,eAAe,CAAC,KAAkC;IAChE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,KAAK,CAAC,QAAQ,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,YAAY,CAAC,KAAe;IAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
@@ -1 +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"}
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;AAkBtB;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,yBAAyB,GAChC,mBAAmB,CAWrB"}
@@ -45,6 +45,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
45
45
  exports.createGlobalLoadBalancer = createGlobalLoadBalancer;
46
46
  const aws = __importStar(require("@pulumi/aws"));
47
47
  const pulumi = __importStar(require("@pulumi/pulumi"));
48
+ const types_1 = require("../types");
49
+ /** Default health check interval in seconds. */
50
+ const DEFAULT_HEALTH_CHECK_INTERVAL_SECONDS = 30;
51
+ /** Default health check failure threshold. */
52
+ const DEFAULT_FAILURE_THRESHOLD = 3;
53
+ /** Equal weight for active-active routing (each endpoint gets the same weight). */
54
+ const EQUAL_ROUTING_WEIGHT = 100;
55
+ /** DNS record TTL in seconds for GLB records. */
56
+ const GLB_DNS_TTL_SECONDS = 60;
57
+ /** Geographic continent codes for geo-routing. */
58
+ const GEO_CONTINENTS = ["NA", "EU", "AP", "SA", "AF", "OC"];
48
59
  /**
49
60
  * Create a Global Load Balancer across multiple clusters.
50
61
  *
@@ -70,6 +81,8 @@ function createGlobalLoadBalancer(name, config) {
70
81
  case "azure-traffic-manager":
71
82
  // Placeholder for future providers
72
83
  return createRoute53Glb(name, config);
84
+ default:
85
+ (0, types_1.assertNever)(config.dnsProvider);
73
86
  }
74
87
  }
75
88
  function createRoute53Glb(name, config) {
@@ -84,8 +97,8 @@ function createRoute53Glb(name, config) {
84
97
  type: hc.protocol === "TCP" ? "TCP" : `${hc.protocol}_STR_MATCH`,
85
98
  resourcePath: hc.protocol !== "TCP" ? hc.path : undefined,
86
99
  port: hc.port,
87
- requestInterval: hc.intervalSeconds ?? 30,
88
- failureThreshold: hc.unhealthyThreshold ?? 3,
100
+ requestInterval: hc.intervalSeconds ?? DEFAULT_HEALTH_CHECK_INTERVAL_SECONDS,
101
+ failureThreshold: hc.unhealthyThreshold ?? DEFAULT_FAILURE_THRESHOLD,
89
102
  fqdn: cluster.endpoint.apply((ep) => {
90
103
  try {
91
104
  return new URL(ep).hostname;
@@ -108,9 +121,9 @@ function createRoute53Glb(name, config) {
108
121
  zoneId: zone.zoneId,
109
122
  name: config.domain,
110
123
  type: "CNAME",
111
- ttl: 60,
124
+ ttl: GLB_DNS_TTL_SECONDS,
112
125
  setIdentifier: `${name}-${entry.cluster.name}`,
113
- weightedRoutingPolicies: [{ weight: 100 }],
126
+ weightedRoutingPolicies: [{ weight: EQUAL_ROUTING_WEIGHT }],
114
127
  healthCheckId: entry.healthCheck.id,
115
128
  records: [
116
129
  entry.cluster.endpoint.apply((ep) => {
@@ -133,7 +146,7 @@ function createRoute53Glb(name, config) {
133
146
  zoneId: zone.zoneId,
134
147
  name: config.domain,
135
148
  type: "CNAME",
136
- ttl: 60,
149
+ ttl: GLB_DNS_TTL_SECONDS,
137
150
  setIdentifier: `${name}-${entry.cluster.name}`,
138
151
  failoverRoutingPolicies: [{ type: i === 0 ? "PRIMARY" : "SECONDARY" }],
139
152
  healthCheckId: entry.healthCheck.id,
@@ -153,16 +166,15 @@ function createRoute53Glb(name, config) {
153
166
  }
154
167
  case "geo": {
155
168
  // Geolocation routing — defaults to continent-based
156
- const continents = ["NA", "EU", "AP", "SA", "AF", "OC"];
157
169
  for (const [i, entry] of healthChecks.entries()) {
158
170
  new aws.route53.Record(`${name}-record-${i}`, {
159
171
  zoneId: zone.zoneId,
160
172
  name: config.domain,
161
173
  type: "CNAME",
162
- ttl: 60,
174
+ ttl: GLB_DNS_TTL_SECONDS,
163
175
  setIdentifier: `${name}-${entry.cluster.name}`,
164
176
  geolocationRoutingPolicies: [
165
- i < continents.length ? { continent: continents[i] } : { country: "*" },
177
+ i < GEO_CONTINENTS.length ? { continent: GEO_CONTINENTS[i] } : { country: "*" },
166
178
  ],
167
179
  healthCheckId: entry.healthCheck.id,
168
180
  records: [
@@ -185,7 +197,7 @@ function createRoute53Glb(name, config) {
185
197
  zoneId: zone.zoneId,
186
198
  name: config.domain,
187
199
  type: "CNAME",
188
- ttl: 60,
200
+ ttl: GLB_DNS_TTL_SECONDS,
189
201
  setIdentifier: `${name}-default`,
190
202
  geolocationRoutingPolicies: [{ country: "*" }],
191
203
  healthCheckId: fallback.healthCheck.id,
@@ -204,6 +216,8 @@ function createRoute53Glb(name, config) {
204
216
  }
205
217
  break;
206
218
  }
219
+ default:
220
+ (0, types_1.assertNever)(config.strategy);
207
221
  }
208
222
  // Health status output
209
223
  const healthStatus = pulumi.all(healthChecks.map((entry) => pulumi.all([pulumi.output(entry.cluster.name), entry.healthCheck.id]).apply(([clusterName]) => ({