@caelo-cms/provisioning 0.10.47 → 0.10.48

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 (315) hide show
  1. package/dist/agent/apply.d.ts +45 -0
  2. package/dist/agent/apply.d.ts.map +1 -0
  3. package/dist/agent/apply.js +83 -0
  4. package/dist/agent/apply.js.map +1 -0
  5. package/dist/agent/cli-provenance.d.ts +42 -0
  6. package/dist/agent/cli-provenance.d.ts.map +1 -0
  7. package/dist/agent/cli-provenance.js +138 -0
  8. package/dist/agent/cli-provenance.js.map +1 -0
  9. package/dist/agent/command.d.ts +79 -0
  10. package/dist/agent/command.d.ts.map +1 -0
  11. package/dist/agent/command.js +454 -0
  12. package/dist/agent/command.js.map +1 -0
  13. package/dist/agent/config.d.ts +30 -0
  14. package/dist/agent/config.d.ts.map +1 -0
  15. package/dist/agent/config.js +60 -0
  16. package/dist/agent/config.js.map +1 -0
  17. package/dist/agent/lock.d.ts +13 -0
  18. package/dist/agent/lock.d.ts.map +1 -0
  19. package/dist/agent/lock.js +100 -0
  20. package/dist/agent/lock.js.map +1 -0
  21. package/dist/agent/queue.d.ts +35 -0
  22. package/dist/agent/queue.d.ts.map +1 -0
  23. package/dist/agent/queue.js +50 -0
  24. package/dist/agent/queue.js.map +1 -0
  25. package/dist/agent/run.d.ts +97 -0
  26. package/dist/agent/run.d.ts.map +1 -0
  27. package/dist/agent/run.js +198 -0
  28. package/dist/agent/run.js.map +1 -0
  29. package/dist/agent/systemd.d.ts +55 -0
  30. package/dist/agent/systemd.d.ts.map +1 -0
  31. package/dist/agent/systemd.js +171 -0
  32. package/dist/agent/systemd.js.map +1 -0
  33. package/dist/agent/units.d.ts +44 -0
  34. package/dist/agent/units.d.ts.map +1 -0
  35. package/dist/agent/units.js +127 -0
  36. package/dist/agent/units.js.map +1 -0
  37. package/dist/agent-db.js +18362 -0
  38. package/dist/cli.js +119 -16
  39. package/dist/cli.js.map +1 -1
  40. package/dist/cloudsql-iam-user.d.ts +39 -0
  41. package/dist/cloudsql-iam-user.d.ts.map +1 -0
  42. package/dist/cloudsql-iam-user.js +119 -0
  43. package/dist/cloudsql-iam-user.js.map +1 -0
  44. package/dist/compose.d.ts +16 -0
  45. package/dist/compose.d.ts.map +1 -1
  46. package/dist/compose.js +26 -1
  47. package/dist/compose.js.map +1 -1
  48. package/dist/dns/index.d.ts +2 -0
  49. package/dist/dns/index.d.ts.map +1 -1
  50. package/dist/dns/index.js +3 -2
  51. package/dist/dns/index.js.map +1 -1
  52. package/dist/dns/manual.d.ts +5 -0
  53. package/dist/dns/manual.d.ts.map +1 -1
  54. package/dist/dns/manual.js +28 -12
  55. package/dist/dns/manual.js.map +1 -1
  56. package/dist/gcloud.d.ts +2 -0
  57. package/dist/gcloud.d.ts.map +1 -1
  58. package/dist/gcloud.js +1 -1
  59. package/dist/gcloud.js.map +1 -1
  60. package/dist/gcp-names.d.ts +15 -0
  61. package/dist/gcp-names.d.ts.map +1 -1
  62. package/dist/gcp-names.js +23 -0
  63. package/dist/gcp-names.js.map +1 -1
  64. package/dist/index.d.ts +6 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +4 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/infra-contract.d.ts +1 -1
  69. package/dist/infra-contract.js +7 -1
  70. package/dist/infra-contract.js.map +1 -1
  71. package/dist/install-job-runner.d.ts +13 -0
  72. package/dist/install-job-runner.d.ts.map +1 -0
  73. package/dist/install-job-runner.js +155 -0
  74. package/dist/install-job-runner.js.map +1 -0
  75. package/dist/install-job.d.ts +210 -0
  76. package/dist/install-job.d.ts.map +1 -0
  77. package/dist/install-job.js +449 -0
  78. package/dist/install-job.js.map +1 -0
  79. package/dist/install-state.d.ts +10 -1
  80. package/dist/install-state.d.ts.map +1 -1
  81. package/dist/install-state.js +10 -2
  82. package/dist/install-state.js.map +1 -1
  83. package/dist/lifecycle.d.ts.map +1 -1
  84. package/dist/lifecycle.js +19 -4
  85. package/dist/lifecycle.js.map +1 -1
  86. package/dist/migration-runner.d.ts +5 -0
  87. package/dist/migration-runner.d.ts.map +1 -1
  88. package/dist/migration-runner.js +1 -1
  89. package/dist/migration-runner.js.map +1 -1
  90. package/dist/operator-access.d.ts +14 -8
  91. package/dist/operator-access.d.ts.map +1 -1
  92. package/dist/operator-access.js +16 -102
  93. package/dist/operator-access.js.map +1 -1
  94. package/dist/run-mode.d.ts +27 -0
  95. package/dist/run-mode.d.ts.map +1 -0
  96. package/dist/run-mode.js +22 -0
  97. package/dist/run-mode.js.map +1 -0
  98. package/dist/runtime-secrets.d.ts +19 -0
  99. package/dist/runtime-secrets.d.ts.map +1 -1
  100. package/dist/runtime-secrets.js +44 -0
  101. package/dist/runtime-secrets.js.map +1 -1
  102. package/dist/self-hosted-roles.d.ts +22 -1
  103. package/dist/self-hosted-roles.d.ts.map +1 -1
  104. package/dist/self-hosted-roles.js +81 -12
  105. package/dist/self-hosted-roles.js.map +1 -1
  106. package/dist/self-hosted-upgrade.d.ts +17 -0
  107. package/dist/self-hosted-upgrade.d.ts.map +1 -1
  108. package/dist/self-hosted-upgrade.js +16 -1
  109. package/dist/self-hosted-upgrade.js.map +1 -1
  110. package/dist/stack-contract.d.ts +6 -0
  111. package/dist/stack-contract.d.ts.map +1 -1
  112. package/dist/stack-contract.js +10 -1
  113. package/dist/stack-contract.js.map +1 -1
  114. package/dist/upgrade/converge.d.ts +6 -0
  115. package/dist/upgrade/converge.d.ts.map +1 -1
  116. package/dist/upgrade/converge.js +59 -2
  117. package/dist/upgrade/converge.js.map +1 -1
  118. package/dist/upgrade/gcp-lookup.d.ts +6 -0
  119. package/dist/upgrade/gcp-lookup.d.ts.map +1 -1
  120. package/dist/upgrade/gcp-lookup.js +25 -0
  121. package/dist/upgrade/gcp-lookup.js.map +1 -1
  122. package/dist/upgrade/release-images.d.ts +12 -0
  123. package/dist/upgrade/release-images.d.ts.map +1 -1
  124. package/dist/upgrade/release-images.js +31 -0
  125. package/dist/upgrade/release-images.js.map +1 -1
  126. package/dist/upgrade/upgrade.d.ts +5 -0
  127. package/dist/upgrade/upgrade.d.ts.map +1 -1
  128. package/dist/upgrade/upgrade.js +28 -1
  129. package/dist/upgrade/upgrade.js.map +1 -1
  130. package/dist/upgrader-assess.d.ts +82 -0
  131. package/dist/upgrader-assess.d.ts.map +1 -0
  132. package/dist/upgrader-assess.js +116 -0
  133. package/dist/upgrader-assess.js.map +1 -0
  134. package/dist/upgrader-gcp.d.ts +17 -0
  135. package/dist/upgrader-gcp.d.ts.map +1 -0
  136. package/dist/upgrader-gcp.js +87 -0
  137. package/dist/upgrader-gcp.js.map +1 -0
  138. package/dist/upgrader-job.d.ts +131 -0
  139. package/dist/upgrader-job.d.ts.map +1 -0
  140. package/dist/upgrader-job.js +259 -0
  141. package/dist/upgrader-job.js.map +1 -0
  142. package/dist/upgrader-reporter.d.ts +35 -0
  143. package/dist/upgrader-reporter.d.ts.map +1 -0
  144. package/dist/upgrader-reporter.js +79 -0
  145. package/dist/upgrader-reporter.js.map +1 -0
  146. package/dist/upgrader-setup.d.ts +59 -0
  147. package/dist/upgrader-setup.d.ts.map +1 -0
  148. package/dist/upgrader-setup.js +308 -0
  149. package/dist/upgrader-setup.js.map +1 -0
  150. package/dist/wizard.d.ts +6 -0
  151. package/dist/wizard.d.ts.map +1 -1
  152. package/dist/wizard.js +32 -4
  153. package/dist/wizard.js.map +1 -1
  154. package/dist/wizards/gcp-firebase.d.ts +3 -0
  155. package/dist/wizards/gcp-firebase.d.ts.map +1 -1
  156. package/dist/wizards/gcp-firebase.js +1 -0
  157. package/dist/wizards/gcp-firebase.js.map +1 -1
  158. package/dist/wizards/gcp-install-job.d.ts +74 -0
  159. package/dist/wizards/gcp-install-job.d.ts.map +1 -0
  160. package/dist/wizards/gcp-install-job.js +398 -0
  161. package/dist/wizards/gcp-install-job.js.map +1 -0
  162. package/dist/wizards/gcp-prompts.d.ts +3 -0
  163. package/dist/wizards/gcp-prompts.d.ts.map +1 -0
  164. package/dist/wizards/gcp-prompts.js +25 -0
  165. package/dist/wizards/gcp-prompts.js.map +1 -0
  166. package/dist/wizards/gcp-pulumi.d.ts +4 -2
  167. package/dist/wizards/gcp-pulumi.d.ts.map +1 -1
  168. package/dist/wizards/gcp-pulumi.js +1 -1
  169. package/dist/wizards/gcp-pulumi.js.map +1 -1
  170. package/dist/wizards/gcp.d.ts +40 -0
  171. package/dist/wizards/gcp.d.ts.map +1 -1
  172. package/dist/wizards/gcp.js +223 -59
  173. package/dist/wizards/gcp.js.map +1 -1
  174. package/package.json +6 -4
  175. package/src/adapter.ts +97 -0
  176. package/src/adc-impersonation.ts +176 -0
  177. package/src/admin-domain.test.ts +254 -0
  178. package/src/admin-domain.ts +245 -0
  179. package/src/admin-memory.test.ts +151 -0
  180. package/src/agent/apply.test.ts +185 -0
  181. package/src/agent/apply.ts +124 -0
  182. package/src/agent/cli-provenance.test.ts +159 -0
  183. package/src/agent/cli-provenance.ts +191 -0
  184. package/src/agent/command.test.ts +77 -0
  185. package/src/agent/command.ts +564 -0
  186. package/src/agent/config.ts +86 -0
  187. package/src/agent/lock-config.test.ts +97 -0
  188. package/src/agent/lock.ts +110 -0
  189. package/src/agent/queue.test.ts +10 -0
  190. package/src/agent/queue.ts +91 -0
  191. package/src/agent/run.test.ts +382 -0
  192. package/src/agent/run.ts +295 -0
  193. package/src/agent/systemd.ts +209 -0
  194. package/src/agent/units.test.ts +223 -0
  195. package/src/agent/units.ts +163 -0
  196. package/src/azure-front-door.test.ts +119 -0
  197. package/src/azure-front-door.ts +56 -0
  198. package/src/bootstrap-token.ts +20 -0
  199. package/src/caddy.ts +112 -0
  200. package/src/cdn-copy.ts +91 -0
  201. package/src/cert-wait.test.ts +194 -0
  202. package/src/cert-wait.ts +163 -0
  203. package/src/checkpoint-secrets.test.ts +380 -0
  204. package/src/checkpoint-secrets.ts +283 -0
  205. package/src/cli-routing.test.ts +45 -0
  206. package/src/cli-routing.ts +43 -0
  207. package/src/cli.ts +1491 -0
  208. package/src/cloudsql-iam-user.ts +147 -0
  209. package/src/compose.ts +334 -0
  210. package/src/default-firewall.test.ts +411 -0
  211. package/src/default-firewall.ts +342 -0
  212. package/src/deployed-release.test.ts +231 -0
  213. package/src/deployed-release.ts +220 -0
  214. package/src/dns/cloudflare.ts +182 -0
  215. package/src/dns/groups.test.ts +76 -0
  216. package/src/dns/groups.ts +86 -0
  217. package/src/dns/index.ts +56 -0
  218. package/src/dns/manual.ts +130 -0
  219. package/src/dns/types.ts +27 -0
  220. package/src/gateway-credentials.test.ts +180 -0
  221. package/src/gateway-credentials.ts +144 -0
  222. package/src/gcloud-components.test.ts +76 -0
  223. package/src/gcloud-components.ts +85 -0
  224. package/src/gcloud-retry.ts +41 -0
  225. package/src/gcloud-runner.test.ts +61 -0
  226. package/src/gcloud.test.ts +99 -0
  227. package/src/gcloud.ts +322 -0
  228. package/src/gcp-names.ts +135 -0
  229. package/src/index.test.ts +332 -0
  230. package/src/index.ts +114 -0
  231. package/src/infra-contract.ts +32 -0
  232. package/src/install-job-runner.ts +166 -0
  233. package/src/install-job.test.ts +566 -0
  234. package/src/install-job.ts +542 -0
  235. package/src/install-state.test.ts +239 -0
  236. package/src/install-state.ts +583 -0
  237. package/src/internal-token.ts +35 -0
  238. package/src/lifecycle.ts +900 -0
  239. package/src/mcp-iap-stacks.test.ts +58 -0
  240. package/src/mcp-iap.test.ts +149 -0
  241. package/src/mcp-iap.ts +131 -0
  242. package/src/media-volume.test.ts +296 -0
  243. package/src/migration-runner.ts +365 -0
  244. package/src/operator-access-stacks.test.ts +55 -0
  245. package/src/operator-access.test.ts +332 -0
  246. package/src/operator-access.ts +554 -0
  247. package/src/ops-backend.test.ts +320 -0
  248. package/src/ops-backend.ts +414 -0
  249. package/src/provisioner-identity.test.ts +482 -0
  250. package/src/provisioner-identity.ts +407 -0
  251. package/src/redirects-emit.ts +175 -0
  252. package/src/region-data.ts +428 -0
  253. package/src/regions.test.ts +277 -0
  254. package/src/regions.ts +370 -0
  255. package/src/release-contract.ts +57 -0
  256. package/src/release-manifest.test.ts +293 -0
  257. package/src/release-manifest.ts +430 -0
  258. package/src/run-mode.ts +40 -0
  259. package/src/runtime-secrets.test.ts +627 -0
  260. package/src/runtime-secrets.ts +754 -0
  261. package/src/self-command.test.ts +14 -0
  262. package/src/self-command.ts +21 -0
  263. package/src/self-hosted-compose.test.ts +177 -0
  264. package/src/self-hosted-release.ts +240 -0
  265. package/src/self-hosted-roles.integration.test.ts +161 -0
  266. package/src/self-hosted-roles.test.ts +124 -0
  267. package/src/self-hosted-roles.ts +203 -0
  268. package/src/self-hosted-upgrade.test.ts +394 -0
  269. package/src/self-hosted-upgrade.ts +548 -0
  270. package/src/stack-contract-parity.test.ts +199 -0
  271. package/src/stack-contract.test.ts +391 -0
  272. package/src/stack-contract.ts +888 -0
  273. package/src/stack-converge-secrets.test.ts +421 -0
  274. package/src/stack-converge.test.ts +833 -0
  275. package/src/stack-converge.ts +909 -0
  276. package/src/staging-admin.test.ts +246 -0
  277. package/src/staging-admin.ts +324 -0
  278. package/src/state-attach.test.ts +211 -0
  279. package/src/state-attach.ts +132 -0
  280. package/src/state-backend.test.ts +145 -0
  281. package/src/state-backend.ts +262 -0
  282. package/src/state-command.ts +293 -0
  283. package/src/state-migrate.test.ts +479 -0
  284. package/src/state-migrate.ts +434 -0
  285. package/src/state-pulumi.ts +289 -0
  286. package/src/state-store.test.ts +212 -0
  287. package/src/state-store.ts +243 -0
  288. package/src/upgrade/app-roll.ts +486 -0
  289. package/src/upgrade/backup.ts +109 -0
  290. package/src/upgrade/converge.ts +437 -0
  291. package/src/upgrade/gcp-lookup.ts +167 -0
  292. package/src/upgrade/health.test.ts +279 -0
  293. package/src/upgrade/health.ts +305 -0
  294. package/src/upgrade/release-images.test.ts +119 -0
  295. package/src/upgrade/release-images.ts +391 -0
  296. package/src/upgrade/reporter.ts +46 -0
  297. package/src/upgrade/upgrade.test.ts +626 -0
  298. package/src/upgrade/upgrade.ts +249 -0
  299. package/src/upgrader-assess.test.ts +265 -0
  300. package/src/upgrader-assess.ts +233 -0
  301. package/src/upgrader-gcp.ts +123 -0
  302. package/src/upgrader-job.test.ts +408 -0
  303. package/src/upgrader-job.ts +499 -0
  304. package/src/upgrader-reporter.test.ts +46 -0
  305. package/src/upgrader-reporter.ts +105 -0
  306. package/src/upgrader-setup.test.ts +169 -0
  307. package/src/upgrader-setup.ts +355 -0
  308. package/src/wizard.ts +425 -0
  309. package/src/wizards/gcp-cost.ts +188 -0
  310. package/src/wizards/gcp-firebase.ts +72 -0
  311. package/src/wizards/gcp-install-job.ts +506 -0
  312. package/src/wizards/gcp-prompts.ts +26 -0
  313. package/src/wizards/gcp-pulumi.test.ts +246 -0
  314. package/src/wizards/gcp-pulumi.ts +516 -0
  315. package/src/wizards/gcp.ts +1935 -0
@@ -0,0 +1,428 @@
1
+ // SPDX-License-Identifier: MPL-2.0
2
+
3
+ /**
4
+ * Where each cloud service the provider adapters need is offered — the data
5
+ * behind the region catalogs in regions.ts (#607). Every list cites the
6
+ * provider documentation it was copied from; update it from there (and
7
+ * re-run regions.test.ts) when a provider adds regions.
8
+ */
9
+
10
+ /** One installable region. */
11
+ export interface RegionOption {
12
+ readonly id: string;
13
+ /** Human-readable location, for the picker. */
14
+ readonly name: string;
15
+ }
16
+
17
+ // ===========================================================================
18
+ // GCP — per-service region lists (checked 2026-10)
19
+ // ===========================================================================
20
+
21
+ export const GCP_REGION_NAMES: Readonly<Record<string, string>> = {
22
+ "africa-south1": "Johannesburg",
23
+ "asia-east1": "Taiwan",
24
+ "asia-east2": "Hong Kong",
25
+ "asia-northeast1": "Tokyo",
26
+ "asia-northeast2": "Osaka",
27
+ "asia-northeast3": "Seoul",
28
+ "asia-south1": "Mumbai",
29
+ "asia-south2": "Delhi",
30
+ "asia-southeast1": "Singapore",
31
+ "asia-southeast2": "Jakarta",
32
+ "asia-southeast3": "Bangkok",
33
+ "australia-southeast1": "Sydney",
34
+ "australia-southeast2": "Melbourne",
35
+ "europe-central2": "Warsaw",
36
+ "europe-north1": "Finland",
37
+ "europe-north2": "Stockholm",
38
+ "europe-southwest1": "Madrid",
39
+ "europe-west1": "Belgium",
40
+ "europe-west2": "London",
41
+ "europe-west3": "Frankfurt",
42
+ "europe-west4": "Netherlands",
43
+ "europe-west6": "Zurich",
44
+ "europe-west8": "Milan",
45
+ "europe-west9": "Paris",
46
+ "europe-west10": "Berlin",
47
+ "europe-west12": "Turin",
48
+ "me-central1": "Doha",
49
+ "me-central2": "Dammam",
50
+ "me-west1": "Tel Aviv",
51
+ "northamerica-northeast1": "Montréal",
52
+ "northamerica-northeast2": "Toronto",
53
+ "northamerica-south1": "Mexico",
54
+ "southamerica-east1": "São Paulo",
55
+ "southamerica-west1": "Santiago",
56
+ "us-central1": "Iowa",
57
+ "us-east1": "South Carolina",
58
+ "us-east4": "Northern Virginia",
59
+ "us-east5": "Columbus",
60
+ "us-south1": "Dallas",
61
+ "us-west1": "Oregon",
62
+ "us-west2": "Los Angeles",
63
+ "us-west3": "Salt Lake City",
64
+ "us-west4": "Las Vegas",
65
+ };
66
+
67
+ /**
68
+ * Where each regional GCP service the stacks and the CLI use is offered.
69
+ * Global services (load balancer, Cloud CDN, Cloud Armor, IAP, Firebase
70
+ * Hosting) don't constrain the region and are not listed.
71
+ */
72
+ export const GCP_SERVICE_REGIONS: Readonly<Record<string, readonly string[]>> = {
73
+ // https://docs.cloud.google.com/run/docs/locations
74
+ "Cloud Run": [
75
+ "asia-east1",
76
+ "asia-northeast1",
77
+ "asia-northeast2",
78
+ "asia-south1",
79
+ "asia-southeast3",
80
+ "europe-north1",
81
+ "europe-north2",
82
+ "europe-southwest1",
83
+ "europe-west1",
84
+ "europe-west4",
85
+ "europe-west8",
86
+ "europe-west9",
87
+ "me-west1",
88
+ "northamerica-south1",
89
+ "us-central1",
90
+ "us-east1",
91
+ "us-east4",
92
+ "us-east5",
93
+ "us-south1",
94
+ "us-west1",
95
+ "africa-south1",
96
+ "asia-east2",
97
+ "asia-northeast3",
98
+ "asia-southeast1",
99
+ "asia-southeast2",
100
+ "asia-south2",
101
+ "australia-southeast1",
102
+ "australia-southeast2",
103
+ "europe-central2",
104
+ "europe-west10",
105
+ "europe-west12",
106
+ "europe-west2",
107
+ "europe-west3",
108
+ "europe-west6",
109
+ "me-central1",
110
+ "me-central2",
111
+ "northamerica-northeast1",
112
+ "northamerica-northeast2",
113
+ "southamerica-east1",
114
+ "southamerica-west1",
115
+ "us-west2",
116
+ "us-west3",
117
+ "us-west4",
118
+ ],
119
+ // https://docs.cloud.google.com/sql/docs/postgres/locations
120
+ "Cloud SQL": [
121
+ "africa-south1",
122
+ "asia-east1",
123
+ "asia-east2",
124
+ "asia-northeast1",
125
+ "asia-northeast2",
126
+ "asia-northeast3",
127
+ "asia-south1",
128
+ "asia-south2",
129
+ "asia-southeast1",
130
+ "asia-southeast2",
131
+ "australia-southeast1",
132
+ "australia-southeast2",
133
+ "europe-central2",
134
+ "europe-north1",
135
+ "europe-southwest1",
136
+ "europe-west1",
137
+ "europe-west2",
138
+ "europe-west3",
139
+ "europe-west4",
140
+ "europe-west6",
141
+ "europe-west8",
142
+ "europe-west9",
143
+ "europe-west10",
144
+ "europe-west12",
145
+ "me-central1",
146
+ "me-central2",
147
+ "me-west1",
148
+ "northamerica-northeast1",
149
+ "northamerica-northeast2",
150
+ "northamerica-south1",
151
+ "us-central1",
152
+ "us-south1",
153
+ "us-east1",
154
+ "us-east4",
155
+ "us-east5",
156
+ "us-west1",
157
+ "us-west2",
158
+ "us-west3",
159
+ "us-west4",
160
+ "southamerica-east1",
161
+ "southamerica-west1",
162
+ ],
163
+ // https://docs.cloud.google.com/secret-manager/docs/locations — the stacks
164
+ // replicate secrets user-managed into the install region.
165
+ "Secret Manager": [
166
+ "asia-south2",
167
+ "asia-east2",
168
+ "asia-southeast2",
169
+ "australia-southeast2",
170
+ "asia-south1",
171
+ "asia-northeast2",
172
+ "asia-northeast3",
173
+ "asia-southeast1",
174
+ "australia-southeast1",
175
+ "asia-east1",
176
+ "asia-northeast1",
177
+ "asia-southeast3",
178
+ "europe-west1",
179
+ "europe-west10",
180
+ "europe-north1",
181
+ "europe-north2",
182
+ "europe-west3",
183
+ "europe-west2",
184
+ "europe-southwest1",
185
+ "europe-west8",
186
+ "europe-west4",
187
+ "europe-west12",
188
+ "europe-west9",
189
+ "europe-central2",
190
+ "europe-west6",
191
+ "us-central1",
192
+ "us-west4",
193
+ "us-west2",
194
+ "northamerica-south1",
195
+ "northamerica-northeast1",
196
+ "us-east4",
197
+ "us-west1",
198
+ "us-west3",
199
+ "us-east1",
200
+ "northamerica-northeast2",
201
+ "us-east5",
202
+ "us-south1",
203
+ "southamerica-east1",
204
+ "southamerica-west1",
205
+ "me-central2",
206
+ "me-central1",
207
+ "me-west1",
208
+ "africa-south1",
209
+ ],
210
+ // https://docs.cloud.google.com/artifact-registry/docs/repositories/repo-locations
211
+ "Artifact Registry": [
212
+ "northamerica-northeast1",
213
+ "northamerica-northeast2",
214
+ "northamerica-south1",
215
+ "us-central1",
216
+ "us-east1",
217
+ "us-east4",
218
+ "us-east5",
219
+ "us-south1",
220
+ "us-west1",
221
+ "us-west2",
222
+ "us-west3",
223
+ "us-west4",
224
+ "southamerica-east1",
225
+ "southamerica-west1",
226
+ "europe-central2",
227
+ "europe-north1",
228
+ "europe-north2",
229
+ "europe-southwest1",
230
+ "europe-west1",
231
+ "europe-west2",
232
+ "europe-west3",
233
+ "europe-west4",
234
+ "europe-west6",
235
+ "europe-west8",
236
+ "europe-west9",
237
+ "europe-west10",
238
+ "europe-west12",
239
+ "me-central1",
240
+ "me-central2",
241
+ "me-west1",
242
+ "asia-east1",
243
+ "asia-east2",
244
+ "asia-northeast1",
245
+ "asia-northeast2",
246
+ "asia-northeast3",
247
+ "asia-south1",
248
+ "asia-south2",
249
+ "asia-southeast1",
250
+ "asia-southeast2",
251
+ "asia-southeast3",
252
+ "australia-southeast1",
253
+ "australia-southeast2",
254
+ "africa-south1",
255
+ ],
256
+ // https://docs.cloud.google.com/scheduler/docs/locations — the hourly
257
+ // operator-access sync (operator-access.ts) schedules in the install region.
258
+ "Cloud Scheduler": [
259
+ "northamerica-northeast1",
260
+ "northamerica-northeast2",
261
+ "southamerica-east1",
262
+ "us-central1",
263
+ "us-east1",
264
+ "us-east4",
265
+ "us-south1",
266
+ "us-west1",
267
+ "us-west2",
268
+ "us-west3",
269
+ "us-west4",
270
+ "europe-central2",
271
+ "europe-west1",
272
+ "europe-west2",
273
+ "europe-west3",
274
+ "europe-west4",
275
+ "europe-west6",
276
+ "europe-west8",
277
+ "europe-west9",
278
+ "europe-west12",
279
+ "asia-east1",
280
+ "asia-east2",
281
+ "asia-northeast1",
282
+ "asia-northeast2",
283
+ "asia-northeast3",
284
+ "asia-south1",
285
+ "asia-south2",
286
+ "asia-southeast1",
287
+ "asia-southeast2",
288
+ "asia-southeast3",
289
+ "australia-southeast1",
290
+ "me-central1",
291
+ "me-central2",
292
+ "me-west1",
293
+ ],
294
+ // https://docs.cloud.google.com/run/docs/mapping-custom-domains#limitations —
295
+ // gcp-firebase serves admin.<domain> through a Cloud Run domain mapping.
296
+ "Cloud Run domain mapping": [
297
+ "asia-east1",
298
+ "asia-northeast1",
299
+ "asia-southeast1",
300
+ "europe-north1",
301
+ "europe-west1",
302
+ "europe-west4",
303
+ "us-central1",
304
+ "us-east1",
305
+ "us-east4",
306
+ "us-west1",
307
+ ],
308
+ };
309
+
310
+ /**
311
+ * Regions Google offers only under special terms, so they are never offered
312
+ * as a general install target even though the services exist there:
313
+ * me-central2 (Dammam) is for KSA customers through Google's designated
314
+ * reseller (https://docs.cloud.google.com/docs/dammam-region-access).
315
+ */
316
+ export const GCP_RESTRICTED_REGIONS: readonly string[] = ["me-central2"];
317
+
318
+ export const GCP_SERVICES = [
319
+ "Cloud Run",
320
+ "Cloud SQL",
321
+ "Secret Manager",
322
+ "Artifact Registry",
323
+ "Cloud Scheduler",
324
+ ] as const;
325
+
326
+ // ===========================================================================
327
+ // AWS — https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate-Regions.html
328
+ // Fargate is the narrowest service the stack uses; RDS for PostgreSQL, S3,
329
+ // Secrets Manager and ACM are offered in every commercial region
330
+ // (https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/).
331
+ // GovCloud and China partitions are out of scope.
332
+ // ===========================================================================
333
+
334
+ export const AWS_REGIONS: readonly RegionOption[] = [
335
+ { id: "us-east-1", name: "N. Virginia" },
336
+ { id: "us-east-2", name: "Ohio" },
337
+ { id: "us-west-1", name: "N. California" },
338
+ { id: "us-west-2", name: "Oregon" },
339
+ { id: "ca-central-1", name: "Canada Central" },
340
+ { id: "ca-west-1", name: "Calgary" },
341
+ { id: "mx-central-1", name: "Mexico Central" },
342
+ { id: "sa-east-1", name: "São Paulo" },
343
+ { id: "eu-central-1", name: "Frankfurt" },
344
+ { id: "eu-central-2", name: "Zurich" },
345
+ { id: "eu-west-1", name: "Ireland" },
346
+ { id: "eu-west-2", name: "London" },
347
+ { id: "eu-west-3", name: "Paris" },
348
+ { id: "eu-south-1", name: "Milan" },
349
+ { id: "eu-south-2", name: "Spain" },
350
+ { id: "eu-north-1", name: "Stockholm" },
351
+ { id: "af-south-1", name: "Cape Town" },
352
+ { id: "il-central-1", name: "Tel Aviv" },
353
+ { id: "me-south-1", name: "Bahrain" },
354
+ { id: "me-central-1", name: "UAE" },
355
+ { id: "ap-east-1", name: "Hong Kong" },
356
+ { id: "ap-south-1", name: "Mumbai" },
357
+ { id: "ap-south-2", name: "Hyderabad" },
358
+ { id: "ap-northeast-1", name: "Tokyo" },
359
+ { id: "ap-northeast-2", name: "Seoul" },
360
+ { id: "ap-northeast-3", name: "Osaka" },
361
+ { id: "ap-southeast-1", name: "Singapore" },
362
+ { id: "ap-southeast-2", name: "Sydney" },
363
+ { id: "ap-southeast-3", name: "Jakarta" },
364
+ { id: "ap-southeast-4", name: "Melbourne" },
365
+ { id: "ap-southeast-5", name: "Malaysia" },
366
+ { id: "ap-southeast-7", name: "Thailand" },
367
+ ];
368
+
369
+ // ===========================================================================
370
+ // Azure — Azure Database for PostgreSQL flexible server regions
371
+ // (https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview,
372
+ // "Azure regions"), minus access-restricted, Government and China regions.
373
+ // Container Apps has no static list; Microsoft names `az provider show` as the
374
+ // source (https://learn.microsoft.com/en-us/azure/container-apps/faq), so the
375
+ // catalog checks it live (see `queryAzureContainerAppsRegions`).
376
+ // ===========================================================================
377
+
378
+ export const AZURE_REGIONS: readonly RegionOption[] = [
379
+ { id: "westeurope", name: "West Europe (Netherlands)" },
380
+ { id: "northeurope", name: "North Europe (Ireland)" },
381
+ { id: "germanywestcentral", name: "Germany West Central" },
382
+ { id: "francecentral", name: "France Central" },
383
+ { id: "francesouth", name: "France South" },
384
+ { id: "swedencentral", name: "Sweden Central" },
385
+ { id: "switzerlandnorth", name: "Switzerland North" },
386
+ { id: "norwaywest", name: "Norway West" },
387
+ { id: "austriaeast", name: "Austria East" },
388
+ { id: "belgiumcentral", name: "Belgium Central" },
389
+ { id: "italynorth", name: "Italy North" },
390
+ { id: "polandcentral", name: "Poland Central" },
391
+ { id: "spaincentral", name: "Spain Central" },
392
+ { id: "uksouth", name: "UK South" },
393
+ { id: "ukwest", name: "UK West" },
394
+ { id: "eastus", name: "East US" },
395
+ { id: "eastus2", name: "East US 2" },
396
+ { id: "centralus", name: "Central US" },
397
+ { id: "northcentralus", name: "North Central US" },
398
+ { id: "southcentralus", name: "South Central US" },
399
+ { id: "westcentralus", name: "West Central US" },
400
+ { id: "westus", name: "West US" },
401
+ { id: "westus2", name: "West US 2" },
402
+ { id: "westus3", name: "West US 3" },
403
+ { id: "canadacentral", name: "Canada Central" },
404
+ { id: "canadaeast", name: "Canada East" },
405
+ { id: "mexicocentral", name: "Mexico Central" },
406
+ { id: "brazilsouth", name: "Brazil South" },
407
+ { id: "chilecentral", name: "Chile Central" },
408
+ { id: "southafricanorth", name: "South Africa North" },
409
+ { id: "israelcentral", name: "Israel Central" },
410
+ { id: "qatarcentral", name: "Qatar Central" },
411
+ { id: "uaenorth", name: "UAE North" },
412
+ { id: "centralindia", name: "Central India" },
413
+ { id: "southindia", name: "South India" },
414
+ { id: "jioindiacentral", name: "Jio India Central" },
415
+ { id: "jioindiawest", name: "Jio India West" },
416
+ { id: "eastasia", name: "East Asia (Hong Kong)" },
417
+ { id: "southeastasia", name: "Southeast Asia (Singapore)" },
418
+ { id: "japaneast", name: "Japan East" },
419
+ { id: "japanwest", name: "Japan West" },
420
+ { id: "koreacentral", name: "Korea Central" },
421
+ { id: "koreasouth", name: "Korea South" },
422
+ { id: "indonesiacentral", name: "Indonesia Central" },
423
+ { id: "malaysiawest", name: "Malaysia West" },
424
+ { id: "australiaeast", name: "Australia East" },
425
+ { id: "australiasoutheast", name: "Australia Southeast" },
426
+ { id: "australiacentral", name: "Australia Central" },
427
+ { id: "newzealandnorth", name: "New Zealand North" },
428
+ ];