alchemy 0.87.0 → 0.90.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 (79) hide show
  1. package/bin/alchemy.js +485 -543
  2. package/lib/cloudflare/compatibility-date.d.ts +1 -1
  3. package/lib/cloudflare/compatibility-date.d.ts.map +1 -1
  4. package/lib/cloudflare/dns-records.d.ts +6 -0
  5. package/lib/cloudflare/dns-records.d.ts.map +1 -1
  6. package/lib/cloudflare/dns-records.js +14 -12
  7. package/lib/cloudflare/dns-records.js.map +1 -1
  8. package/lib/cloudflare/index.d.ts +1 -0
  9. package/lib/cloudflare/index.d.ts.map +1 -1
  10. package/lib/cloudflare/index.js +1 -0
  11. package/lib/cloudflare/index.js.map +1 -1
  12. package/lib/cloudflare/r2-bucket-notification.d.ts +312 -0
  13. package/lib/cloudflare/r2-bucket-notification.d.ts.map +1 -0
  14. package/lib/cloudflare/r2-bucket-notification.js +387 -0
  15. package/lib/cloudflare/r2-bucket-notification.js.map +1 -0
  16. package/lib/cloudflare/worker.d.ts.map +1 -1
  17. package/lib/cloudflare/worker.js +8 -1
  18. package/lib/cloudflare/worker.js.map +1 -1
  19. package/lib/cloudflare/workflow.d.ts +17 -0
  20. package/lib/cloudflare/workflow.d.ts.map +1 -1
  21. package/lib/cloudflare/workflow.js +1 -0
  22. package/lib/cloudflare/workflow.js.map +1 -1
  23. package/lib/cloudflare/wrangler.json.js +1 -0
  24. package/lib/cloudflare/wrangler.json.js.map +1 -1
  25. package/lib/docker/api.d.ts +40 -0
  26. package/lib/docker/api.d.ts.map +1 -1
  27. package/lib/docker/api.js +30 -0
  28. package/lib/docker/api.js.map +1 -1
  29. package/lib/docker/network.d.ts.map +1 -1
  30. package/lib/docker/network.js +24 -7
  31. package/lib/docker/network.js.map +1 -1
  32. package/lib/encrypt.d.ts.map +1 -1
  33. package/lib/encrypt.js +2 -2
  34. package/lib/encrypt.js.map +1 -1
  35. package/lib/planetscale/api.d.ts +1 -0
  36. package/lib/planetscale/api.d.ts.map +1 -1
  37. package/lib/planetscale/api.js +1 -1
  38. package/lib/planetscale/api.js.map +1 -1
  39. package/lib/planetscale/branch.d.ts +28 -0
  40. package/lib/planetscale/branch.d.ts.map +1 -1
  41. package/lib/planetscale/branch.js +12 -0
  42. package/lib/planetscale/branch.js.map +1 -1
  43. package/lib/planetscale/database-extensions.d.ts +515 -0
  44. package/lib/planetscale/database-extensions.d.ts.map +1 -0
  45. package/lib/planetscale/database-extensions.js +389 -0
  46. package/lib/planetscale/database-extensions.js.map +1 -0
  47. package/lib/planetscale/database.d.ts +40 -2
  48. package/lib/planetscale/database.d.ts.map +1 -1
  49. package/lib/planetscale/database.js +76 -1
  50. package/lib/planetscale/database.js.map +1 -1
  51. package/lib/scope.d.ts.map +1 -1
  52. package/lib/scope.js +1 -2
  53. package/lib/scope.js.map +1 -1
  54. package/lib/util/telemetry.d.ts +1 -6
  55. package/lib/util/telemetry.d.ts.map +1 -1
  56. package/lib/util/telemetry.js.map +1 -1
  57. package/package.json +6 -6
  58. package/src/cloudflare/dns-records.ts +25 -16
  59. package/src/cloudflare/index.ts +1 -0
  60. package/src/cloudflare/r2-bucket-notification.ts +809 -0
  61. package/src/cloudflare/worker.ts +8 -1
  62. package/src/cloudflare/workflow.ts +18 -0
  63. package/src/cloudflare/wrangler.json.ts +1 -0
  64. package/src/docker/api.ts +61 -0
  65. package/src/docker/network.ts +27 -7
  66. package/src/encrypt.ts +2 -0
  67. package/src/planetscale/api.ts +1 -1
  68. package/src/planetscale/branch.ts +45 -0
  69. package/src/planetscale/database-extensions.ts +947 -0
  70. package/src/planetscale/database.ts +141 -2
  71. package/src/scope.ts +1 -2
  72. package/src/util/telemetry.ts +1 -20
  73. package/workers/cloudflare-state-store.js +57 -57
  74. package/workers/tunnel-proxy.js +1 -1
  75. package/lib/state/instrumented-state-store.d.ts +0 -19
  76. package/lib/state/instrumented-state-store.d.ts.map +0 -1
  77. package/lib/state/instrumented-state-store.js +0 -68
  78. package/lib/state/instrumented-state-store.js.map +0 -1
  79. package/src/state/instrumented-state-store.ts +0 -108
@@ -0,0 +1,389 @@
1
+ import { poll } from "../util/poll.js";
2
+ import { extractToken } from "./api.js";
3
+ /**
4
+ * Base libraries that PlanetScale always includes in shared_preload_libraries.
5
+ * These are managed internally and should not be toggled by users.
6
+ * @internal
7
+ */
8
+ const BASE_LIBRARIES = ["pg_pscale_utils", "pg_readonly", "pgextwlist"];
9
+ function mapPgCron(config) {
10
+ return {
11
+ library: "pg_cron",
12
+ params: {
13
+ "cron.database_name": config.databaseName ?? "postgres",
14
+ "cron.launch_active_jobs": config.launchActiveJobs ?? "on",
15
+ "cron.log_min_messages": config.logMinMessages ?? "warning",
16
+ "cron.log_run": config.logRun ?? "on",
17
+ "cron.log_statement": config.logStatement ?? "on",
18
+ "cron.max_running_jobs": String(config.maxRunningJobs ?? 1),
19
+ },
20
+ };
21
+ }
22
+ function mapPgDuckdb(config) {
23
+ return {
24
+ library: "pg_duckdb",
25
+ params: {
26
+ "duckdb.postgres_role": config.postgresRole ?? "pscale_superuser",
27
+ "duckdb.memory_limit": config.memoryLimit ?? "0",
28
+ },
29
+ };
30
+ }
31
+ function mapPgHintPlan(config) {
32
+ return {
33
+ library: "pg_hint_plan",
34
+ params: {
35
+ "pg_hint_plan.enable_hint": config.enableHint ?? "on",
36
+ "pg_hint_plan.enable_hint_table": config.enableHintTable ?? "off",
37
+ "pg_hint_plan.parse_messages": config.parseMessages ?? "info",
38
+ "pg_hint_plan.debug_print": config.debugPrint ?? "off",
39
+ "pg_hint_plan.message_level": config.messageLevel ?? "info",
40
+ },
41
+ };
42
+ }
43
+ function mapPgPartmanBgw(config) {
44
+ return {
45
+ library: "pg_partman_bgw",
46
+ params: {
47
+ "pg_partman_bgw.interval": String(config.interval ?? 3600),
48
+ "pg_partman_bgw.dbname": config.dbname ?? "postgres",
49
+ "pg_partman_bgw.role": config.role ?? "postgres",
50
+ "pg_partman_bgw.analyze": config.analyze ?? "off",
51
+ "pg_partman_bgw.jobmon": config.jobmon ?? "on",
52
+ },
53
+ };
54
+ }
55
+ function mapPgSqueeze(config) {
56
+ return {
57
+ library: "pg_squeeze",
58
+ params: {
59
+ "squeeze.max_xlock_time": String(config.maxXlockTime ?? 0),
60
+ "squeeze.worker_autostart": config.workerAutostart ?? "postgres",
61
+ "squeeze.workers_per_database": String(config.workersPerDatabase ?? 1),
62
+ },
63
+ };
64
+ }
65
+ function mapPgStatStatements(config) {
66
+ return {
67
+ library: "pg_stat_statements",
68
+ params: {
69
+ "pg_stat_statements.max": String(config.max ?? 5000),
70
+ "pg_stat_statements.track": config.track ?? "top",
71
+ "pg_stat_statements.track_utility": config.trackUtility ?? "on",
72
+ "pg_stat_statements.track_planning": config.trackPlanning ?? "off",
73
+ "pg_stat_statements.save": config.save ?? "on",
74
+ },
75
+ };
76
+ }
77
+ function mapTimescaledb(config) {
78
+ return {
79
+ library: "timescaledb",
80
+ params: {
81
+ "timescaledb.bgw_log_level": config.bgwLogLevel ?? "warning",
82
+ "timescaledb.enable_chunk_append": config.enableChunkAppend ?? "on",
83
+ "timescaledb.enable_chunk_skipping": config.enableChunkSkipping ?? "off",
84
+ "timescaledb.enable_constraint_aware_append": config.enableConstraintAwareAppend ?? "on",
85
+ "timescaledb.enable_constraint_exclusion": config.enableConstraintExclusion ?? "on",
86
+ "timescaledb.enable_custom_hashagg": config.enableCustomHashagg ?? "off",
87
+ "timescaledb.enable_deprecation_warnings": config.enableDeprecationWarnings ?? "on",
88
+ "timescaledb.enable_event_triggers": config.enableEventTriggers ?? "off",
89
+ "timescaledb.enable_foreign_key_propagation": config.enableForeignKeyPropagation ?? "on",
90
+ "timescaledb.enable_job_execution_logging": config.enableJobExecutionLogging ?? "off",
91
+ "timescaledb.enable_now_constify": config.enableNowConstify ?? "on",
92
+ "timescaledb.enable_optimizations": config.enableOptimizations ?? "on",
93
+ "timescaledb.enable_ordered_append": config.enableOrderedAppend ?? "on",
94
+ "timescaledb.enable_parallel_chunk_append": config.enableParallelChunkAppend ?? "on",
95
+ "timescaledb.enable_qual_propagation": config.enableQualPropagation ?? "on",
96
+ "timescaledb.enable_runtime_exclusion": config.enableRuntimeExclusion ?? "on",
97
+ "timescaledb.enable_tiered_reads": config.enableTieredReads ?? "on",
98
+ "timescaledb.enable_tss_callbacks": config.enableTssCallbacks ?? "on",
99
+ "timescaledb.max_cached_chunks_per_hypertable": String(config.maxCachedChunksPerHypertable ?? 1024),
100
+ "timescaledb.max_open_chunks_per_insert": String(config.maxOpenChunksPerInsert ?? 1024),
101
+ "timescaledb.restoring": config.restoring ?? "off",
102
+ },
103
+ };
104
+ }
105
+ function mapVector(config) {
106
+ return {
107
+ library: "vector",
108
+ params: {
109
+ "hnsw.ef_search": String(config.hnswEfSearch ?? 40),
110
+ "hnsw.iterative_scan": config.hnswIterativeScan ?? "off",
111
+ "hnsw.max_scan_tuples": String(config.hnswMaxScanTuples ?? 20000),
112
+ "hnsw.scan_mem_multiplier": String(config.hnswScanMemMultiplier ?? 1),
113
+ "ivfflat.probes": String(config.ivfflatProbes ?? 1),
114
+ "ivfflat.iterative_scan": config.ivfflatIterativeScan ?? "off",
115
+ "ivfflat.max_probes": String(config.ivfflatMaxProbes ?? 32768),
116
+ },
117
+ };
118
+ }
119
+ function mapPgInsights(config) {
120
+ return {
121
+ library: "pginsights",
122
+ params: {
123
+ "pginsights.raw_queries": config.rawQueries ?? "off",
124
+ "pginsights.normalize_schema_names": config.normalizeSchemaNames ?? "off",
125
+ },
126
+ };
127
+ }
128
+ /**
129
+ * Converts a DatabaseExtensions object into a map of library name -> pgconf params.
130
+ * Only includes extensions that are present (enabled).
131
+ * @internal
132
+ */
133
+ export function extensionsToParamMappings(extensions) {
134
+ const mappings = new Map();
135
+ if (extensions.pgCron !== undefined) {
136
+ const m = mapPgCron(extensions.pgCron);
137
+ mappings.set(m.library, m.params);
138
+ }
139
+ if (extensions.pgDuckdb !== undefined) {
140
+ const m = mapPgDuckdb(extensions.pgDuckdb);
141
+ mappings.set(m.library, m.params);
142
+ }
143
+ if (extensions.pgHintPlan !== undefined) {
144
+ const m = mapPgHintPlan(extensions.pgHintPlan);
145
+ mappings.set(m.library, m.params);
146
+ }
147
+ if (extensions.pgPartmanBgw !== undefined) {
148
+ const m = mapPgPartmanBgw(extensions.pgPartmanBgw);
149
+ mappings.set(m.library, m.params);
150
+ }
151
+ if (extensions.pgSqueeze !== undefined) {
152
+ const m = mapPgSqueeze(extensions.pgSqueeze);
153
+ mappings.set(m.library, m.params);
154
+ }
155
+ if (extensions.pgStatStatements !== undefined) {
156
+ const m = mapPgStatStatements(extensions.pgStatStatements);
157
+ mappings.set(m.library, m.params);
158
+ }
159
+ if (extensions.pgStrict !== undefined) {
160
+ mappings.set("pg_strict", {});
161
+ }
162
+ if (extensions.timescaledb !== undefined) {
163
+ const m = mapTimescaledb(extensions.timescaledb);
164
+ mappings.set(m.library, m.params);
165
+ }
166
+ if (extensions.vector !== undefined) {
167
+ const m = mapVector(extensions.vector);
168
+ mappings.set(m.library, m.params);
169
+ }
170
+ if (extensions.pgInsights !== undefined) {
171
+ const m = mapPgInsights(extensions.pgInsights);
172
+ mappings.set(m.library, m.params);
173
+ }
174
+ return mappings;
175
+ }
176
+ /**
177
+ * Computes the diff between two extension configurations.
178
+ *
179
+ * @param current - The currently active extensions (or `undefined`/`{}` if none)
180
+ * @param desired - The desired extensions configuration
181
+ * @returns An ExtensionsDiff describing what needs to change
182
+ *
183
+ * @example
184
+ * ```ts
185
+ * const diff = diffExtensions(
186
+ * { pgCron: { maxRunningJobs: 1 } },
187
+ * { pgCron: { maxRunningJobs: 5 }, vector: {} },
188
+ * );
189
+ * // diff.changes = [
190
+ * // { library: "pg_cron", action: "update", params: { "cron.max_running_jobs": "5" } },
191
+ * // { library: "vector", action: "add", params: {} },
192
+ * // ]
193
+ * ```
194
+ */
195
+ export function diffExtensions(current, desired) {
196
+ const currentMappings = extensionsToParamMappings(current ?? {});
197
+ const desiredMappings = extensionsToParamMappings(desired ?? {});
198
+ const changes = [];
199
+ // Find additions and updates
200
+ for (const [library, desiredParams] of desiredMappings) {
201
+ const currentParams = currentMappings.get(library);
202
+ if (!currentParams) {
203
+ // Extension is being added
204
+ changes.push({ library, action: "add", params: desiredParams });
205
+ }
206
+ else {
207
+ // Extension exists — check if params changed
208
+ const paramsChanged = JSON.stringify(sortedEntries(currentParams)) !==
209
+ JSON.stringify(sortedEntries(desiredParams));
210
+ if (paramsChanged) {
211
+ changes.push({ library, action: "update", params: desiredParams });
212
+ }
213
+ }
214
+ }
215
+ // Find removals
216
+ for (const [library] of currentMappings) {
217
+ if (!desiredMappings.has(library)) {
218
+ changes.push({ library, action: "remove", params: {} });
219
+ }
220
+ }
221
+ return {
222
+ changes,
223
+ hasChanges: changes.length > 0,
224
+ };
225
+ }
226
+ function sortedEntries(obj) {
227
+ return Object.entries(obj).sort(([a], [b]) => a.localeCompare(b));
228
+ }
229
+ function resolveOptions(opts) {
230
+ const organization = opts.organization ??
231
+ (typeof opts.database !== "string"
232
+ ? opts.database.organization
233
+ : undefined) ??
234
+ process.env.PLANETSCALE_ORGANIZATION ??
235
+ process.env.PLANETSCALE_ORG_ID;
236
+ if (!organization) {
237
+ throw new Error("PlanetScale organization is required. Please set the `organization` property or the `PLANETSCALE_ORGANIZATION` environment variable.");
238
+ }
239
+ const database = typeof opts.database === "string" ? opts.database : opts.database.name;
240
+ const branch = !opts.branch
241
+ ? "main"
242
+ : typeof opts.branch === "string"
243
+ ? opts.branch
244
+ : opts.branch.name;
245
+ const baseUrl = opts.baseUrl ?? "https://api.planetscale.com/v1";
246
+ const token = extractToken(opts);
247
+ return { organization, database, branch, baseUrl, token };
248
+ }
249
+ /**
250
+ * Builds the multipart/form-data body for a change request that sets extensions.
251
+ *
252
+ * The API expects:
253
+ * - `_method=PATCH`
254
+ * - `queued=1` (for queue phase) or `update=1` (for apply phase)
255
+ * - `parameters[pgconf][shared_preload_libraries][]` repeated for each library
256
+ * - `parameters[pgconf][<param.name>]=<param.value>` for each config param
257
+ *
258
+ * @internal
259
+ */
260
+ function buildExtensionFormData(desired, phase) {
261
+ const form = new FormData();
262
+ form.append("_method", "PATCH");
263
+ if (phase === "apply") {
264
+ form.append("update", "1");
265
+ return form;
266
+ }
267
+ // Queue phase — include all libraries and params
268
+ form.append("queued", "1");
269
+ const mappings = extensionsToParamMappings(desired);
270
+ // Always include base libraries
271
+ for (const lib of BASE_LIBRARIES) {
272
+ form.append("parameters[pgconf][shared_preload_libraries][]", lib);
273
+ }
274
+ // Include pginsights in base libraries if it has config, otherwise include as base
275
+ const hasPgInsights = mappings.has("pginsights");
276
+ if (!hasPgInsights) {
277
+ // pginsights is always loaded; if user didn't explicitly configure it, include with defaults off
278
+ form.append("parameters[pgconf][shared_preload_libraries][]", "pginsights");
279
+ form.append("parameters[pgconf][pginsights.raw_queries]", "off");
280
+ form.append("parameters[pgconf][pginsights.normalize_schema_names]", "off");
281
+ }
282
+ // Add user-requested extensions
283
+ for (const [library, params] of mappings) {
284
+ form.append("parameters[pgconf][shared_preload_libraries][]", library);
285
+ for (const [key, value] of Object.entries(params)) {
286
+ form.append(`parameters[pgconf][${key}]`, value);
287
+ }
288
+ }
289
+ return form;
290
+ }
291
+ /**
292
+ * Updates the PostgreSQL extensions on a PlanetScale database branch.
293
+ *
294
+ * Uses the reverse-engineered two-phase change request API:
295
+ * 1. **Queue** — submits a change request with the desired extension config
296
+ * 2. **Apply** — triggers execution of the queued change
297
+ * 3. **Poll** — waits for the change to complete
298
+ *
299
+ * @param desired - The desired extension configuration. Extensions present are enabled;
300
+ * extensions absent are disabled.
301
+ * @param options - Connection and targeting options.
302
+ *
303
+ * @example
304
+ * ## Enable pgvector and pg_cron
305
+ *
306
+ * ```ts
307
+ * await updateExtensions(
308
+ * {
309
+ * vector: { hnswEfSearch: 100 },
310
+ * pgCron: {},
311
+ * },
312
+ * {
313
+ * organization: "my-org",
314
+ * database: "my-db",
315
+ * branch: "main",
316
+ * },
317
+ * );
318
+ * ```
319
+ *
320
+ * @example
321
+ * ## Disable all user extensions
322
+ *
323
+ * ```ts
324
+ * await updateExtensions({}, {
325
+ * organization: "my-org",
326
+ * database: "my-db",
327
+ * });
328
+ * ```
329
+ */
330
+ export async function updateExtensions(desired, options) {
331
+ const { organization, database, branch, baseUrl, token } = resolveOptions(options);
332
+ const changesUrl = `${baseUrl}/organizations/${organization}/databases/${database}/branches/${branch}/changes`;
333
+ // Wait for any in-flight changes to complete before submitting ours
334
+ await waitForPendingChanges(changesUrl, token);
335
+ // Phase 1: Queue the change
336
+ const queueForm = buildExtensionFormData(desired, "queue");
337
+ const queueResponse = await fetch(changesUrl, {
338
+ method: "POST",
339
+ headers: {
340
+ Authorization: token,
341
+ },
342
+ body: queueForm,
343
+ });
344
+ if (!queueResponse.ok) {
345
+ const errorBody = await queueResponse.text();
346
+ throw new Error(`Failed to queue extension change (${queueResponse.status}): ${errorBody}`);
347
+ }
348
+ // Phase 2: Apply the change
349
+ const applyForm = buildExtensionFormData(desired, "apply");
350
+ const applyResponse = await fetch(changesUrl, {
351
+ method: "POST",
352
+ headers: {
353
+ Authorization: token,
354
+ },
355
+ body: applyForm,
356
+ });
357
+ if (!applyResponse.ok) {
358
+ const errorBody = await applyResponse.text();
359
+ throw new Error(`Failed to apply extension change (${applyResponse.status}): ${errorBody}`);
360
+ }
361
+ // Phase 3: Poll until the change is completed
362
+ await waitForPendingChanges(changesUrl, token);
363
+ }
364
+ /**
365
+ * Polls the changes endpoint until all changes are completed or canceled.
366
+ * @internal
367
+ */
368
+ async function waitForPendingChanges(changesUrl, token) {
369
+ await poll({
370
+ description: "extension changes to complete",
371
+ fn: async () => {
372
+ const response = await fetch(`${changesUrl}?per_page=1`, {
373
+ headers: { Authorization: token },
374
+ });
375
+ if (!response.ok) {
376
+ throw new Error(`Failed to poll change status (${response.status}): ${await response.text()}`);
377
+ }
378
+ const data = (await response.json());
379
+ return data;
380
+ },
381
+ predicate: (result) => {
382
+ if (result.data.length === 0)
383
+ return true;
384
+ const latest = result.data[0];
385
+ return latest.state === "completed" || latest.state === "canceled";
386
+ },
387
+ });
388
+ }
389
+ //# sourceMappingURL=database-extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-extensions.js","sourceRoot":"","sources":["../../src/planetscale/database-extensions.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { Context } from "../context.ts";
2
2
  import type { PlanetScaleProps } from "./api.ts";
3
+ import { type DatabaseExtensions } from "./database-extensions.ts";
3
4
  import { type PlanetScaleClusterSize } from "./utils.ts";
4
5
  interface BaseDatabaseProps extends PlanetScaleProps {
5
6
  /**
@@ -24,11 +25,15 @@ interface BaseDatabaseProps extends PlanetScaleProps {
24
25
  */
25
26
  delete?: boolean;
26
27
  /**
27
- * The region where the database will be created (create only)
28
+ * The region where the database will be created (create only).
29
+ *
30
+ * @see https://planetscale.com/docs/concepts/regions
28
31
  */
29
32
  region?: {
30
33
  /**
31
- * The slug identifier of the region
34
+ * The slug identifier of the region (e.g. "us-east", "eu-west", "gcp-us-central1")
35
+ *
36
+ * @see https://planetscale.com/docs/concepts/regions#available-regions
32
37
  */
33
38
  slug: string;
34
39
  };
@@ -106,6 +111,26 @@ interface PostgreSQLDatabaseProps extends BaseDatabaseProps {
106
111
  * The CPU architecture for the database (PostgreSQL only)
107
112
  */
108
113
  arch?: "x86" | "arm";
114
+ /**
115
+ * PostgreSQL extensions to enable on the default branch.
116
+ * Each key represents an extension — if present (even as `{}`), it is enabled with the given config or defaults.
117
+ * If absent, the extension is disabled. (PostgreSQL only)
118
+ *
119
+ * @example
120
+ * ```ts
121
+ * const db = await Database("my-pg-db", {
122
+ * kind: "postgresql",
123
+ * organization: "my-org",
124
+ * clusterSize: "PS_10",
125
+ * extensions: {
126
+ * vector: { hnswEfSearch: 100 },
127
+ * pgCron: {},
128
+ * pgStatStatements: { max: 10000 },
129
+ * },
130
+ * });
131
+ * ```
132
+ */
133
+ extensions?: DatabaseExtensions;
109
134
  }
110
135
  /**
111
136
  * Properties for creating or updating a PlanetScale Database
@@ -151,6 +176,19 @@ export type Database = DatabaseProps & {
151
176
  * The organization of the database
152
177
  */
153
178
  organization: string;
179
+ /**
180
+ * The region of the database as reported by PlanetScale.
181
+ *
182
+ * @see https://planetscale.com/docs/concepts/regions
183
+ */
184
+ region: {
185
+ /**
186
+ * The slug identifier of the region (e.g. "us-east", "eu-west", "gcp-us-central1")
187
+ *
188
+ * @see https://planetscale.com/docs/concepts/regions#available-regions
189
+ */
190
+ slug: string;
191
+ };
154
192
  };
155
193
  /**
156
194
  * Create, manage and delete PlanetScale databases
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/planetscale/database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,EAEL,KAAK,sBAAsB,EAG5B,MAAM,YAAY,CAAC;AAEpB,UAAU,iBAAkB,SAAQ,gBAAgB;IAClD;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE;QACP;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,WAAW,EAAE,sBAAsB,CAAC;IAEpC;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IAE9B;;OAEG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAErC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,UAAU,kBAAmB,SAAQ,iBAAiB;IACpD,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC;AAED;;GAEG;AACH,UAAU,uBAAwB,SAAQ,iBAAiB;IACzD,IAAI,EAAE,YAAY,CAAC;IAEnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,kBAAkB,GAAG,uBAAuB,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG;IACrC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,QAAQ,yFAGX,OAAO,CAAC,QAAQ,CAAC,MACnB,MAAM,SACH,aAAa,KACnB,OAAO,CAAC,QAAQ,CAAC,CA4QrB,CAAC"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/planetscale/database.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { Resource } from "../resource.js";
2
2
  import { createPlanetScaleClient } from "./api.js";
3
- import { ensureProductionBranchClusterSize, sanitizeClusterSize, waitForDatabaseReady, } from "./utils.js";
3
+ import { diffExtensions, updateExtensions, } from "./database-extensions.js";
4
+ import { ensureProductionBranchClusterSize, sanitizeClusterSize, waitForBranchReady, waitForDatabaseReady, } from "./utils.js";
4
5
  /**
5
6
  * Create, manage and delete PlanetScale databases
6
7
  *
@@ -99,6 +100,38 @@ export const Database = Resource("planetscale::Database", async function (id, pr
99
100
  cause: getResponse.error,
100
101
  });
101
102
  }
103
+ // Validate immutable properties match if specified
104
+ const actualKind = getResponse.data.kind;
105
+ if (props.kind && actualKind !== props.kind) {
106
+ throw new Error(`Database "${databaseName}" has kind "${actualKind}" but expected "${props.kind}". ` +
107
+ `Database kind cannot be changed after creation.`);
108
+ }
109
+ if (props.region) {
110
+ const actualSlug = getResponse.data.region.slug;
111
+ if (actualSlug !== props.region.slug) {
112
+ throw new Error(`Database "${databaseName}" is in region "${actualSlug}" but expected "${props.region.slug}". ` +
113
+ `PlanetScale database regions cannot be changed after creation. ` +
114
+ `Either update the region in your configuration to match, or create a new database in the correct region.`);
115
+ }
116
+ }
117
+ if (props.kind === "postgresql" && props.arch) {
118
+ const defaultBranch = props.defaultBranch || "main";
119
+ const branchInfo = await api.getBranch({
120
+ path: {
121
+ organization,
122
+ database: databaseName,
123
+ branch: defaultBranch,
124
+ },
125
+ throwOnError: false,
126
+ });
127
+ if (branchInfo.data?.cluster_architecture) {
128
+ const actualArch = branchInfo.data.cluster_architecture === "aarch64" ? "arm" : "x86";
129
+ if (actualArch !== props.arch) {
130
+ throw new Error(`Database "${databaseName}" has architecture "${actualArch}" but expected "${props.arch}". ` +
131
+ `Database architecture cannot be changed after creation.`);
132
+ }
133
+ }
134
+ }
102
135
  // Update database settings
103
136
  // If updating to a non-'main' default branch, create it first
104
137
  if (props.defaultBranch && props.defaultBranch !== "main") {
@@ -150,6 +183,24 @@ export const Database = Resource("planetscale::Database", async function (id, pr
150
183
  },
151
184
  });
152
185
  await ensureProductionBranchClusterSize(api, organization, databaseName, props.defaultBranch || "main", data.kind, clusterSize);
186
+ // Sync PostgreSQL extensions on update
187
+ if (props.kind === "postgresql") {
188
+ const previousExtensions = this.output?.kind === "postgresql"
189
+ ? this.output.extensions
190
+ : undefined;
191
+ const desiredExtensions = props.extensions;
192
+ const diff = diffExtensions(previousExtensions, desiredExtensions);
193
+ if (diff.hasChanges) {
194
+ const branch = props.defaultBranch || "main";
195
+ await waitForBranchReady(api, organization, databaseName, branch);
196
+ await updateExtensions(desiredExtensions ?? {}, {
197
+ ...props,
198
+ organization,
199
+ database: databaseName,
200
+ branch,
201
+ });
202
+ }
203
+ }
153
204
  return {
154
205
  ...props,
155
206
  id: data.id,
@@ -161,6 +212,7 @@ export const Database = Resource("planetscale::Database", async function (id, pr
161
212
  updatedAt: data.updated_at,
162
213
  htmlUrl: data.html_url,
163
214
  organization,
215
+ region: { slug: data.region.slug },
164
216
  };
165
217
  }
166
218
  if (getResponse.data) {
@@ -241,6 +293,16 @@ export const Database = Resource("planetscale::Database", async function (id, pr
241
293
  default_branch: props.defaultBranch,
242
294
  },
243
295
  });
296
+ // Enable PostgreSQL extensions on the new default branch
297
+ if (props.kind === "postgresql" && props.extensions) {
298
+ await waitForBranchReady(api, organization, databaseName, props.defaultBranch);
299
+ await updateExtensions(props.extensions, {
300
+ ...props,
301
+ organization,
302
+ database: databaseName,
303
+ branch: props.defaultBranch,
304
+ });
305
+ }
244
306
  return {
245
307
  ...props,
246
308
  id: data.id,
@@ -252,9 +314,21 @@ export const Database = Resource("planetscale::Database", async function (id, pr
252
314
  updatedAt: updatedData.updated_at,
253
315
  htmlUrl: updatedData.html_url,
254
316
  organization,
317
+ region: { slug: updatedData.region.slug },
255
318
  };
256
319
  }
257
320
  }
321
+ // Enable PostgreSQL extensions on the default branch (main)
322
+ if (props.kind === "postgresql" && props.extensions) {
323
+ const branch = props.defaultBranch || "main";
324
+ await waitForBranchReady(api, organization, databaseName, branch);
325
+ await updateExtensions(props.extensions, {
326
+ ...props,
327
+ organization,
328
+ database: databaseName,
329
+ branch,
330
+ });
331
+ }
258
332
  return {
259
333
  ...props,
260
334
  id: data.id,
@@ -266,6 +340,7 @@ export const Database = Resource("planetscale::Database", async function (id, pr
266
340
  updatedAt: data.updated_at,
267
341
  htmlUrl: data.html_url,
268
342
  organization,
343
+ region: { slug: data.region.slug },
269
344
  };
270
345
  });
271
346
  //# sourceMappingURL=database.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/planetscale/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/planetscale/database.ts"],"names":[],"mappings":"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"}