@reyemtech/nimbus 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +399 -0
  3. package/dist/cjs/aws/cluster.d.ts +32 -0
  4. package/dist/cjs/aws/cluster.d.ts.map +1 -0
  5. package/dist/cjs/aws/cluster.js +214 -0
  6. package/dist/cjs/aws/cluster.js.map +1 -0
  7. package/dist/cjs/aws/dns.d.ts +22 -0
  8. package/dist/cjs/aws/dns.d.ts.map +1 -0
  9. package/dist/cjs/aws/dns.js +95 -0
  10. package/dist/cjs/aws/dns.js.map +1 -0
  11. package/dist/cjs/aws/index.d.ts +10 -0
  12. package/dist/cjs/aws/index.d.ts.map +1 -0
  13. package/dist/cjs/aws/index.js +17 -0
  14. package/dist/cjs/aws/index.js.map +1 -0
  15. package/dist/cjs/aws/network.d.ts +27 -0
  16. package/dist/cjs/aws/network.d.ts.map +1 -0
  17. package/dist/cjs/aws/network.js +262 -0
  18. package/dist/cjs/aws/network.js.map +1 -0
  19. package/dist/cjs/aws/secrets.d.ts +26 -0
  20. package/dist/cjs/aws/secrets.d.ts.map +1 -0
  21. package/dist/cjs/aws/secrets.js +127 -0
  22. package/dist/cjs/aws/secrets.js.map +1 -0
  23. package/dist/cjs/azure/cluster.d.ts +44 -0
  24. package/dist/cjs/azure/cluster.d.ts.map +1 -0
  25. package/dist/cjs/azure/cluster.js +143 -0
  26. package/dist/cjs/azure/cluster.js.map +1 -0
  27. package/dist/cjs/azure/dns.d.ts +28 -0
  28. package/dist/cjs/azure/dns.d.ts.map +1 -0
  29. package/dist/cjs/azure/dns.js +169 -0
  30. package/dist/cjs/azure/dns.js.map +1 -0
  31. package/dist/cjs/azure/index.d.ts +10 -0
  32. package/dist/cjs/azure/index.d.ts.map +1 -0
  33. package/dist/cjs/azure/index.js +17 -0
  34. package/dist/cjs/azure/index.js.map +1 -0
  35. package/dist/cjs/azure/network.d.ts +28 -0
  36. package/dist/cjs/azure/network.d.ts.map +1 -0
  37. package/dist/cjs/azure/network.js +176 -0
  38. package/dist/cjs/azure/network.js.map +1 -0
  39. package/dist/cjs/azure/secrets.d.ts +37 -0
  40. package/dist/cjs/azure/secrets.d.ts.map +1 -0
  41. package/dist/cjs/azure/secrets.js +150 -0
  42. package/dist/cjs/azure/secrets.js.map +1 -0
  43. package/dist/cjs/cache/index.d.ts +7 -0
  44. package/dist/cjs/cache/index.d.ts.map +1 -0
  45. package/dist/cjs/cache/index.js +8 -0
  46. package/dist/cjs/cache/index.js.map +1 -0
  47. package/dist/cjs/cache/interfaces.d.ts +60 -0
  48. package/dist/cjs/cache/interfaces.d.ts.map +1 -0
  49. package/dist/cjs/cache/interfaces.js +11 -0
  50. package/dist/cjs/cache/interfaces.js.map +1 -0
  51. package/dist/cjs/cluster/index.d.ts +7 -0
  52. package/dist/cjs/cluster/index.d.ts.map +1 -0
  53. package/dist/cjs/cluster/index.js +8 -0
  54. package/dist/cjs/cluster/index.js.map +1 -0
  55. package/dist/cjs/cluster/interfaces.d.ts +120 -0
  56. package/dist/cjs/cluster/interfaces.d.ts.map +1 -0
  57. package/dist/cjs/cluster/interfaces.js +12 -0
  58. package/dist/cjs/cluster/interfaces.js.map +1 -0
  59. package/dist/cjs/database/index.d.ts +7 -0
  60. package/dist/cjs/database/index.d.ts.map +1 -0
  61. package/dist/cjs/database/index.js +8 -0
  62. package/dist/cjs/database/index.js.map +1 -0
  63. package/dist/cjs/database/interfaces.d.ts +93 -0
  64. package/dist/cjs/database/interfaces.d.ts.map +1 -0
  65. package/dist/cjs/database/interfaces.js +12 -0
  66. package/dist/cjs/database/interfaces.js.map +1 -0
  67. package/dist/cjs/dns/index.d.ts +7 -0
  68. package/dist/cjs/dns/index.d.ts.map +1 -0
  69. package/dist/cjs/dns/index.js +8 -0
  70. package/dist/cjs/dns/index.js.map +1 -0
  71. package/dist/cjs/dns/interfaces.d.ts +55 -0
  72. package/dist/cjs/dns/interfaces.d.ts.map +1 -0
  73. package/dist/cjs/dns/interfaces.js +11 -0
  74. package/dist/cjs/dns/interfaces.js.map +1 -0
  75. package/dist/cjs/factories/cluster.d.ts +45 -0
  76. package/dist/cjs/factories/cluster.d.ts.map +1 -0
  77. package/dist/cjs/factories/cluster.js +90 -0
  78. package/dist/cjs/factories/cluster.js.map +1 -0
  79. package/dist/cjs/factories/dns.d.ts +30 -0
  80. package/dist/cjs/factories/dns.d.ts.map +1 -0
  81. package/dist/cjs/factories/dns.js +56 -0
  82. package/dist/cjs/factories/dns.js.map +1 -0
  83. package/dist/cjs/factories/index.d.ts +15 -0
  84. package/dist/cjs/factories/index.d.ts.map +1 -0
  85. package/dist/cjs/factories/index.js +23 -0
  86. package/dist/cjs/factories/index.js.map +1 -0
  87. package/dist/cjs/factories/network.d.ts +40 -0
  88. package/dist/cjs/factories/network.d.ts.map +1 -0
  89. package/dist/cjs/factories/network.js +85 -0
  90. package/dist/cjs/factories/network.js.map +1 -0
  91. package/dist/cjs/factories/secrets.d.ts +38 -0
  92. package/dist/cjs/factories/secrets.d.ts.map +1 -0
  93. package/dist/cjs/factories/secrets.js +67 -0
  94. package/dist/cjs/factories/secrets.js.map +1 -0
  95. package/dist/cjs/factories/types.d.ts +75 -0
  96. package/dist/cjs/factories/types.d.ts.map +1 -0
  97. package/dist/cjs/factories/types.js +28 -0
  98. package/dist/cjs/factories/types.js.map +1 -0
  99. package/dist/cjs/global-lb/glb.d.ts +29 -0
  100. package/dist/cjs/global-lb/glb.d.ts.map +1 -0
  101. package/dist/cjs/global-lb/glb.js +220 -0
  102. package/dist/cjs/global-lb/glb.js.map +1 -0
  103. package/dist/cjs/global-lb/index.d.ts +8 -0
  104. package/dist/cjs/global-lb/index.d.ts.map +1 -0
  105. package/dist/cjs/global-lb/index.js +11 -0
  106. package/dist/cjs/global-lb/index.js.map +1 -0
  107. package/dist/cjs/global-lb/interfaces.d.ts +62 -0
  108. package/dist/cjs/global-lb/interfaces.d.ts.map +1 -0
  109. package/dist/cjs/global-lb/interfaces.js +11 -0
  110. package/dist/cjs/global-lb/interfaces.js.map +1 -0
  111. package/dist/cjs/index.d.ts +28 -0
  112. package/dist/cjs/index.d.ts.map +1 -0
  113. package/dist/cjs/index.js +72 -0
  114. package/dist/cjs/index.js.map +1 -0
  115. package/dist/cjs/network/cidr.d.ts +92 -0
  116. package/dist/cjs/network/cidr.d.ts.map +1 -0
  117. package/dist/cjs/network/cidr.js +189 -0
  118. package/dist/cjs/network/cidr.js.map +1 -0
  119. package/dist/cjs/network/index.d.ts +8 -0
  120. package/dist/cjs/network/index.d.ts.map +1 -0
  121. package/dist/cjs/network/index.js +17 -0
  122. package/dist/cjs/network/index.js.map +1 -0
  123. package/dist/cjs/network/interfaces.d.ts +60 -0
  124. package/dist/cjs/network/interfaces.d.ts.map +1 -0
  125. package/dist/cjs/network/interfaces.js +12 -0
  126. package/dist/cjs/network/interfaces.js.map +1 -0
  127. package/dist/cjs/platform/index.d.ts +8 -0
  128. package/dist/cjs/platform/index.d.ts.map +1 -0
  129. package/dist/cjs/platform/index.js +11 -0
  130. package/dist/cjs/platform/index.js.map +1 -0
  131. package/dist/cjs/platform/interfaces.d.ts +86 -0
  132. package/dist/cjs/platform/interfaces.d.ts.map +1 -0
  133. package/dist/cjs/platform/interfaces.js +12 -0
  134. package/dist/cjs/platform/interfaces.js.map +1 -0
  135. package/dist/cjs/platform/stack.d.ts +32 -0
  136. package/dist/cjs/platform/stack.d.ts.map +1 -0
  137. package/dist/cjs/platform/stack.js +258 -0
  138. package/dist/cjs/platform/stack.js.map +1 -0
  139. package/dist/cjs/queue/index.d.ts +7 -0
  140. package/dist/cjs/queue/index.d.ts.map +1 -0
  141. package/dist/cjs/queue/index.js +8 -0
  142. package/dist/cjs/queue/index.js.map +1 -0
  143. package/dist/cjs/queue/interfaces.d.ts +46 -0
  144. package/dist/cjs/queue/interfaces.d.ts.map +1 -0
  145. package/dist/cjs/queue/interfaces.js +11 -0
  146. package/dist/cjs/queue/interfaces.js.map +1 -0
  147. package/dist/cjs/secrets/index.d.ts +7 -0
  148. package/dist/cjs/secrets/index.d.ts.map +1 -0
  149. package/dist/cjs/secrets/index.js +8 -0
  150. package/dist/cjs/secrets/index.js.map +1 -0
  151. package/dist/cjs/secrets/interfaces.d.ts +73 -0
  152. package/dist/cjs/secrets/interfaces.d.ts.map +1 -0
  153. package/dist/cjs/secrets/interfaces.js +11 -0
  154. package/dist/cjs/secrets/interfaces.js.map +1 -0
  155. package/dist/cjs/storage/index.d.ts +7 -0
  156. package/dist/cjs/storage/index.d.ts.map +1 -0
  157. package/dist/cjs/storage/index.js +8 -0
  158. package/dist/cjs/storage/index.js.map +1 -0
  159. package/dist/cjs/storage/interfaces.d.ts +63 -0
  160. package/dist/cjs/storage/interfaces.d.ts.map +1 -0
  161. package/dist/cjs/storage/interfaces.js +11 -0
  162. package/dist/cjs/storage/interfaces.js.map +1 -0
  163. package/dist/cjs/types/cloud-target.d.ts +89 -0
  164. package/dist/cjs/types/cloud-target.d.ts.map +1 -0
  165. package/dist/cjs/types/cloud-target.js +73 -0
  166. package/dist/cjs/types/cloud-target.js.map +1 -0
  167. package/dist/cjs/types/errors.d.ts +96 -0
  168. package/dist/cjs/types/errors.d.ts.map +1 -0
  169. package/dist/cjs/types/errors.js +127 -0
  170. package/dist/cjs/types/errors.js.map +1 -0
  171. package/dist/cjs/types/index.d.ts +10 -0
  172. package/dist/cjs/types/index.d.ts.map +1 -0
  173. package/dist/cjs/types/index.js +33 -0
  174. package/dist/cjs/types/index.js.map +1 -0
  175. package/dist/cjs/types/tags.d.ts +53 -0
  176. package/dist/cjs/types/tags.d.ts.map +1 -0
  177. package/dist/cjs/types/tags.js +110 -0
  178. package/dist/cjs/types/tags.js.map +1 -0
  179. package/dist/cjs/types/validation.d.ts +63 -0
  180. package/dist/cjs/types/validation.d.ts.map +1 -0
  181. package/dist/cjs/types/validation.js +158 -0
  182. package/dist/cjs/types/validation.js.map +1 -0
  183. package/dist/esm/aws/cluster.d.ts +32 -0
  184. package/dist/esm/aws/cluster.d.ts.map +1 -0
  185. package/dist/esm/aws/cluster.js +214 -0
  186. package/dist/esm/aws/cluster.js.map +1 -0
  187. package/dist/esm/aws/dns.d.ts +22 -0
  188. package/dist/esm/aws/dns.d.ts.map +1 -0
  189. package/dist/esm/aws/dns.js +95 -0
  190. package/dist/esm/aws/dns.js.map +1 -0
  191. package/dist/esm/aws/index.d.ts +10 -0
  192. package/dist/esm/aws/index.d.ts.map +1 -0
  193. package/dist/esm/aws/index.js +17 -0
  194. package/dist/esm/aws/index.js.map +1 -0
  195. package/dist/esm/aws/network.d.ts +27 -0
  196. package/dist/esm/aws/network.d.ts.map +1 -0
  197. package/dist/esm/aws/network.js +262 -0
  198. package/dist/esm/aws/network.js.map +1 -0
  199. package/dist/esm/aws/secrets.d.ts +26 -0
  200. package/dist/esm/aws/secrets.d.ts.map +1 -0
  201. package/dist/esm/aws/secrets.js +127 -0
  202. package/dist/esm/aws/secrets.js.map +1 -0
  203. package/dist/esm/azure/cluster.d.ts +44 -0
  204. package/dist/esm/azure/cluster.d.ts.map +1 -0
  205. package/dist/esm/azure/cluster.js +143 -0
  206. package/dist/esm/azure/cluster.js.map +1 -0
  207. package/dist/esm/azure/dns.d.ts +28 -0
  208. package/dist/esm/azure/dns.d.ts.map +1 -0
  209. package/dist/esm/azure/dns.js +169 -0
  210. package/dist/esm/azure/dns.js.map +1 -0
  211. package/dist/esm/azure/index.d.ts +10 -0
  212. package/dist/esm/azure/index.d.ts.map +1 -0
  213. package/dist/esm/azure/index.js +17 -0
  214. package/dist/esm/azure/index.js.map +1 -0
  215. package/dist/esm/azure/network.d.ts +28 -0
  216. package/dist/esm/azure/network.d.ts.map +1 -0
  217. package/dist/esm/azure/network.js +176 -0
  218. package/dist/esm/azure/network.js.map +1 -0
  219. package/dist/esm/azure/secrets.d.ts +37 -0
  220. package/dist/esm/azure/secrets.d.ts.map +1 -0
  221. package/dist/esm/azure/secrets.js +150 -0
  222. package/dist/esm/azure/secrets.js.map +1 -0
  223. package/dist/esm/cache/index.d.ts +7 -0
  224. package/dist/esm/cache/index.d.ts.map +1 -0
  225. package/dist/esm/cache/index.js +8 -0
  226. package/dist/esm/cache/index.js.map +1 -0
  227. package/dist/esm/cache/interfaces.d.ts +60 -0
  228. package/dist/esm/cache/interfaces.d.ts.map +1 -0
  229. package/dist/esm/cache/interfaces.js +11 -0
  230. package/dist/esm/cache/interfaces.js.map +1 -0
  231. package/dist/esm/cluster/index.d.ts +7 -0
  232. package/dist/esm/cluster/index.d.ts.map +1 -0
  233. package/dist/esm/cluster/index.js +8 -0
  234. package/dist/esm/cluster/index.js.map +1 -0
  235. package/dist/esm/cluster/interfaces.d.ts +120 -0
  236. package/dist/esm/cluster/interfaces.d.ts.map +1 -0
  237. package/dist/esm/cluster/interfaces.js +12 -0
  238. package/dist/esm/cluster/interfaces.js.map +1 -0
  239. package/dist/esm/database/index.d.ts +7 -0
  240. package/dist/esm/database/index.d.ts.map +1 -0
  241. package/dist/esm/database/index.js +8 -0
  242. package/dist/esm/database/index.js.map +1 -0
  243. package/dist/esm/database/interfaces.d.ts +93 -0
  244. package/dist/esm/database/interfaces.d.ts.map +1 -0
  245. package/dist/esm/database/interfaces.js +12 -0
  246. package/dist/esm/database/interfaces.js.map +1 -0
  247. package/dist/esm/dns/index.d.ts +7 -0
  248. package/dist/esm/dns/index.d.ts.map +1 -0
  249. package/dist/esm/dns/index.js +8 -0
  250. package/dist/esm/dns/index.js.map +1 -0
  251. package/dist/esm/dns/interfaces.d.ts +55 -0
  252. package/dist/esm/dns/interfaces.d.ts.map +1 -0
  253. package/dist/esm/dns/interfaces.js +11 -0
  254. package/dist/esm/dns/interfaces.js.map +1 -0
  255. package/dist/esm/factories/cluster.d.ts +45 -0
  256. package/dist/esm/factories/cluster.d.ts.map +1 -0
  257. package/dist/esm/factories/cluster.js +90 -0
  258. package/dist/esm/factories/cluster.js.map +1 -0
  259. package/dist/esm/factories/dns.d.ts +30 -0
  260. package/dist/esm/factories/dns.d.ts.map +1 -0
  261. package/dist/esm/factories/dns.js +56 -0
  262. package/dist/esm/factories/dns.js.map +1 -0
  263. package/dist/esm/factories/index.d.ts +15 -0
  264. package/dist/esm/factories/index.d.ts.map +1 -0
  265. package/dist/esm/factories/index.js +23 -0
  266. package/dist/esm/factories/index.js.map +1 -0
  267. package/dist/esm/factories/network.d.ts +40 -0
  268. package/dist/esm/factories/network.d.ts.map +1 -0
  269. package/dist/esm/factories/network.js +85 -0
  270. package/dist/esm/factories/network.js.map +1 -0
  271. package/dist/esm/factories/secrets.d.ts +38 -0
  272. package/dist/esm/factories/secrets.d.ts.map +1 -0
  273. package/dist/esm/factories/secrets.js +67 -0
  274. package/dist/esm/factories/secrets.js.map +1 -0
  275. package/dist/esm/factories/types.d.ts +75 -0
  276. package/dist/esm/factories/types.d.ts.map +1 -0
  277. package/dist/esm/factories/types.js +28 -0
  278. package/dist/esm/factories/types.js.map +1 -0
  279. package/dist/esm/global-lb/glb.d.ts +29 -0
  280. package/dist/esm/global-lb/glb.d.ts.map +1 -0
  281. package/dist/esm/global-lb/glb.js +220 -0
  282. package/dist/esm/global-lb/glb.js.map +1 -0
  283. package/dist/esm/global-lb/index.d.ts +8 -0
  284. package/dist/esm/global-lb/index.d.ts.map +1 -0
  285. package/dist/esm/global-lb/index.js +11 -0
  286. package/dist/esm/global-lb/index.js.map +1 -0
  287. package/dist/esm/global-lb/interfaces.d.ts +62 -0
  288. package/dist/esm/global-lb/interfaces.d.ts.map +1 -0
  289. package/dist/esm/global-lb/interfaces.js +11 -0
  290. package/dist/esm/global-lb/interfaces.js.map +1 -0
  291. package/dist/esm/index.d.ts +28 -0
  292. package/dist/esm/index.d.ts.map +1 -0
  293. package/dist/esm/index.js +72 -0
  294. package/dist/esm/index.js.map +1 -0
  295. package/dist/esm/network/cidr.d.ts +92 -0
  296. package/dist/esm/network/cidr.d.ts.map +1 -0
  297. package/dist/esm/network/cidr.js +189 -0
  298. package/dist/esm/network/cidr.js.map +1 -0
  299. package/dist/esm/network/index.d.ts +8 -0
  300. package/dist/esm/network/index.d.ts.map +1 -0
  301. package/dist/esm/network/index.js +17 -0
  302. package/dist/esm/network/index.js.map +1 -0
  303. package/dist/esm/network/interfaces.d.ts +60 -0
  304. package/dist/esm/network/interfaces.d.ts.map +1 -0
  305. package/dist/esm/network/interfaces.js +12 -0
  306. package/dist/esm/network/interfaces.js.map +1 -0
  307. package/dist/esm/platform/index.d.ts +8 -0
  308. package/dist/esm/platform/index.d.ts.map +1 -0
  309. package/dist/esm/platform/index.js +11 -0
  310. package/dist/esm/platform/index.js.map +1 -0
  311. package/dist/esm/platform/interfaces.d.ts +86 -0
  312. package/dist/esm/platform/interfaces.d.ts.map +1 -0
  313. package/dist/esm/platform/interfaces.js +12 -0
  314. package/dist/esm/platform/interfaces.js.map +1 -0
  315. package/dist/esm/platform/stack.d.ts +32 -0
  316. package/dist/esm/platform/stack.d.ts.map +1 -0
  317. package/dist/esm/platform/stack.js +258 -0
  318. package/dist/esm/platform/stack.js.map +1 -0
  319. package/dist/esm/queue/index.d.ts +7 -0
  320. package/dist/esm/queue/index.d.ts.map +1 -0
  321. package/dist/esm/queue/index.js +8 -0
  322. package/dist/esm/queue/index.js.map +1 -0
  323. package/dist/esm/queue/interfaces.d.ts +46 -0
  324. package/dist/esm/queue/interfaces.d.ts.map +1 -0
  325. package/dist/esm/queue/interfaces.js +11 -0
  326. package/dist/esm/queue/interfaces.js.map +1 -0
  327. package/dist/esm/secrets/index.d.ts +7 -0
  328. package/dist/esm/secrets/index.d.ts.map +1 -0
  329. package/dist/esm/secrets/index.js +8 -0
  330. package/dist/esm/secrets/index.js.map +1 -0
  331. package/dist/esm/secrets/interfaces.d.ts +73 -0
  332. package/dist/esm/secrets/interfaces.d.ts.map +1 -0
  333. package/dist/esm/secrets/interfaces.js +11 -0
  334. package/dist/esm/secrets/interfaces.js.map +1 -0
  335. package/dist/esm/storage/index.d.ts +7 -0
  336. package/dist/esm/storage/index.d.ts.map +1 -0
  337. package/dist/esm/storage/index.js +8 -0
  338. package/dist/esm/storage/index.js.map +1 -0
  339. package/dist/esm/storage/interfaces.d.ts +63 -0
  340. package/dist/esm/storage/interfaces.d.ts.map +1 -0
  341. package/dist/esm/storage/interfaces.js +11 -0
  342. package/dist/esm/storage/interfaces.js.map +1 -0
  343. package/dist/esm/types/cloud-target.d.ts +89 -0
  344. package/dist/esm/types/cloud-target.d.ts.map +1 -0
  345. package/dist/esm/types/cloud-target.js +73 -0
  346. package/dist/esm/types/cloud-target.js.map +1 -0
  347. package/dist/esm/types/errors.d.ts +96 -0
  348. package/dist/esm/types/errors.d.ts.map +1 -0
  349. package/dist/esm/types/errors.js +127 -0
  350. package/dist/esm/types/errors.js.map +1 -0
  351. package/dist/esm/types/index.d.ts +10 -0
  352. package/dist/esm/types/index.d.ts.map +1 -0
  353. package/dist/esm/types/index.js +33 -0
  354. package/dist/esm/types/index.js.map +1 -0
  355. package/dist/esm/types/tags.d.ts +53 -0
  356. package/dist/esm/types/tags.d.ts.map +1 -0
  357. package/dist/esm/types/tags.js +110 -0
  358. package/dist/esm/types/tags.js.map +1 -0
  359. package/dist/esm/types/validation.d.ts +63 -0
  360. package/dist/esm/types/validation.d.ts.map +1 -0
  361. package/dist/esm/types/validation.js +158 -0
  362. package/dist/esm/types/validation.js.map +1 -0
  363. package/package.json +88 -0
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Cloud target types for @reyemtech/nimbus.
3
+ *
4
+ * Defines how users specify which cloud provider(s) and region(s)
5
+ * to deploy to. Supports string shorthand, explicit targets,
6
+ * and multi-cloud arrays.
7
+ *
8
+ * @module types/cloud-target
9
+ */
10
+ /** Supported cloud providers. */
11
+ export type CloudProvider = "aws" | "azure" | "gcp" | "rackspace";
12
+ /**
13
+ * Explicit cloud target with provider and optional region.
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const target: CloudTarget = { provider: "aws", region: "us-east-1" };
18
+ * ```
19
+ */
20
+ export interface CloudTarget {
21
+ readonly provider: CloudProvider;
22
+ /** Falls back to DEFAULT_REGIONS[provider] if omitted. */
23
+ readonly region?: string;
24
+ }
25
+ /**
26
+ * Flexible cloud argument accepted by all factory functions.
27
+ *
28
+ * - `string` shorthand: `"aws"` → reads region from config or default
29
+ * - `CloudTarget`: explicit `{ provider, region }`
30
+ * - `Array`: multi-cloud deployment
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * // Simple
35
+ * cloud: "aws"
36
+ *
37
+ * // Explicit
38
+ * cloud: { provider: "aws", region: "us-east-1" }
39
+ *
40
+ * // Multi-cloud
41
+ * cloud: [
42
+ * { provider: "aws", region: "us-east-1" },
43
+ * { provider: "azure", region: "canadacentral" }
44
+ * ]
45
+ * ```
46
+ */
47
+ export type CloudArg = CloudProvider | CloudTarget | ReadonlyArray<CloudProvider | CloudTarget>;
48
+ /**
49
+ * Resolved cloud target — always has both provider and region.
50
+ * Produced by resolveCloudTarget() after applying config/defaults.
51
+ */
52
+ export interface ResolvedCloudTarget {
53
+ readonly provider: CloudProvider;
54
+ readonly region: string;
55
+ }
56
+ /** Default regions when none specified and no config file entry found. */
57
+ export declare const DEFAULT_REGIONS: Readonly<Record<CloudProvider, string>>;
58
+ /** All valid cloud providers for exhaustive checks. */
59
+ export declare const CLOUD_PROVIDERS: ReadonlyArray<CloudProvider>;
60
+ /**
61
+ * Type guard: is the value a CloudProvider string?
62
+ *
63
+ * @param value - Value to check
64
+ * @returns True if value is a valid CloudProvider
65
+ */
66
+ export declare function isCloudProvider(value: unknown): value is CloudProvider;
67
+ /**
68
+ * Type guard: is the value a CloudTarget object?
69
+ *
70
+ * @param value - Value to check
71
+ * @returns True if value is a CloudTarget
72
+ */
73
+ export declare function isCloudTarget(value: unknown): value is CloudTarget;
74
+ /**
75
+ * Resolve a CloudArg into one or more ResolvedCloudTargets.
76
+ *
77
+ * Resolution order:
78
+ * 1. Explicit region in CloudTarget
79
+ * 2. DEFAULT_REGIONS fallback
80
+ *
81
+ * @param cloud - The cloud argument to resolve
82
+ * @returns Resolved target(s) with provider and region
83
+ *
84
+ * @throws {CloudValidationError} If cloud argument is invalid
85
+ */
86
+ export declare function resolveCloudTarget(cloud: CloudProvider | CloudTarget): ResolvedCloudTarget;
87
+ export declare function resolveCloudTarget(cloud: ReadonlyArray<CloudProvider | CloudTarget>): ReadonlyArray<ResolvedCloudTarget>;
88
+ export declare function resolveCloudTarget(cloud: CloudArg): ResolvedCloudTarget | ReadonlyArray<ResolvedCloudTarget>;
89
+ //# sourceMappingURL=cloud-target.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ /**
3
+ * Cloud target types for @reyemtech/nimbus.
4
+ *
5
+ * Defines how users specify which cloud provider(s) and region(s)
6
+ * to deploy to. Supports string shorthand, explicit targets,
7
+ * and multi-cloud arrays.
8
+ *
9
+ * @module types/cloud-target
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CLOUD_PROVIDERS = exports.DEFAULT_REGIONS = void 0;
13
+ exports.isCloudProvider = isCloudProvider;
14
+ exports.isCloudTarget = isCloudTarget;
15
+ exports.resolveCloudTarget = resolveCloudTarget;
16
+ const errors_1 = require("./errors");
17
+ /** Default regions when none specified and no config file entry found. */
18
+ exports.DEFAULT_REGIONS = {
19
+ aws: "us-east-1",
20
+ azure: "eastus",
21
+ gcp: "us-central1",
22
+ rackspace: "us-central-iad3",
23
+ };
24
+ /** All valid cloud providers for exhaustive checks. */
25
+ exports.CLOUD_PROVIDERS = [
26
+ "aws",
27
+ "azure",
28
+ "gcp",
29
+ "rackspace",
30
+ ];
31
+ /**
32
+ * Type guard: is the value a CloudProvider string?
33
+ *
34
+ * @param value - Value to check
35
+ * @returns True if value is a valid CloudProvider
36
+ */
37
+ function isCloudProvider(value) {
38
+ return typeof value === "string" && exports.CLOUD_PROVIDERS.includes(value);
39
+ }
40
+ /**
41
+ * Type guard: is the value a CloudTarget object?
42
+ *
43
+ * @param value - Value to check
44
+ * @returns True if value is a CloudTarget
45
+ */
46
+ function isCloudTarget(value) {
47
+ return (typeof value === "object" &&
48
+ value !== null &&
49
+ "provider" in value &&
50
+ isCloudProvider(value.provider));
51
+ }
52
+ function resolveCloudTarget(cloud) {
53
+ if (Array.isArray(cloud)) {
54
+ return cloud.map((c) => resolveSingle(c));
55
+ }
56
+ return resolveSingle(cloud);
57
+ }
58
+ function resolveSingle(cloud) {
59
+ if (isCloudProvider(cloud)) {
60
+ return {
61
+ provider: cloud,
62
+ region: exports.DEFAULT_REGIONS[cloud],
63
+ };
64
+ }
65
+ if (isCloudTarget(cloud)) {
66
+ return {
67
+ provider: cloud.provider,
68
+ region: cloud.region ?? exports.DEFAULT_REGIONS[cloud.provider],
69
+ };
70
+ }
71
+ throw new errors_1.CloudValidationError(`Invalid cloud argument: ${JSON.stringify(cloud)}. Expected CloudProvider string or CloudTarget object.`);
72
+ }
73
+ //# sourceMappingURL=cloud-target.js.map
@@ -0,0 +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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Custom error classes for @reyemtech/nimbus.
3
+ *
4
+ * All errors extend AnyCloudError with a machine-readable code.
5
+ * Use discriminated error codes for programmatic handling.
6
+ *
7
+ * @module types/errors
8
+ */
9
+ /** Error codes for all nimbus errors. */
10
+ export declare const ERROR_CODES: {
11
+ readonly CLOUD_VALIDATION: "CLOUD_VALIDATION";
12
+ readonly CIDR_OVERLAP: "CIDR_OVERLAP";
13
+ readonly CIDR_INVALID: "CIDR_INVALID";
14
+ readonly UNSUPPORTED_FEATURE: "UNSUPPORTED_FEATURE";
15
+ readonly CONFIG_MISSING: "CONFIG_MISSING";
16
+ readonly CONFIG_INVALID: "CONFIG_INVALID";
17
+ readonly SECRET_NOT_FOUND: "SECRET_NOT_FOUND";
18
+ readonly PROVIDER_MISMATCH: "PROVIDER_MISMATCH";
19
+ };
20
+ export type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES];
21
+ /**
22
+ * Base error for all nimbus errors.
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * try {
27
+ * createCluster("prod", { cloud: "invalid" as any });
28
+ * } catch (e) {
29
+ * if (e instanceof AnyCloudError) {
30
+ * console.log(e.code); // "CLOUD_VALIDATION"
31
+ * }
32
+ * }
33
+ * ```
34
+ */
35
+ export declare class AnyCloudError extends Error {
36
+ readonly code: ErrorCode;
37
+ constructor(message: string, code: ErrorCode);
38
+ }
39
+ /**
40
+ * Thrown when a cloud provider or region is invalid.
41
+ *
42
+ * @throws When an unsupported provider string is passed, or a required
43
+ * region is missing and cannot be resolved from config/defaults.
44
+ */
45
+ export declare class CloudValidationError extends AnyCloudError {
46
+ constructor(message: string);
47
+ }
48
+ /**
49
+ * Thrown when CIDR ranges overlap or are invalid.
50
+ *
51
+ * @throws When multi-cloud CIDRs would conflict (preventing peering/mesh),
52
+ * or when a CIDR string cannot be parsed.
53
+ */
54
+ export declare class CidrError extends AnyCloudError {
55
+ readonly cidrs?: ReadonlyArray<string>;
56
+ constructor(message: string, code: "CIDR_OVERLAP" | "CIDR_INVALID", cidrs?: ReadonlyArray<string>);
57
+ }
58
+ /**
59
+ * Thrown when a feature is not supported for a given cloud provider.
60
+ *
61
+ * @throws When requesting a feature that doesn't exist on the target
62
+ * cloud (e.g., EKS Auto Mode on Azure).
63
+ */
64
+ export declare class UnsupportedFeatureError extends AnyCloudError {
65
+ readonly feature: string;
66
+ readonly provider: string;
67
+ constructor(feature: string, provider: string);
68
+ }
69
+ /**
70
+ * Thrown when Pulumi config is missing or malformed.
71
+ *
72
+ * @throws When a required config value is not set in Pulumi.<stack>.yaml
73
+ * or when the config value has an unexpected shape.
74
+ */
75
+ export declare class ConfigError extends AnyCloudError {
76
+ readonly configKey?: string;
77
+ constructor(message: string, code: "CONFIG_MISSING" | "CONFIG_INVALID", configKey?: string);
78
+ }
79
+ /**
80
+ * Helper for exhaustive switch/case. Ensures all cases are handled at compile time.
81
+ *
82
+ * @param value - The value that should have been handled by a prior case
83
+ * @throws Always throws — reaching this function means a case was missed
84
+ *
85
+ * @example
86
+ * ```typescript
87
+ * switch (provider) {
88
+ * case "aws": return createEks(...);
89
+ * case "azure": return createAks(...);
90
+ * case "gcp": return createGke(...);
91
+ * default: assertNever(provider);
92
+ * }
93
+ * ```
94
+ */
95
+ export declare function assertNever(value: never): never;
96
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/types/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,yCAAyC;AACzC,eAAO,MAAM,WAAW;;;;;;;;;CASd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAEvE;;;;;;;;;;;;;GAaG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;gBAEb,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS;CAM7C;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,aAAa;gBACzC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,qBAAa,SAAU,SAAQ,aAAa;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;gBAGrC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,cAAc,GAAG,cAAc,EACrC,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC;CAMhC;AAED;;;;;GAKG;AACH,qBAAa,uBAAwB,SAAQ,aAAa;IACxD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAS9C;AAED;;;;;GAKG;AACH,qBAAa,WAAY,SAAQ,aAAa;IAC5C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEhB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,SAAS,CAAC,EAAE,MAAM;CAK3F;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAE/C"}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ /**
3
+ * Custom error classes for @reyemtech/nimbus.
4
+ *
5
+ * All errors extend AnyCloudError with a machine-readable code.
6
+ * Use discriminated error codes for programmatic handling.
7
+ *
8
+ * @module types/errors
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.ConfigError = exports.UnsupportedFeatureError = exports.CidrError = exports.CloudValidationError = exports.AnyCloudError = exports.ERROR_CODES = void 0;
12
+ exports.assertNever = assertNever;
13
+ /** Error codes for all nimbus errors. */
14
+ exports.ERROR_CODES = {
15
+ CLOUD_VALIDATION: "CLOUD_VALIDATION",
16
+ CIDR_OVERLAP: "CIDR_OVERLAP",
17
+ CIDR_INVALID: "CIDR_INVALID",
18
+ UNSUPPORTED_FEATURE: "UNSUPPORTED_FEATURE",
19
+ CONFIG_MISSING: "CONFIG_MISSING",
20
+ CONFIG_INVALID: "CONFIG_INVALID",
21
+ SECRET_NOT_FOUND: "SECRET_NOT_FOUND",
22
+ PROVIDER_MISMATCH: "PROVIDER_MISMATCH",
23
+ };
24
+ /**
25
+ * Base error for all nimbus errors.
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * try {
30
+ * createCluster("prod", { cloud: "invalid" as any });
31
+ * } catch (e) {
32
+ * if (e instanceof AnyCloudError) {
33
+ * console.log(e.code); // "CLOUD_VALIDATION"
34
+ * }
35
+ * }
36
+ * ```
37
+ */
38
+ class AnyCloudError extends Error {
39
+ code;
40
+ constructor(message, code) {
41
+ super(message);
42
+ this.name = "AnyCloudError";
43
+ this.code = code;
44
+ Object.setPrototypeOf(this, new.target.prototype);
45
+ }
46
+ }
47
+ exports.AnyCloudError = AnyCloudError;
48
+ /**
49
+ * Thrown when a cloud provider or region is invalid.
50
+ *
51
+ * @throws When an unsupported provider string is passed, or a required
52
+ * region is missing and cannot be resolved from config/defaults.
53
+ */
54
+ class CloudValidationError extends AnyCloudError {
55
+ constructor(message) {
56
+ super(message, exports.ERROR_CODES.CLOUD_VALIDATION);
57
+ this.name = "CloudValidationError";
58
+ }
59
+ }
60
+ exports.CloudValidationError = CloudValidationError;
61
+ /**
62
+ * Thrown when CIDR ranges overlap or are invalid.
63
+ *
64
+ * @throws When multi-cloud CIDRs would conflict (preventing peering/mesh),
65
+ * or when a CIDR string cannot be parsed.
66
+ */
67
+ class CidrError extends AnyCloudError {
68
+ cidrs;
69
+ constructor(message, code, cidrs) {
70
+ super(message, code);
71
+ this.name = "CidrError";
72
+ this.cidrs = cidrs;
73
+ }
74
+ }
75
+ exports.CidrError = CidrError;
76
+ /**
77
+ * Thrown when a feature is not supported for a given cloud provider.
78
+ *
79
+ * @throws When requesting a feature that doesn't exist on the target
80
+ * cloud (e.g., EKS Auto Mode on Azure).
81
+ */
82
+ class UnsupportedFeatureError extends AnyCloudError {
83
+ feature;
84
+ provider;
85
+ constructor(feature, provider) {
86
+ super(`Feature "${feature}" is not supported on provider "${provider}".`, exports.ERROR_CODES.UNSUPPORTED_FEATURE);
87
+ this.name = "UnsupportedFeatureError";
88
+ this.feature = feature;
89
+ this.provider = provider;
90
+ }
91
+ }
92
+ exports.UnsupportedFeatureError = UnsupportedFeatureError;
93
+ /**
94
+ * Thrown when Pulumi config is missing or malformed.
95
+ *
96
+ * @throws When a required config value is not set in Pulumi.<stack>.yaml
97
+ * or when the config value has an unexpected shape.
98
+ */
99
+ class ConfigError extends AnyCloudError {
100
+ configKey;
101
+ constructor(message, code, configKey) {
102
+ super(message, code);
103
+ this.name = "ConfigError";
104
+ this.configKey = configKey;
105
+ }
106
+ }
107
+ exports.ConfigError = ConfigError;
108
+ /**
109
+ * Helper for exhaustive switch/case. Ensures all cases are handled at compile time.
110
+ *
111
+ * @param value - The value that should have been handled by a prior case
112
+ * @throws Always throws — reaching this function means a case was missed
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * switch (provider) {
117
+ * case "aws": return createEks(...);
118
+ * case "azure": return createAks(...);
119
+ * case "gcp": return createGke(...);
120
+ * default: assertNever(provider);
121
+ * }
122
+ * ```
123
+ */
124
+ function assertNever(value) {
125
+ throw new UnsupportedFeatureError(`Unhandled value: ${JSON.stringify(value)}`, String(value));
126
+ }
127
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/types/errors.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AA+HH,kCAEC;AA/HD,yCAAyC;AAC5B,QAAA,WAAW,GAAG;IACzB,gBAAgB,EAAE,kBAAkB;IACpC,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,mBAAmB,EAAE,qBAAqB;IAC1C,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,gBAAgB,EAAE,kBAAkB;IACpC,iBAAiB,EAAE,mBAAmB;CAC9B,CAAC;AAIX;;;;;;;;;;;;;GAaG;AACH,MAAa,aAAc,SAAQ,KAAK;IAC7B,IAAI,CAAY;IAEzB,YAAY,OAAe,EAAE,IAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AATD,sCASC;AAED;;;;;GAKG;AACH,MAAa,oBAAqB,SAAQ,aAAa;IACrD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,mBAAW,CAAC,gBAAgB,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AALD,oDAKC;AAED;;;;;GAKG;AACH,MAAa,SAAU,SAAQ,aAAa;IACjC,KAAK,CAAyB;IAEvC,YACE,OAAe,EACf,IAAqC,EACrC,KAA6B;QAE7B,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAZD,8BAYC;AAED;;;;;GAKG;AACH,MAAa,uBAAwB,SAAQ,aAAa;IAC/C,OAAO,CAAS;IAChB,QAAQ,CAAS;IAE1B,YAAY,OAAe,EAAE,QAAgB;QAC3C,KAAK,CACH,YAAY,OAAO,mCAAmC,QAAQ,IAAI,EAClE,mBAAW,CAAC,mBAAmB,CAChC,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAbD,0DAaC;AAED;;;;;GAKG;AACH,MAAa,WAAY,SAAQ,aAAa;IACnC,SAAS,CAAU;IAE5B,YAAY,OAAe,EAAE,IAAyC,EAAE,SAAkB;QACxF,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AARD,kCAQC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,WAAW,CAAC,KAAY;IACtC,MAAM,IAAI,uBAAuB,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAChG,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shared types, interfaces, and constants for @reyemtech/nimbus.
3
+ *
4
+ * @module types
5
+ */
6
+ export { type CloudProvider, type CloudTarget, type CloudArg, type ResolvedCloudTarget, DEFAULT_REGIONS, CLOUD_PROVIDERS, isCloudProvider, isCloudTarget, resolveCloudTarget, } from "./cloud-target";
7
+ export { type ErrorCode, ERROR_CODES, AnyCloudError, CloudValidationError, CidrError, UnsupportedFeatureError, ConfigError, assertNever, } from "./errors";
8
+ export { type IRequiredTags, normalizeTags, isValidGcpLabel, mergeWithRequiredTags } from "./tags";
9
+ export { type IValidationResult, validateFeature, isFeatureSupported, validateMultiCloud, validateResourceName, assertValidMultiCloud, } from "./validation";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,mBAAmB,EACxB,eAAe,EACf,eAAe,EACf,eAAe,EACf,aAAa,EACb,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,KAAK,SAAS,EACd,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,SAAS,EACT,uBAAuB,EACvB,WAAW,EACX,WAAW,GACZ,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,KAAK,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAEnG,OAAO,EACL,KAAK,iBAAiB,EACtB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ /**
3
+ * Shared types, interfaces, and constants for @reyemtech/nimbus.
4
+ *
5
+ * @module types
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.assertValidMultiCloud = exports.validateResourceName = exports.validateMultiCloud = exports.isFeatureSupported = exports.validateFeature = exports.mergeWithRequiredTags = exports.isValidGcpLabel = exports.normalizeTags = exports.assertNever = exports.ConfigError = exports.UnsupportedFeatureError = exports.CidrError = exports.CloudValidationError = exports.AnyCloudError = exports.ERROR_CODES = exports.resolveCloudTarget = exports.isCloudTarget = exports.isCloudProvider = exports.CLOUD_PROVIDERS = exports.DEFAULT_REGIONS = void 0;
9
+ var cloud_target_1 = require("./cloud-target");
10
+ Object.defineProperty(exports, "DEFAULT_REGIONS", { enumerable: true, get: function () { return cloud_target_1.DEFAULT_REGIONS; } });
11
+ Object.defineProperty(exports, "CLOUD_PROVIDERS", { enumerable: true, get: function () { return cloud_target_1.CLOUD_PROVIDERS; } });
12
+ Object.defineProperty(exports, "isCloudProvider", { enumerable: true, get: function () { return cloud_target_1.isCloudProvider; } });
13
+ Object.defineProperty(exports, "isCloudTarget", { enumerable: true, get: function () { return cloud_target_1.isCloudTarget; } });
14
+ Object.defineProperty(exports, "resolveCloudTarget", { enumerable: true, get: function () { return cloud_target_1.resolveCloudTarget; } });
15
+ var errors_1 = require("./errors");
16
+ Object.defineProperty(exports, "ERROR_CODES", { enumerable: true, get: function () { return errors_1.ERROR_CODES; } });
17
+ Object.defineProperty(exports, "AnyCloudError", { enumerable: true, get: function () { return errors_1.AnyCloudError; } });
18
+ Object.defineProperty(exports, "CloudValidationError", { enumerable: true, get: function () { return errors_1.CloudValidationError; } });
19
+ Object.defineProperty(exports, "CidrError", { enumerable: true, get: function () { return errors_1.CidrError; } });
20
+ Object.defineProperty(exports, "UnsupportedFeatureError", { enumerable: true, get: function () { return errors_1.UnsupportedFeatureError; } });
21
+ Object.defineProperty(exports, "ConfigError", { enumerable: true, get: function () { return errors_1.ConfigError; } });
22
+ Object.defineProperty(exports, "assertNever", { enumerable: true, get: function () { return errors_1.assertNever; } });
23
+ var tags_1 = require("./tags");
24
+ Object.defineProperty(exports, "normalizeTags", { enumerable: true, get: function () { return tags_1.normalizeTags; } });
25
+ Object.defineProperty(exports, "isValidGcpLabel", { enumerable: true, get: function () { return tags_1.isValidGcpLabel; } });
26
+ Object.defineProperty(exports, "mergeWithRequiredTags", { enumerable: true, get: function () { return tags_1.mergeWithRequiredTags; } });
27
+ var validation_1 = require("./validation");
28
+ Object.defineProperty(exports, "validateFeature", { enumerable: true, get: function () { return validation_1.validateFeature; } });
29
+ Object.defineProperty(exports, "isFeatureSupported", { enumerable: true, get: function () { return validation_1.isFeatureSupported; } });
30
+ Object.defineProperty(exports, "validateMultiCloud", { enumerable: true, get: function () { return validation_1.validateMultiCloud; } });
31
+ Object.defineProperty(exports, "validateResourceName", { enumerable: true, get: function () { return validation_1.validateResourceName; } });
32
+ Object.defineProperty(exports, "assertValidMultiCloud", { enumerable: true, get: function () { return validation_1.assertValidMultiCloud; } });
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,+CAUwB;AALtB,+GAAA,eAAe,OAAA;AACf,+GAAA,eAAe,OAAA;AACf,+GAAA,eAAe,OAAA;AACf,6GAAA,aAAa,OAAA;AACb,kHAAA,kBAAkB,OAAA;AAGpB,mCASkB;AAPhB,qGAAA,WAAW,OAAA;AACX,uGAAA,aAAa,OAAA;AACb,8GAAA,oBAAoB,OAAA;AACpB,mGAAA,SAAS,OAAA;AACT,iHAAA,uBAAuB,OAAA;AACvB,qGAAA,WAAW,OAAA;AACX,qGAAA,WAAW,OAAA;AAGb,+BAAmG;AAAtE,qGAAA,aAAa,OAAA;AAAE,uGAAA,eAAe,OAAA;AAAE,6GAAA,qBAAqB,OAAA;AAElF,2CAOsB;AALpB,6GAAA,eAAe,OAAA;AACf,gHAAA,kBAAkB,OAAA;AAClB,gHAAA,kBAAkB,OAAA;AAClB,kHAAA,oBAAoB,OAAA;AACpB,mHAAA,qBAAqB,OAAA"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Cross-cloud tagging strategy for @reyemtech/nimbus.
3
+ *
4
+ * Normalizes tags/labels across AWS, Azure, and GCP.
5
+ * GCP has strict label requirements: lowercase, no special chars, max 63 chars.
6
+ *
7
+ * @module types/tags
8
+ */
9
+ import type { CloudProvider } from "./cloud-target";
10
+ /** Required tags applied to every resource. */
11
+ export interface IRequiredTags {
12
+ readonly environment: string;
13
+ readonly client: string;
14
+ readonly costCenter: string;
15
+ readonly managedBy: "nimbus";
16
+ }
17
+ /**
18
+ * Normalize tags for a specific cloud provider.
19
+ *
20
+ * - **AWS:** Tags pass through as-is (supports most characters).
21
+ * - **Azure:** Tags pass through as-is (supports most characters).
22
+ * - **GCP:** Labels are lowercased, special chars replaced with hyphens,
23
+ * truncated to 63 chars, and must start with a lowercase letter.
24
+ *
25
+ * @param tags - Raw tags to normalize
26
+ * @param provider - Target cloud provider
27
+ * @returns Normalized tags for the provider
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const tags = { Environment: "Production", "Cost-Center": "Engineering" };
32
+ * normalizeTags(tags, "gcp");
33
+ * // { environment: "production", cost-center: "engineering" }
34
+ * ```
35
+ */
36
+ export declare function normalizeTags(tags: Readonly<Record<string, string>>, provider: CloudProvider): Record<string, string>;
37
+ /**
38
+ * Validate that a GCP label key or value is compliant.
39
+ *
40
+ * @param value - Label string to validate
41
+ * @returns True if the label is valid for GCP
42
+ */
43
+ export declare function isValidGcpLabel(value: string): boolean;
44
+ /**
45
+ * Merge required tags with user-provided tags.
46
+ * Required tags take precedence for the `managedBy` key.
47
+ *
48
+ * @param required - Required tag values
49
+ * @param userTags - User-provided additional tags
50
+ * @returns Merged tag set
51
+ */
52
+ export declare function mergeWithRequiredTags(required: Omit<IRequiredTags, "managedBy">, userTags?: Readonly<Record<string, string>>): Record<string, string>;
53
+ //# sourceMappingURL=tags.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ /**
3
+ * Cross-cloud tagging strategy for @reyemtech/nimbus.
4
+ *
5
+ * Normalizes tags/labels across AWS, Azure, and GCP.
6
+ * GCP has strict label requirements: lowercase, no special chars, max 63 chars.
7
+ *
8
+ * @module types/tags
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.normalizeTags = normalizeTags;
12
+ exports.isValidGcpLabel = isValidGcpLabel;
13
+ exports.mergeWithRequiredTags = mergeWithRequiredTags;
14
+ /** Maximum label key/value length for GCP. */
15
+ const GCP_LABEL_MAX_LENGTH = 63;
16
+ /** Regex for valid GCP label characters (lowercase letters, numbers, hyphens, underscores). */
17
+ const GCP_LABEL_REGEX = /^[a-z][a-z0-9_-]*$/;
18
+ /**
19
+ * Normalize tags for a specific cloud provider.
20
+ *
21
+ * - **AWS:** Tags pass through as-is (supports most characters).
22
+ * - **Azure:** Tags pass through as-is (supports most characters).
23
+ * - **GCP:** Labels are lowercased, special chars replaced with hyphens,
24
+ * truncated to 63 chars, and must start with a lowercase letter.
25
+ *
26
+ * @param tags - Raw tags to normalize
27
+ * @param provider - Target cloud provider
28
+ * @returns Normalized tags for the provider
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * const tags = { Environment: "Production", "Cost-Center": "Engineering" };
33
+ * normalizeTags(tags, "gcp");
34
+ * // { environment: "production", cost-center: "engineering" }
35
+ * ```
36
+ */
37
+ function normalizeTags(tags, provider) {
38
+ if (provider !== "gcp") {
39
+ return { ...tags };
40
+ }
41
+ const normalized = {};
42
+ for (const [key, value] of Object.entries(tags)) {
43
+ const normalizedKey = normalizeGcpLabelKey(key);
44
+ const normalizedValue = normalizeGcpLabelValue(value);
45
+ if (normalizedKey in normalized) {
46
+ console.warn(`[nimbus] GCP label key collision: "${key}" normalizes to "${normalizedKey}" which already exists. Skipping.`);
47
+ continue;
48
+ }
49
+ normalized[normalizedKey] = normalizedValue;
50
+ }
51
+ return normalized;
52
+ }
53
+ /**
54
+ * Normalize a string to a valid GCP label key.
55
+ * Keys must start with a lowercase letter.
56
+ */
57
+ function normalizeGcpLabelKey(value) {
58
+ let label = value
59
+ .toLowerCase()
60
+ .replace(/[^a-z0-9_-]/g, "-")
61
+ .replace(/^[^a-z]/, "l$&")
62
+ .replace(/-+/g, "-")
63
+ .replace(/-$/, "");
64
+ if (label.length > GCP_LABEL_MAX_LENGTH) {
65
+ label = label.substring(0, GCP_LABEL_MAX_LENGTH);
66
+ }
67
+ return label;
68
+ }
69
+ /**
70
+ * Normalize a string to a valid GCP label value.
71
+ * Values can start with any valid character (including digits).
72
+ */
73
+ function normalizeGcpLabelValue(value) {
74
+ let label = value
75
+ .toLowerCase()
76
+ .replace(/[^a-z0-9_-]/g, "-")
77
+ .replace(/-+/g, "-")
78
+ .replace(/-$/, "");
79
+ if (label.length > GCP_LABEL_MAX_LENGTH) {
80
+ label = label.substring(0, GCP_LABEL_MAX_LENGTH);
81
+ }
82
+ return label;
83
+ }
84
+ /**
85
+ * Validate that a GCP label key or value is compliant.
86
+ *
87
+ * @param value - Label string to validate
88
+ * @returns True if the label is valid for GCP
89
+ */
90
+ function isValidGcpLabel(value) {
91
+ return value.length > 0 && value.length <= GCP_LABEL_MAX_LENGTH && GCP_LABEL_REGEX.test(value);
92
+ }
93
+ /**
94
+ * Merge required tags with user-provided tags.
95
+ * Required tags take precedence for the `managedBy` key.
96
+ *
97
+ * @param required - Required tag values
98
+ * @param userTags - User-provided additional tags
99
+ * @returns Merged tag set
100
+ */
101
+ function mergeWithRequiredTags(required, userTags) {
102
+ return {
103
+ ...userTags,
104
+ environment: required.environment,
105
+ client: required.client,
106
+ costCenter: required.costCenter,
107
+ managedBy: "nimbus",
108
+ };
109
+ }
110
+ //# sourceMappingURL=tags.js.map
@@ -0,0 +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"}