@caelo-cms/provisioning 0.10.30 → 0.10.31

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 (50) hide show
  1. package/dist/cli.js +7 -2
  2. package/dist/cli.js.map +1 -1
  3. package/dist/deployed-release.d.ts +17 -0
  4. package/dist/deployed-release.d.ts.map +1 -1
  5. package/dist/deployed-release.js +38 -0
  6. package/dist/deployed-release.js.map +1 -1
  7. package/dist/lifecycle.d.ts +5 -0
  8. package/dist/lifecycle.d.ts.map +1 -1
  9. package/dist/lifecycle.js +27 -5
  10. package/dist/lifecycle.js.map +1 -1
  11. package/dist/region-data.d.ts +30 -0
  12. package/dist/region-data.d.ts.map +1 -0
  13. package/dist/region-data.js +406 -0
  14. package/dist/region-data.js.map +1 -0
  15. package/dist/regions.d.ts +130 -0
  16. package/dist/regions.d.ts.map +1 -0
  17. package/dist/regions.js +247 -0
  18. package/dist/regions.js.map +1 -0
  19. package/dist/wizard.d.ts +7 -0
  20. package/dist/wizard.d.ts.map +1 -1
  21. package/dist/wizard.js +3 -0
  22. package/dist/wizard.js.map +1 -1
  23. package/dist/wizards/gcp-cost.d.ts +4 -0
  24. package/dist/wizards/gcp-cost.d.ts.map +1 -1
  25. package/dist/wizards/gcp-cost.js +6 -1
  26. package/dist/wizards/gcp-cost.js.map +1 -1
  27. package/dist/wizards/gcp-firebase.d.ts +2 -0
  28. package/dist/wizards/gcp-firebase.d.ts.map +1 -1
  29. package/dist/wizards/gcp-firebase.js +1 -0
  30. package/dist/wizards/gcp-firebase.js.map +1 -1
  31. package/dist/wizards/gcp-pulumi.d.ts +19 -0
  32. package/dist/wizards/gcp-pulumi.d.ts.map +1 -1
  33. package/dist/wizards/gcp-pulumi.js +29 -1
  34. package/dist/wizards/gcp-pulumi.js.map +1 -1
  35. package/dist/wizards/gcp.d.ts +2 -0
  36. package/dist/wizards/gcp.d.ts.map +1 -1
  37. package/dist/wizards/gcp.js +93 -8
  38. package/dist/wizards/gcp.js.map +1 -1
  39. package/package.json +3 -3
  40. package/stacks/aws/Pulumi.yaml +1 -2
  41. package/stacks/aws/README.md +3 -1
  42. package/stacks/aws/index.ts +10 -1
  43. package/stacks/azure/Pulumi.yaml +2 -3
  44. package/stacks/azure/README.md +1 -1
  45. package/stacks/azure/index.ts +12 -2
  46. package/stacks/gcp/Pulumi.yaml +1 -2
  47. package/stacks/gcp/README.md +2 -1
  48. package/stacks/gcp/index.ts +4 -1
  49. package/stacks/gcp-firebase/Pulumi.yaml +1 -2
  50. package/stacks/gcp-firebase/index.ts +4 -1
@@ -0,0 +1,406 @@
1
+ // SPDX-License-Identifier: MPL-2.0
2
+ // ===========================================================================
3
+ // GCP — per-service region lists (checked 2026-10)
4
+ // ===========================================================================
5
+ export const GCP_REGION_NAMES = {
6
+ "africa-south1": "Johannesburg",
7
+ "asia-east1": "Taiwan",
8
+ "asia-east2": "Hong Kong",
9
+ "asia-northeast1": "Tokyo",
10
+ "asia-northeast2": "Osaka",
11
+ "asia-northeast3": "Seoul",
12
+ "asia-south1": "Mumbai",
13
+ "asia-south2": "Delhi",
14
+ "asia-southeast1": "Singapore",
15
+ "asia-southeast2": "Jakarta",
16
+ "asia-southeast3": "Bangkok",
17
+ "australia-southeast1": "Sydney",
18
+ "australia-southeast2": "Melbourne",
19
+ "europe-central2": "Warsaw",
20
+ "europe-north1": "Finland",
21
+ "europe-north2": "Stockholm",
22
+ "europe-southwest1": "Madrid",
23
+ "europe-west1": "Belgium",
24
+ "europe-west2": "London",
25
+ "europe-west3": "Frankfurt",
26
+ "europe-west4": "Netherlands",
27
+ "europe-west6": "Zurich",
28
+ "europe-west8": "Milan",
29
+ "europe-west9": "Paris",
30
+ "europe-west10": "Berlin",
31
+ "europe-west12": "Turin",
32
+ "me-central1": "Doha",
33
+ "me-central2": "Dammam",
34
+ "me-west1": "Tel Aviv",
35
+ "northamerica-northeast1": "Montréal",
36
+ "northamerica-northeast2": "Toronto",
37
+ "northamerica-south1": "Mexico",
38
+ "southamerica-east1": "São Paulo",
39
+ "southamerica-west1": "Santiago",
40
+ "us-central1": "Iowa",
41
+ "us-east1": "South Carolina",
42
+ "us-east4": "Northern Virginia",
43
+ "us-east5": "Columbus",
44
+ "us-south1": "Dallas",
45
+ "us-west1": "Oregon",
46
+ "us-west2": "Los Angeles",
47
+ "us-west3": "Salt Lake City",
48
+ "us-west4": "Las Vegas",
49
+ };
50
+ /**
51
+ * Where each regional GCP service the stacks and the CLI use is offered.
52
+ * Global services (load balancer, Cloud CDN, Cloud Armor, IAP, Firebase
53
+ * Hosting) don't constrain the region and are not listed.
54
+ */
55
+ export const GCP_SERVICE_REGIONS = {
56
+ // https://docs.cloud.google.com/run/docs/locations
57
+ "Cloud Run": [
58
+ "asia-east1",
59
+ "asia-northeast1",
60
+ "asia-northeast2",
61
+ "asia-south1",
62
+ "asia-southeast3",
63
+ "europe-north1",
64
+ "europe-north2",
65
+ "europe-southwest1",
66
+ "europe-west1",
67
+ "europe-west4",
68
+ "europe-west8",
69
+ "europe-west9",
70
+ "me-west1",
71
+ "northamerica-south1",
72
+ "us-central1",
73
+ "us-east1",
74
+ "us-east4",
75
+ "us-east5",
76
+ "us-south1",
77
+ "us-west1",
78
+ "africa-south1",
79
+ "asia-east2",
80
+ "asia-northeast3",
81
+ "asia-southeast1",
82
+ "asia-southeast2",
83
+ "asia-south2",
84
+ "australia-southeast1",
85
+ "australia-southeast2",
86
+ "europe-central2",
87
+ "europe-west10",
88
+ "europe-west12",
89
+ "europe-west2",
90
+ "europe-west3",
91
+ "europe-west6",
92
+ "me-central1",
93
+ "me-central2",
94
+ "northamerica-northeast1",
95
+ "northamerica-northeast2",
96
+ "southamerica-east1",
97
+ "southamerica-west1",
98
+ "us-west2",
99
+ "us-west3",
100
+ "us-west4",
101
+ ],
102
+ // https://docs.cloud.google.com/sql/docs/postgres/locations
103
+ "Cloud SQL": [
104
+ "africa-south1",
105
+ "asia-east1",
106
+ "asia-east2",
107
+ "asia-northeast1",
108
+ "asia-northeast2",
109
+ "asia-northeast3",
110
+ "asia-south1",
111
+ "asia-south2",
112
+ "asia-southeast1",
113
+ "asia-southeast2",
114
+ "australia-southeast1",
115
+ "australia-southeast2",
116
+ "europe-central2",
117
+ "europe-north1",
118
+ "europe-southwest1",
119
+ "europe-west1",
120
+ "europe-west2",
121
+ "europe-west3",
122
+ "europe-west4",
123
+ "europe-west6",
124
+ "europe-west8",
125
+ "europe-west9",
126
+ "europe-west10",
127
+ "europe-west12",
128
+ "me-central1",
129
+ "me-central2",
130
+ "me-west1",
131
+ "northamerica-northeast1",
132
+ "northamerica-northeast2",
133
+ "northamerica-south1",
134
+ "us-central1",
135
+ "us-south1",
136
+ "us-east1",
137
+ "us-east4",
138
+ "us-east5",
139
+ "us-west1",
140
+ "us-west2",
141
+ "us-west3",
142
+ "us-west4",
143
+ "southamerica-east1",
144
+ "southamerica-west1",
145
+ ],
146
+ // https://docs.cloud.google.com/secret-manager/docs/locations — the stacks
147
+ // replicate secrets user-managed into the install region.
148
+ "Secret Manager": [
149
+ "asia-south2",
150
+ "asia-east2",
151
+ "asia-southeast2",
152
+ "australia-southeast2",
153
+ "asia-south1",
154
+ "asia-northeast2",
155
+ "asia-northeast3",
156
+ "asia-southeast1",
157
+ "australia-southeast1",
158
+ "asia-east1",
159
+ "asia-northeast1",
160
+ "asia-southeast3",
161
+ "europe-west1",
162
+ "europe-west10",
163
+ "europe-north1",
164
+ "europe-north2",
165
+ "europe-west3",
166
+ "europe-west2",
167
+ "europe-southwest1",
168
+ "europe-west8",
169
+ "europe-west4",
170
+ "europe-west12",
171
+ "europe-west9",
172
+ "europe-central2",
173
+ "europe-west6",
174
+ "us-central1",
175
+ "us-west4",
176
+ "us-west2",
177
+ "northamerica-south1",
178
+ "northamerica-northeast1",
179
+ "us-east4",
180
+ "us-west1",
181
+ "us-west3",
182
+ "us-east1",
183
+ "northamerica-northeast2",
184
+ "us-east5",
185
+ "us-south1",
186
+ "southamerica-east1",
187
+ "southamerica-west1",
188
+ "me-central2",
189
+ "me-central1",
190
+ "me-west1",
191
+ "africa-south1",
192
+ ],
193
+ // https://docs.cloud.google.com/artifact-registry/docs/repositories/repo-locations
194
+ "Artifact Registry": [
195
+ "northamerica-northeast1",
196
+ "northamerica-northeast2",
197
+ "northamerica-south1",
198
+ "us-central1",
199
+ "us-east1",
200
+ "us-east4",
201
+ "us-east5",
202
+ "us-south1",
203
+ "us-west1",
204
+ "us-west2",
205
+ "us-west3",
206
+ "us-west4",
207
+ "southamerica-east1",
208
+ "southamerica-west1",
209
+ "europe-central2",
210
+ "europe-north1",
211
+ "europe-north2",
212
+ "europe-southwest1",
213
+ "europe-west1",
214
+ "europe-west2",
215
+ "europe-west3",
216
+ "europe-west4",
217
+ "europe-west6",
218
+ "europe-west8",
219
+ "europe-west9",
220
+ "europe-west10",
221
+ "europe-west12",
222
+ "me-central1",
223
+ "me-central2",
224
+ "me-west1",
225
+ "asia-east1",
226
+ "asia-east2",
227
+ "asia-northeast1",
228
+ "asia-northeast2",
229
+ "asia-northeast3",
230
+ "asia-south1",
231
+ "asia-south2",
232
+ "asia-southeast1",
233
+ "asia-southeast2",
234
+ "asia-southeast3",
235
+ "australia-southeast1",
236
+ "australia-southeast2",
237
+ "africa-south1",
238
+ ],
239
+ // https://docs.cloud.google.com/scheduler/docs/locations — the hourly
240
+ // operator-access sync (operator-access.ts) schedules in the install region.
241
+ "Cloud Scheduler": [
242
+ "northamerica-northeast1",
243
+ "northamerica-northeast2",
244
+ "southamerica-east1",
245
+ "us-central1",
246
+ "us-east1",
247
+ "us-east4",
248
+ "us-south1",
249
+ "us-west1",
250
+ "us-west2",
251
+ "us-west3",
252
+ "us-west4",
253
+ "europe-central2",
254
+ "europe-west1",
255
+ "europe-west2",
256
+ "europe-west3",
257
+ "europe-west4",
258
+ "europe-west6",
259
+ "europe-west8",
260
+ "europe-west9",
261
+ "europe-west12",
262
+ "asia-east1",
263
+ "asia-east2",
264
+ "asia-northeast1",
265
+ "asia-northeast2",
266
+ "asia-northeast3",
267
+ "asia-south1",
268
+ "asia-south2",
269
+ "asia-southeast1",
270
+ "asia-southeast2",
271
+ "asia-southeast3",
272
+ "australia-southeast1",
273
+ "me-central1",
274
+ "me-central2",
275
+ "me-west1",
276
+ ],
277
+ // https://docs.cloud.google.com/run/docs/mapping-custom-domains#limitations —
278
+ // gcp-firebase serves admin.<domain> through a Cloud Run domain mapping.
279
+ "Cloud Run domain mapping": [
280
+ "asia-east1",
281
+ "asia-northeast1",
282
+ "asia-southeast1",
283
+ "europe-north1",
284
+ "europe-west1",
285
+ "europe-west4",
286
+ "us-central1",
287
+ "us-east1",
288
+ "us-east4",
289
+ "us-west1",
290
+ ],
291
+ };
292
+ /**
293
+ * Regions Google offers only under special terms, so they are never offered
294
+ * as a general install target even though the services exist there:
295
+ * me-central2 (Dammam) is for KSA customers through Google's designated
296
+ * reseller (https://docs.cloud.google.com/docs/dammam-region-access).
297
+ */
298
+ export const GCP_RESTRICTED_REGIONS = ["me-central2"];
299
+ export const GCP_SERVICES = [
300
+ "Cloud Run",
301
+ "Cloud SQL",
302
+ "Secret Manager",
303
+ "Artifact Registry",
304
+ "Cloud Scheduler",
305
+ ];
306
+ // ===========================================================================
307
+ // AWS — https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate-Regions.html
308
+ // Fargate is the narrowest service the stack uses; RDS for PostgreSQL, S3,
309
+ // Secrets Manager and ACM are offered in every commercial region
310
+ // (https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/).
311
+ // GovCloud and China partitions are out of scope.
312
+ // ===========================================================================
313
+ export const AWS_REGIONS = [
314
+ { id: "us-east-1", name: "N. Virginia" },
315
+ { id: "us-east-2", name: "Ohio" },
316
+ { id: "us-west-1", name: "N. California" },
317
+ { id: "us-west-2", name: "Oregon" },
318
+ { id: "ca-central-1", name: "Canada Central" },
319
+ { id: "ca-west-1", name: "Calgary" },
320
+ { id: "mx-central-1", name: "Mexico Central" },
321
+ { id: "sa-east-1", name: "São Paulo" },
322
+ { id: "eu-central-1", name: "Frankfurt" },
323
+ { id: "eu-central-2", name: "Zurich" },
324
+ { id: "eu-west-1", name: "Ireland" },
325
+ { id: "eu-west-2", name: "London" },
326
+ { id: "eu-west-3", name: "Paris" },
327
+ { id: "eu-south-1", name: "Milan" },
328
+ { id: "eu-south-2", name: "Spain" },
329
+ { id: "eu-north-1", name: "Stockholm" },
330
+ { id: "af-south-1", name: "Cape Town" },
331
+ { id: "il-central-1", name: "Tel Aviv" },
332
+ { id: "me-south-1", name: "Bahrain" },
333
+ { id: "me-central-1", name: "UAE" },
334
+ { id: "ap-east-1", name: "Hong Kong" },
335
+ { id: "ap-south-1", name: "Mumbai" },
336
+ { id: "ap-south-2", name: "Hyderabad" },
337
+ { id: "ap-northeast-1", name: "Tokyo" },
338
+ { id: "ap-northeast-2", name: "Seoul" },
339
+ { id: "ap-northeast-3", name: "Osaka" },
340
+ { id: "ap-southeast-1", name: "Singapore" },
341
+ { id: "ap-southeast-2", name: "Sydney" },
342
+ { id: "ap-southeast-3", name: "Jakarta" },
343
+ { id: "ap-southeast-4", name: "Melbourne" },
344
+ { id: "ap-southeast-5", name: "Malaysia" },
345
+ { id: "ap-southeast-7", name: "Thailand" },
346
+ ];
347
+ // ===========================================================================
348
+ // Azure — Azure Database for PostgreSQL flexible server regions
349
+ // (https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview,
350
+ // "Azure regions"), minus access-restricted, Government and China regions.
351
+ // Container Apps has no static list; Microsoft names `az provider show` as the
352
+ // source (https://learn.microsoft.com/en-us/azure/container-apps/faq), so the
353
+ // catalog checks it live (see `queryAzureContainerAppsRegions`).
354
+ // ===========================================================================
355
+ export const AZURE_REGIONS = [
356
+ { id: "westeurope", name: "West Europe (Netherlands)" },
357
+ { id: "northeurope", name: "North Europe (Ireland)" },
358
+ { id: "germanywestcentral", name: "Germany West Central" },
359
+ { id: "francecentral", name: "France Central" },
360
+ { id: "francesouth", name: "France South" },
361
+ { id: "swedencentral", name: "Sweden Central" },
362
+ { id: "switzerlandnorth", name: "Switzerland North" },
363
+ { id: "norwaywest", name: "Norway West" },
364
+ { id: "austriaeast", name: "Austria East" },
365
+ { id: "belgiumcentral", name: "Belgium Central" },
366
+ { id: "italynorth", name: "Italy North" },
367
+ { id: "polandcentral", name: "Poland Central" },
368
+ { id: "spaincentral", name: "Spain Central" },
369
+ { id: "uksouth", name: "UK South" },
370
+ { id: "ukwest", name: "UK West" },
371
+ { id: "eastus", name: "East US" },
372
+ { id: "eastus2", name: "East US 2" },
373
+ { id: "centralus", name: "Central US" },
374
+ { id: "northcentralus", name: "North Central US" },
375
+ { id: "southcentralus", name: "South Central US" },
376
+ { id: "westcentralus", name: "West Central US" },
377
+ { id: "westus", name: "West US" },
378
+ { id: "westus2", name: "West US 2" },
379
+ { id: "westus3", name: "West US 3" },
380
+ { id: "canadacentral", name: "Canada Central" },
381
+ { id: "canadaeast", name: "Canada East" },
382
+ { id: "mexicocentral", name: "Mexico Central" },
383
+ { id: "brazilsouth", name: "Brazil South" },
384
+ { id: "chilecentral", name: "Chile Central" },
385
+ { id: "southafricanorth", name: "South Africa North" },
386
+ { id: "israelcentral", name: "Israel Central" },
387
+ { id: "qatarcentral", name: "Qatar Central" },
388
+ { id: "uaenorth", name: "UAE North" },
389
+ { id: "centralindia", name: "Central India" },
390
+ { id: "southindia", name: "South India" },
391
+ { id: "jioindiacentral", name: "Jio India Central" },
392
+ { id: "jioindiawest", name: "Jio India West" },
393
+ { id: "eastasia", name: "East Asia (Hong Kong)" },
394
+ { id: "southeastasia", name: "Southeast Asia (Singapore)" },
395
+ { id: "japaneast", name: "Japan East" },
396
+ { id: "japanwest", name: "Japan West" },
397
+ { id: "koreacentral", name: "Korea Central" },
398
+ { id: "koreasouth", name: "Korea South" },
399
+ { id: "indonesiacentral", name: "Indonesia Central" },
400
+ { id: "malaysiawest", name: "Malaysia West" },
401
+ { id: "australiaeast", name: "Australia East" },
402
+ { id: "australiasoutheast", name: "Australia Southeast" },
403
+ { id: "australiacentral", name: "Australia Central" },
404
+ { id: "newzealandnorth", name: "New Zealand North" },
405
+ ];
406
+ //# sourceMappingURL=region-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"region-data.js","sourceRoot":"","sources":["../src/region-data.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAgBnC,8EAA8E;AAC9E,mDAAmD;AACnD,8EAA8E;AAE9E,MAAM,CAAC,MAAM,gBAAgB,GAAqC;IAChE,eAAe,EAAE,cAAc;IAC/B,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,WAAW;IACzB,iBAAiB,EAAE,OAAO;IAC1B,iBAAiB,EAAE,OAAO;IAC1B,iBAAiB,EAAE,OAAO;IAC1B,aAAa,EAAE,QAAQ;IACvB,aAAa,EAAE,OAAO;IACtB,iBAAiB,EAAE,WAAW;IAC9B,iBAAiB,EAAE,SAAS;IAC5B,iBAAiB,EAAE,SAAS;IAC5B,sBAAsB,EAAE,QAAQ;IAChC,sBAAsB,EAAE,WAAW;IACnC,iBAAiB,EAAE,QAAQ;IAC3B,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,WAAW;IAC5B,mBAAmB,EAAE,QAAQ;IAC7B,cAAc,EAAE,SAAS;IACzB,cAAc,EAAE,QAAQ;IACxB,cAAc,EAAE,WAAW;IAC3B,cAAc,EAAE,aAAa;IAC7B,cAAc,EAAE,QAAQ;IACxB,cAAc,EAAE,OAAO;IACvB,cAAc,EAAE,OAAO;IACvB,eAAe,EAAE,QAAQ;IACzB,eAAe,EAAE,OAAO;IACxB,aAAa,EAAE,MAAM;IACrB,aAAa,EAAE,QAAQ;IACvB,UAAU,EAAE,UAAU;IACtB,yBAAyB,EAAE,UAAU;IACrC,yBAAyB,EAAE,SAAS;IACpC,qBAAqB,EAAE,QAAQ;IAC/B,oBAAoB,EAAE,WAAW;IACjC,oBAAoB,EAAE,UAAU;IAChC,aAAa,EAAE,MAAM;IACrB,UAAU,EAAE,gBAAgB;IAC5B,UAAU,EAAE,mBAAmB;IAC/B,UAAU,EAAE,UAAU;IACtB,WAAW,EAAE,QAAQ;IACrB,UAAU,EAAE,QAAQ;IACpB,UAAU,EAAE,aAAa;IACzB,UAAU,EAAE,gBAAgB;IAC5B,UAAU,EAAE,WAAW;CACxB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAgD;IAC9E,mDAAmD;IACnD,WAAW,EAAE;QACX,YAAY;QACZ,iBAAiB;QACjB,iBAAiB;QACjB,aAAa;QACb,iBAAiB;QACjB,eAAe;QACf,eAAe;QACf,mBAAmB;QACnB,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;QACd,UAAU;QACV,qBAAqB;QACrB,aAAa;QACb,UAAU;QACV,UAAU;QACV,UAAU;QACV,WAAW;QACX,UAAU;QACV,eAAe;QACf,YAAY;QACZ,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,aAAa;QACb,sBAAsB;QACtB,sBAAsB;QACtB,iBAAiB;QACjB,eAAe;QACf,eAAe;QACf,cAAc;QACd,cAAc;QACd,cAAc;QACd,aAAa;QACb,aAAa;QACb,yBAAyB;QACzB,yBAAyB;QACzB,oBAAoB;QACpB,oBAAoB;QACpB,UAAU;QACV,UAAU;QACV,UAAU;KACX;IACD,4DAA4D;IAC5D,WAAW,EAAE;QACX,eAAe;QACf,YAAY;QACZ,YAAY;QACZ,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,aAAa;QACb,aAAa;QACb,iBAAiB;QACjB,iBAAiB;QACjB,sBAAsB;QACtB,sBAAsB;QACtB,iBAAiB;QACjB,eAAe;QACf,mBAAmB;QACnB,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;QACd,eAAe;QACf,eAAe;QACf,aAAa;QACb,aAAa;QACb,UAAU;QACV,yBAAyB;QACzB,yBAAyB;QACzB,qBAAqB;QACrB,aAAa;QACb,WAAW;QACX,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,oBAAoB;QACpB,oBAAoB;KACrB;IACD,2EAA2E;IAC3E,0DAA0D;IAC1D,gBAAgB,EAAE;QAChB,aAAa;QACb,YAAY;QACZ,iBAAiB;QACjB,sBAAsB;QACtB,aAAa;QACb,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,sBAAsB;QACtB,YAAY;QACZ,iBAAiB;QACjB,iBAAiB;QACjB,cAAc;QACd,eAAe;QACf,eAAe;QACf,eAAe;QACf,cAAc;QACd,cAAc;QACd,mBAAmB;QACnB,cAAc;QACd,cAAc;QACd,eAAe;QACf,cAAc;QACd,iBAAiB;QACjB,cAAc;QACd,aAAa;QACb,UAAU;QACV,UAAU;QACV,qBAAqB;QACrB,yBAAyB;QACzB,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,yBAAyB;QACzB,UAAU;QACV,WAAW;QACX,oBAAoB;QACpB,oBAAoB;QACpB,aAAa;QACb,aAAa;QACb,UAAU;QACV,eAAe;KAChB;IACD,mFAAmF;IACnF,mBAAmB,EAAE;QACnB,yBAAyB;QACzB,yBAAyB;QACzB,qBAAqB;QACrB,aAAa;QACb,UAAU;QACV,UAAU;QACV,UAAU;QACV,WAAW;QACX,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,oBAAoB;QACpB,oBAAoB;QACpB,iBAAiB;QACjB,eAAe;QACf,eAAe;QACf,mBAAmB;QACnB,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;QACd,eAAe;QACf,eAAe;QACf,aAAa;QACb,aAAa;QACb,UAAU;QACV,YAAY;QACZ,YAAY;QACZ,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,aAAa;QACb,aAAa;QACb,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,sBAAsB;QACtB,sBAAsB;QACtB,eAAe;KAChB;IACD,sEAAsE;IACtE,6EAA6E;IAC7E,iBAAiB,EAAE;QACjB,yBAAyB;QACzB,yBAAyB;QACzB,oBAAoB;QACpB,aAAa;QACb,UAAU;QACV,UAAU;QACV,WAAW;QACX,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,iBAAiB;QACjB,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;QACd,eAAe;QACf,YAAY;QACZ,YAAY;QACZ,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,aAAa;QACb,aAAa;QACb,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,sBAAsB;QACtB,aAAa;QACb,aAAa;QACb,UAAU;KACX;IACD,8EAA8E;IAC9E,yEAAyE;IACzE,0BAA0B,EAAE;QAC1B,YAAY;QACZ,iBAAiB;QACjB,iBAAiB;QACjB,eAAe;QACf,cAAc;QACd,cAAc;QACd,aAAa;QACb,UAAU;QACV,UAAU;QACV,UAAU;KACX;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAsB,CAAC,aAAa,CAAC,CAAC;AAEzE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,WAAW;IACX,WAAW;IACX,gBAAgB;IAChB,mBAAmB;IACnB,iBAAiB;CACT,CAAC;AAEX,8EAA8E;AAC9E,6FAA6F;AAC7F,2EAA2E;AAC3E,iEAAiE;AACjE,uFAAuF;AACvF,kDAAkD;AAClD,8EAA8E;AAE9E,MAAM,CAAC,MAAM,WAAW,GAA4B;IAClD,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE;IACxC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE;IACjC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE;IAC1C,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,EAAE;IAC9C,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;IACpC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,EAAE;IAC9C,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;IACtC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE;IACzC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE;IACtC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;IACpC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE;IAClC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE;IACnC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE;IACnC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE;IACvC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE;IACvC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE;IACxC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;IACrC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE;IACnC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;IACtC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE;IACpC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE;IACvC,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;IACvC,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;IACvC,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;IACvC,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE;IAC3C,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxC,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE;IACzC,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE;IAC3C,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,EAAE;IAC1C,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,EAAE;CAC3C,CAAC;AAEF,8EAA8E;AAC9E,gEAAgE;AAChE,gFAAgF;AAChF,2EAA2E;AAC3E,+EAA+E;AAC/E,8EAA8E;AAC9E,iEAAiE;AACjE,8EAA8E;AAE9E,MAAM,CAAC,MAAM,aAAa,GAA4B;IACpD,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,2BAA2B,EAAE;IACvD,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,wBAAwB,EAAE;IACrD,EAAE,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,sBAAsB,EAAE;IAC1D,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE;IAC/C,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE;IAC3C,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE;IAC/C,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,mBAAmB,EAAE;IACrD,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE;IACzC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE;IAC3C,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,iBAAiB,EAAE;IACjD,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE;IACzC,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE;IAC/C,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE;IAC7C,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE;IACnC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;IACjC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;IACjC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE;IACpC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE;IACvC,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,kBAAkB,EAAE;IAClD,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,kBAAkB,EAAE;IAClD,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,iBAAiB,EAAE;IAChD,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;IACjC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE;IACpC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE;IACpC,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE;IAC/C,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE;IACzC,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE;IAC/C,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE;IAC3C,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE;IAC7C,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,oBAAoB,EAAE;IACtD,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE;IAC/C,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE;IAC7C,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE;IACrC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE;IAC7C,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE;IACzC,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,mBAAmB,EAAE;IACpD,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,EAAE;IAC9C,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,uBAAuB,EAAE;IACjD,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,4BAA4B,EAAE;IAC3D,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE;IACvC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE;IACvC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE;IAC7C,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE;IACzC,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,mBAAmB,EAAE;IACrD,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE;IAC7C,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE;IAC/C,EAAE,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,qBAAqB,EAAE;IACzD,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,mBAAmB,EAAE;IACrD,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,mBAAmB,EAAE;CACrD,CAAC"}
@@ -0,0 +1,130 @@
1
+ import { type RegionOption } from "./region-data.js";
2
+ /** Providers whose stack is placed in a cloud region (self-hosted is not). */
3
+ export type RegionalProvider = "gcp" | "gcp-firebase" | "aws" | "azure";
4
+ /** Result of running a provider CLI. */
5
+ export interface CliResult {
6
+ readonly ok: boolean;
7
+ readonly stdout: string;
8
+ readonly stderr: string;
9
+ }
10
+ /** Runs one CLI command (`gcloud`, `aws`, `az`); injectable for tests. */
11
+ export type CliRunner = (cmd: string, args: readonly string[]) => Promise<CliResult>;
12
+ /** Default {@link CliRunner}: spawns the binary; a missing binary is a failed result. */
13
+ export declare const runCli: CliRunner;
14
+ /** Where a provider adapter can be installed, and what the wizard suggests. */
15
+ export interface RegionCatalog {
16
+ readonly provider: RegionalProvider;
17
+ /** Suggested when the provider CLI has no default region configured. */
18
+ readonly euDefault: string;
19
+ readonly regions: readonly RegionOption[];
20
+ /** The regional services the list was intersected over (for messages + docs). */
21
+ readonly services: readonly string[];
22
+ /** Narrows `regions` with a live provider query, where no static list exists. */
23
+ readonly liveRegions?: (run: CliRunner) => Promise<{
24
+ ok: true;
25
+ regions: Set<string>;
26
+ } | {
27
+ ok: false;
28
+ error: string;
29
+ }>;
30
+ }
31
+ /** The region catalog for `provider`. */
32
+ export declare function regionCatalog(provider: RegionalProvider): RegionCatalog;
33
+ /**
34
+ * The regions `provider` can be installed in right now: the static catalog,
35
+ * narrowed by the live query where the catalog has one.
36
+ */
37
+ export declare function installableRegions(provider: RegionalProvider, run?: CliRunner): Promise<{
38
+ ok: true;
39
+ regions: RegionOption[];
40
+ } | {
41
+ ok: false;
42
+ error: string;
43
+ }>;
44
+ /** The "valid regions" list for error messages. */
45
+ export declare function formatRegionList(regions: readonly RegionOption[]): string;
46
+ /**
47
+ * Check `region` against the installable regions. The error names every
48
+ * valid region, so a non-interactive caller can fix its `--region`.
49
+ */
50
+ export declare function checkRegion(provider: RegionalProvider, region: string, regions: readonly RegionOption[]): {
51
+ ok: true;
52
+ } | {
53
+ ok: false;
54
+ error: string;
55
+ };
56
+ /**
57
+ * The default region configured in the provider's CLI, or null when none
58
+ * is set or the CLI isn't installed (the wizard then suggests the EU
59
+ * default; the operator confirms either way).
60
+ */
61
+ export declare function detectCliRegion(provider: RegionalProvider, run?: CliRunner, env?: Readonly<Record<string, string | undefined>>): Promise<string | null>;
62
+ /**
63
+ * The region the picker preselects: the CLI default when it is installable,
64
+ * otherwise the catalog's EU default. `note` explains a skipped CLI default.
65
+ */
66
+ export declare function suggestRegion(provider: RegionalProvider, cliRegion: string | null, regions: readonly RegionOption[]): {
67
+ region: string;
68
+ source: "cli" | "eu-default";
69
+ note?: string;
70
+ };
71
+ /** Why a region differs from the one an install was created in. */
72
+ export declare function regionChangeRefusal(installId: string, recorded: string, requested: string): string;
73
+ /**
74
+ * What the wizard does about the region, given what is already known.
75
+ * Pure: the caller detects the deployed region and prompts.
76
+ *
77
+ * - recorded region of a deployed install, or the deployed region → keep
78
+ * it; a different `--region` is refused.
79
+ * - otherwise `--region` → validated, used.
80
+ * - otherwise a preselected region (earlier run, never deployed) →
81
+ * preselected in the prompt, used as-is when non-interactive.
82
+ * - otherwise interactive → prompt; non-interactive → refuse with the list.
83
+ */
84
+ export type RegionDecision = {
85
+ readonly kind: "keep";
86
+ readonly region: string;
87
+ readonly from: "install.json" | "deployed";
88
+ } | {
89
+ readonly kind: "use";
90
+ readonly region: string;
91
+ } | {
92
+ readonly kind: "prompt";
93
+ readonly preselected?: string;
94
+ } | {
95
+ readonly kind: "refuse";
96
+ readonly error: string;
97
+ };
98
+ /** Decide the install region; see {@link RegionDecision}. */
99
+ export declare function decideRegion(input: {
100
+ readonly provider: RegionalProvider;
101
+ readonly installId: string;
102
+ readonly recorded: string | null;
103
+ readonly deployed: string | null;
104
+ /**
105
+ * A region picked in an earlier run that never got as far as deploying
106
+ * (cancelled at the cost table, a failed setup step). Not fixed yet: it
107
+ * is preselected, and `--region` may still change it.
108
+ */
109
+ readonly preselected?: string | null;
110
+ readonly requested: string | undefined;
111
+ readonly nonInteractive: boolean;
112
+ readonly regions: readonly RegionOption[];
113
+ }): RegionDecision;
114
+ /**
115
+ * The region an existing install runs in, for lifecycle commands. Throws an
116
+ * actionable error when install.json has none (no silent default — §2).
117
+ */
118
+ export declare function requireInstallRegion(meta: {
119
+ readonly installId: string;
120
+ readonly region: string | null;
121
+ }): string;
122
+ /**
123
+ * Refuse a `--region` that differs from the install's recorded one (used by
124
+ * `upgrade`, which never moves an install). No `requested` passes.
125
+ */
126
+ export declare function assertRegionUnchanged(meta: {
127
+ readonly installId: string;
128
+ readonly region: string | null;
129
+ }, requested: string | undefined): string;
130
+ //# sourceMappingURL=regions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regions.d.ts","sourceRoot":"","sources":["../src/regions.ts"],"names":[],"mappings":"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"}