alchemy 0.63.1 → 0.65.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 (235) hide show
  1. package/bin/alchemy.js +7664 -5857
  2. package/bin/commands/init.ts +130 -9
  3. package/bin/constants.ts +4 -0
  4. package/bin/services/cdp-manager/cdp-proxy.ts +69 -0
  5. package/bin/services/cdp-manager/server.ts +173 -0
  6. package/bin/services/execute-alchemy.ts +83 -4
  7. package/bin/types.ts +1 -0
  8. package/lib/alchemy.d.ts +4 -0
  9. package/lib/alchemy.d.ts.map +1 -1
  10. package/lib/alchemy.js +10 -4
  11. package/lib/alchemy.js.map +1 -1
  12. package/lib/apply.d.ts +3 -0
  13. package/lib/apply.d.ts.map +1 -1
  14. package/lib/apply.js +11 -1
  15. package/lib/apply.js.map +1 -1
  16. package/lib/cloudflare/bindings.d.ts +3 -1
  17. package/lib/cloudflare/bindings.d.ts.map +1 -1
  18. package/lib/cloudflare/bucket.d.ts +2 -1
  19. package/lib/cloudflare/bucket.d.ts.map +1 -1
  20. package/lib/cloudflare/bucket.js.map +1 -1
  21. package/lib/cloudflare/bundle/cloudflare-internal.d.ts +6 -0
  22. package/lib/cloudflare/bundle/cloudflare-internal.d.ts.map +1 -0
  23. package/lib/cloudflare/bundle/cloudflare-internal.js +39 -0
  24. package/lib/cloudflare/bundle/cloudflare-internal.js.map +1 -0
  25. package/lib/cloudflare/bundle/nodejs-builtin-modules.d.ts +2 -0
  26. package/lib/cloudflare/bundle/nodejs-builtin-modules.d.ts.map +1 -0
  27. package/lib/cloudflare/bundle/nodejs-builtin-modules.js +9 -0
  28. package/lib/cloudflare/bundle/nodejs-builtin-modules.js.map +1 -0
  29. package/lib/cloudflare/bundle/plugin-als-external.d.ts +6 -0
  30. package/lib/cloudflare/bundle/plugin-als-external.d.ts.map +1 -0
  31. package/lib/cloudflare/bundle/plugin-als-external.js +12 -0
  32. package/lib/cloudflare/bundle/plugin-als-external.js.map +1 -0
  33. package/lib/cloudflare/bundle/plugin-hybrid-node-compat.d.ts +4 -1
  34. package/lib/cloudflare/bundle/plugin-hybrid-node-compat.d.ts.map +1 -1
  35. package/lib/cloudflare/bundle/plugin-hybrid-node-compat.js +23 -23
  36. package/lib/cloudflare/bundle/plugin-hybrid-node-compat.js.map +1 -1
  37. package/lib/cloudflare/bundle/plugin-node-compat.d.ts +11 -0
  38. package/lib/cloudflare/bundle/plugin-node-compat.d.ts.map +1 -0
  39. package/lib/cloudflare/bundle/plugin-node-compat.js +93 -0
  40. package/lib/cloudflare/bundle/plugin-node-compat.js.map +1 -0
  41. package/lib/cloudflare/bundle/plugin-wasm.d.ts.map +1 -1
  42. package/lib/cloudflare/bundle/plugin-wasm.js +20 -11
  43. package/lib/cloudflare/bundle/plugin-wasm.js.map +1 -1
  44. package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
  45. package/lib/cloudflare/compatibility-date.gen.js +1 -1
  46. package/lib/cloudflare/d1-local-migrations.js.map +1 -1
  47. package/lib/cloudflare/durable-object-namespace.d.ts +1 -0
  48. package/lib/cloudflare/durable-object-namespace.d.ts.map +1 -1
  49. package/lib/cloudflare/durable-object-namespace.js.map +1 -1
  50. package/lib/cloudflare/hyperdrive.d.ts +7 -2
  51. package/lib/cloudflare/hyperdrive.d.ts.map +1 -1
  52. package/lib/cloudflare/hyperdrive.js +39 -57
  53. package/lib/cloudflare/hyperdrive.js.map +1 -1
  54. package/lib/cloudflare/index.d.ts +1 -0
  55. package/lib/cloudflare/index.d.ts.map +1 -1
  56. package/lib/cloudflare/index.js +1 -0
  57. package/lib/cloudflare/index.js.map +1 -1
  58. package/lib/cloudflare/next.d.ts +13 -0
  59. package/lib/cloudflare/next.d.ts.map +1 -0
  60. package/lib/cloudflare/next.js +91 -0
  61. package/lib/cloudflare/next.js.map +1 -0
  62. package/lib/cloudflare/website.d.ts.map +1 -1
  63. package/lib/cloudflare/website.js +80 -82
  64. package/lib/cloudflare/website.js.map +1 -1
  65. package/lib/cloudflare/worker-assets.d.ts +3 -3
  66. package/lib/cloudflare/worker-assets.d.ts.map +1 -1
  67. package/lib/cloudflare/worker-assets.js +22 -47
  68. package/lib/cloudflare/worker-assets.js.map +1 -1
  69. package/lib/cloudflare/worker-bundle.d.ts +6 -0
  70. package/lib/cloudflare/worker-bundle.d.ts.map +1 -1
  71. package/lib/cloudflare/worker-bundle.js +34 -10
  72. package/lib/cloudflare/worker-bundle.js.map +1 -1
  73. package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
  74. package/lib/cloudflare/worker-metadata.js +1 -0
  75. package/lib/cloudflare/worker-metadata.js.map +1 -1
  76. package/lib/cloudflare/worker.d.ts.map +1 -1
  77. package/lib/cloudflare/worker.js +24 -6
  78. package/lib/cloudflare/worker.js.map +1 -1
  79. package/lib/cloudflare/wrangler.json.d.ts +4 -6
  80. package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
  81. package/lib/cloudflare/wrangler.json.js +20 -15
  82. package/lib/cloudflare/wrangler.json.js.map +1 -1
  83. package/lib/context.d.ts +3 -1
  84. package/lib/context.d.ts.map +1 -1
  85. package/lib/context.js +2 -2
  86. package/lib/context.js.map +1 -1
  87. package/lib/destroy.d.ts +8 -0
  88. package/lib/destroy.d.ts.map +1 -1
  89. package/lib/destroy.js +20 -4
  90. package/lib/destroy.js.map +1 -1
  91. package/lib/planetscale/api/client.gen.d.ts +1750 -0
  92. package/lib/planetscale/api/client.gen.d.ts.map +1 -0
  93. package/lib/planetscale/api/client.gen.js +2401 -0
  94. package/lib/planetscale/api/client.gen.js.map +1 -0
  95. package/lib/planetscale/api/index.d.ts +3 -0
  96. package/lib/planetscale/api/index.d.ts.map +1 -0
  97. package/lib/planetscale/api/index.js +4 -0
  98. package/lib/planetscale/api/index.js.map +1 -0
  99. package/lib/planetscale/api/types.gen.d.ts +12156 -0
  100. package/lib/planetscale/api/types.gen.d.ts.map +1 -0
  101. package/lib/planetscale/api/types.gen.js +2 -0
  102. package/lib/planetscale/api/types.gen.js.map +1 -0
  103. package/lib/planetscale/branch.d.ts +5 -8
  104. package/lib/planetscale/branch.d.ts.map +1 -1
  105. package/lib/planetscale/branch.js +122 -97
  106. package/lib/planetscale/branch.js.map +1 -1
  107. package/lib/planetscale/database.d.ts +24 -11
  108. package/lib/planetscale/database.d.ts.map +1 -1
  109. package/lib/planetscale/database.js +163 -118
  110. package/lib/planetscale/database.js.map +1 -1
  111. package/lib/planetscale/index.d.ts +2 -1
  112. package/lib/planetscale/index.d.ts.map +1 -1
  113. package/lib/planetscale/index.js +2 -1
  114. package/lib/planetscale/index.js.map +1 -1
  115. package/lib/planetscale/password.d.ts +7 -8
  116. package/lib/planetscale/password.d.ts.map +1 -1
  117. package/lib/planetscale/password.js +74 -57
  118. package/lib/planetscale/password.js.map +1 -1
  119. package/lib/planetscale/role.d.ts +126 -0
  120. package/lib/planetscale/role.d.ts.map +1 -0
  121. package/lib/planetscale/role.js +144 -0
  122. package/lib/planetscale/role.js.map +1 -0
  123. package/lib/planetscale/utils.d.ts +23 -7
  124. package/lib/planetscale/utils.d.ts.map +1 -1
  125. package/lib/planetscale/utils.js +169 -75
  126. package/lib/planetscale/utils.js.map +1 -1
  127. package/lib/scope.d.ts +5 -1
  128. package/lib/scope.d.ts.map +1 -1
  129. package/lib/scope.js +11 -3
  130. package/lib/scope.js.map +1 -1
  131. package/lib/secret.d.ts +0 -3
  132. package/lib/secret.d.ts.map +1 -1
  133. package/lib/secret.js +0 -2
  134. package/lib/secret.js.map +1 -1
  135. package/lib/state/cloudflare-state-store.js +3 -3
  136. package/lib/state/cloudflare-state-store.js.map +1 -1
  137. package/lib/test/bun.d.ts +2 -2
  138. package/lib/test/bun.d.ts.map +1 -1
  139. package/lib/test/vitest.d.ts +2 -2
  140. package/lib/test/vitest.d.ts.map +1 -1
  141. package/lib/test/vitest.js +4 -4
  142. package/lib/test/vitest.js.map +1 -1
  143. package/lib/util/content-type.js +2 -2
  144. package/lib/util/content-type.js.map +1 -1
  145. package/lib/util/dedent.d.ts +3 -14
  146. package/lib/util/dedent.d.ts.map +1 -1
  147. package/lib/util/dedent.js +33 -45
  148. package/lib/util/dedent.js.map +1 -1
  149. package/lib/util/memoize.d.ts.map +1 -1
  150. package/lib/util/memoize.js +11 -1
  151. package/lib/util/memoize.js.map +1 -1
  152. package/package.json +8 -3
  153. package/src/alchemy.ts +14 -6
  154. package/src/apply.ts +13 -1
  155. package/src/cloudflare/bindings.ts +3 -1
  156. package/src/cloudflare/bucket.ts +3 -1
  157. package/src/cloudflare/bundle/cloudflare-internal.ts +42 -0
  158. package/src/cloudflare/bundle/nodejs-builtin-modules.ts +14 -0
  159. package/src/cloudflare/bundle/plugin-als-external.ts +13 -0
  160. package/src/cloudflare/bundle/plugin-hybrid-node-compat.ts +29 -28
  161. package/src/cloudflare/bundle/plugin-node-compat.ts +114 -0
  162. package/src/cloudflare/bundle/plugin-wasm.ts +34 -14
  163. package/src/cloudflare/compatibility-date.gen.ts +1 -1
  164. package/src/cloudflare/d1-local-migrations.ts +2 -2
  165. package/src/cloudflare/durable-object-namespace.ts +1 -0
  166. package/src/cloudflare/hyperdrive.ts +136 -95
  167. package/src/cloudflare/index.ts +1 -0
  168. package/src/cloudflare/next.ts +123 -0
  169. package/src/cloudflare/website.ts +88 -89
  170. package/src/cloudflare/worker-assets.ts +43 -105
  171. package/src/cloudflare/worker-bundle.ts +46 -9
  172. package/src/cloudflare/worker-metadata.ts +2 -0
  173. package/src/cloudflare/worker.ts +35 -7
  174. package/src/cloudflare/wrangler.json.ts +114 -113
  175. package/src/context.ts +5 -3
  176. package/src/destroy.ts +26 -8
  177. package/src/planetscale/api/client.gen.ts +2882 -0
  178. package/src/planetscale/api/index.ts +4 -0
  179. package/src/planetscale/api/types.gen.ts +13041 -0
  180. package/src/planetscale/branch.ts +170 -162
  181. package/src/planetscale/database.ts +263 -243
  182. package/src/planetscale/index.ts +2 -1
  183. package/src/planetscale/password.ts +89 -86
  184. package/src/planetscale/role.ts +278 -0
  185. package/src/planetscale/utils.ts +289 -128
  186. package/src/scope.ts +12 -3
  187. package/src/secret.ts +0 -4
  188. package/src/state/cloudflare-state-store.ts +4 -4
  189. package/src/test/bun.ts +2 -2
  190. package/src/test/vitest.ts +6 -6
  191. package/src/util/content-type.ts +2 -2
  192. package/src/util/dedent.ts +34 -50
  193. package/src/util/memoize.ts +13 -1
  194. package/templates/astro/alchemy.run.ts +1 -3
  195. package/templates/hono/alchemy.run.ts +0 -1
  196. package/templates/nextjs/README.md +85 -0
  197. package/templates/nextjs/_env +1 -0
  198. package/templates/nextjs/_env.example +1 -0
  199. package/templates/nextjs/_gitignore +46 -0
  200. package/templates/nextjs/alchemy.run.ts +16 -0
  201. package/templates/nextjs/eslint.config.mjs +16 -0
  202. package/templates/nextjs/next-env.d.ts +5 -0
  203. package/templates/nextjs/next.config.ts +10 -0
  204. package/templates/nextjs/open-next.config.ts +5 -0
  205. package/templates/nextjs/package.json +31 -0
  206. package/templates/nextjs/src/app/api/hello/route.ts +19 -0
  207. package/templates/nextjs/src/app/favicon.ico +0 -0
  208. package/templates/nextjs/src/app/globals.css +72 -0
  209. package/templates/nextjs/src/app/layout.tsx +19 -0
  210. package/templates/nextjs/src/app/page.tsx +55 -0
  211. package/templates/nextjs/tsconfig.json +33 -0
  212. package/templates/nextjs/types/env.d.ts +14 -0
  213. package/templates/nuxt/alchemy.run.ts +1 -3
  214. package/templates/react-router/alchemy.run.ts +1 -3
  215. package/templates/rwsdk/alchemy.run.ts +0 -2
  216. package/templates/sveltekit/alchemy.run.ts +1 -3
  217. package/templates/tanstack-start/alchemy.run.ts +1 -3
  218. package/templates/typescript/alchemy.run.ts +0 -1
  219. package/templates/vite/alchemy.run.ts +0 -1
  220. package/workers/cloudflare-state-store.js +58 -58
  221. package/lib/cloudflare/bundle/externals.d.ts +0 -3
  222. package/lib/cloudflare/bundle/externals.d.ts.map +0 -1
  223. package/lib/cloudflare/bundle/externals.js +0 -35
  224. package/lib/cloudflare/bundle/externals.js.map +0 -1
  225. package/lib/cloudflare/bundle/plugin-compat-warning.d.ts +0 -10
  226. package/lib/cloudflare/bundle/plugin-compat-warning.d.ts.map +0 -1
  227. package/lib/cloudflare/bundle/plugin-compat-warning.js +0 -67
  228. package/lib/cloudflare/bundle/plugin-compat-warning.js.map +0 -1
  229. package/lib/planetscale/api.d.ts +0 -53
  230. package/lib/planetscale/api.d.ts.map +0 -1
  231. package/lib/planetscale/api.js +0 -84
  232. package/lib/planetscale/api.js.map +0 -1
  233. package/src/cloudflare/bundle/externals.ts +0 -36
  234. package/src/cloudflare/bundle/plugin-compat-warning.ts +0 -94
  235. package/src/planetscale/api.ts +0 -115
@@ -1,6 +1,6 @@
1
1
  import { Resource } from "../resource.js";
2
- import { PlanetScaleApi } from "./api.js";
3
- import { fixClusterSize, waitForDatabaseReady, } from "./utils.js";
2
+ import { PlanetScaleClient } from "./api/client.gen.js";
3
+ import { ensureProductionBranchClusterSize, sanitizeClusterSize, waitForBranchReady, } from "./utils.js";
4
4
  /**
5
5
  * Create or manage a PlanetScale database branch
6
6
  *
@@ -42,126 +42,151 @@ import { fixClusterSize, waitForDatabaseReady, } from "./utils.js";
42
42
  */
43
43
  export const Branch = Resource("planetscale::Branch", async function (id, props) {
44
44
  const adopt = props.adopt ?? this.scope.adopt;
45
- const apiKey = props.apiKey?.unencrypted || process.env.PLANETSCALE_API_TOKEN;
46
- if (!apiKey) {
47
- throw new Error("PLANETSCALE_API_TOKEN environment variable is required");
48
- }
49
- const api = new PlanetScaleApi({ apiKey });
45
+ const api = new PlanetScaleClient(props);
50
46
  const branchName = props.name ?? this.output?.name ?? this.scope.createPhysicalName(id);
47
+ const parentBranchName = !props.parentBranch
48
+ ? "main"
49
+ : typeof props.parentBranch === "string"
50
+ ? props.parentBranch
51
+ : props.parentBranch.name;
51
52
  if (this.phase === "update" && this.output.name !== branchName) {
52
53
  // TODO(sam): maybe we don't need to replace? just branch again? or rename?
53
54
  this.replace();
54
55
  }
55
56
  if (this.phase === "delete") {
56
- try {
57
- if (this.output?.name) {
58
- const response = await api.delete(`/organizations/${props.organizationId}/databases/${props.databaseName}/branches/${this.output.name}`);
59
- if (!response.ok && response.status !== 404) {
60
- throw new Error(`Failed to delete branch: ${response.statusText} ${await response.text()}`);
61
- }
57
+ if (this.output?.name) {
58
+ const response = await api.organizations.databases.branches.delete({
59
+ path: {
60
+ organization: props.organizationId,
61
+ database: props.databaseName,
62
+ name: this.output.name,
63
+ },
64
+ result: "full",
65
+ });
66
+ if (response.error && response.error.status !== 404) {
67
+ throw new Error(`Failed to delete branch: ${response.error.message}`, {
68
+ cause: response.error,
69
+ });
62
70
  }
63
71
  }
64
- catch (error) {
65
- console.error("Error deleting branch:", error);
66
- throw error;
67
- }
68
72
  return this.destroy();
69
73
  }
70
- try {
71
- const parentBranchName = !props.parentBranch
72
- ? "main"
73
- : typeof props.parentBranch === "string"
74
- ? props.parentBranch
75
- : props.parentBranch.name;
76
- if (typeof props.parentBranch !== "string" && props.parentBranch) {
77
- await waitForDatabaseReady(api, props.organizationId, props.databaseName, props.parentBranch.name);
74
+ if (typeof props.parentBranch !== "string" && props.parentBranch) {
75
+ await waitForBranchReady(api, props.organizationId, props.databaseName, props.parentBranch.name);
76
+ }
77
+ // Check if branch exists
78
+ const getResponse = await api.organizations.databases.branches.get({
79
+ path: {
80
+ organization: props.organizationId,
81
+ database: props.databaseName,
82
+ name: branchName,
83
+ },
84
+ result: "full",
85
+ });
86
+ if (getResponse.error && getResponse.error.status !== 404) {
87
+ // Error getting branch
88
+ throw new Error(`Failed to get branch: ${getResponse.error.message}`, {
89
+ cause: getResponse.error,
90
+ });
91
+ }
92
+ if (getResponse.data) {
93
+ // Branch exists
94
+ if (!adopt) {
95
+ throw new Error(`Branch ${branchName} already exists and adopt is false`);
78
96
  }
79
- // Check if branch exists
80
- const getResponse = await api.get(`/organizations/${props.organizationId}/databases/${props.databaseName}/branches/${branchName}`);
81
- if (!getResponse.ok && getResponse.status !== 404) {
82
- // Error getting branch
83
- throw new Error(`Failed to get branch: ${getResponse.statusText} ${await getResponse.text()}`);
97
+ const data = getResponse.data;
98
+ const currentParentBranch = data.parent_branch || "main";
99
+ // Check immutable properties
100
+ if (props.parentBranch && parentBranchName !== currentParentBranch) {
101
+ throw new Error(`Cannot change parent branch from ${currentParentBranch} to ${parentBranchName}`);
84
102
  }
85
- if (getResponse.ok) {
86
- // Branch exists
87
- if (!adopt) {
88
- throw new Error(`Branch ${branchName} already exists and adopt is false`);
89
- }
90
- const data = await getResponse.json();
91
- const currentParentBranch = data.parent_branch || "main";
92
- // Check immutable properties
93
- if (props.parentBranch && parentBranchName !== currentParentBranch) {
94
- throw new Error(`Cannot change parent branch from ${currentParentBranch} to ${parentBranchName}`);
95
- }
96
- if (this.output?.backupId) {
97
- console.warn("BackupID is set, but branch already exists, so it will be ignored");
98
- }
99
- if (this.output?.seedData) {
100
- console.warn("SeedData is set, but branch already exists, so it will be ignored");
101
- }
102
- // Update mutable properties if they've changed
103
- if (props.safeMigrations !== undefined) {
104
- const safeMigrationsResponse = await api[props.safeMigrations ? "post" : "delete"](`/organizations/${props.organizationId}/databases/${props.databaseName}/branches/${branchName}/safe-migrations`);
105
- if (!safeMigrationsResponse.ok) {
106
- throw new Error(`Failed to ${props.safeMigrations ? "enable" : "disable"} safe migrations: ${safeMigrationsResponse.statusText}`);
107
- }
108
- }
109
- if (props.clusterSize && data.cluster_size !== props.clusterSize) {
110
- const clusterResponse = await api.patch(`/organizations/${props.organizationId}/databases/${props.databaseName}/branches/${branchName}/cluster`, {
111
- cluster_size: props.clusterSize,
112
- });
113
- if (!clusterResponse.ok) {
114
- throw new Error(`Failed to update cluster size: ${clusterResponse.statusText}`);
115
- }
116
- }
117
- return this({
118
- ...props,
119
- name: branchName,
120
- parentBranch: currentParentBranch,
121
- createdAt: data.created_at,
122
- updatedAt: data.updated_at,
123
- htmlUrl: data.html_url,
124
- });
103
+ if (this.output?.backupId) {
104
+ console.warn("BackupID is set, but branch already exists, so it will be ignored");
125
105
  }
126
- await waitForDatabaseReady(api, props.organizationId, props.databaseName);
127
- // Branch doesn't exist, create it
128
- const createResponse = await api.post(`/organizations/${props.organizationId}/databases/${props.databaseName}/branches`, {
129
- name: branchName,
130
- parent_branch: parentBranchName,
131
- backup_id: props.backupId,
132
- seed_data: props.seedData,
133
- cluster_size: props.clusterSize,
134
- });
135
- if (!createResponse.ok) {
136
- throw new Error(`Failed to create branch: ${createResponse.statusText} ${await createResponse.text()}`);
106
+ if (this.output?.seedData) {
107
+ console.warn("SeedData is set, but branch already exists, so it will be ignored");
137
108
  }
138
- const data = await createResponse.json();
139
- // Handle safe migrations if specified
109
+ // Update mutable properties if they've changed
140
110
  if (props.safeMigrations !== undefined) {
141
- // We can't change the migrations mode if the database is not ready
142
- await waitForDatabaseReady(api, props.organizationId, props.databaseName, branchName);
143
- const safeMigrationsResponse = await api[props.safeMigrations ? "post" : "delete"](`/organizations/${props.organizationId}/databases/${props.databaseName}/branches/${branchName}/safe-migrations`);
144
- if (!safeMigrationsResponse.ok) {
145
- throw new Error(`Failed to ${props.safeMigrations ? "enable" : "disable"} safe migrations: ${safeMigrationsResponse.statusText} : ${await safeMigrationsResponse.text()}`);
146
- }
111
+ await api.organizations.databases.branches.safeMigrations[props.safeMigrations ? "post" : "delete"]({
112
+ path: {
113
+ organization: props.organizationId,
114
+ database: props.databaseName,
115
+ name: branchName,
116
+ },
117
+ });
147
118
  }
148
- // Handle cluster size update if specified
149
- if (props.clusterSize) {
150
- // Wait for database to be ready before modifying cluster size
151
- await fixClusterSize(api, props.organizationId, props.databaseName, branchName, props.clusterSize, true);
119
+ const clusterSize = props.clusterSize
120
+ ? sanitizeClusterSize({
121
+ size: props.clusterSize,
122
+ kind: data.kind,
123
+ arch: data.cluster_architecture === "aarch64" ? "arm" : "x86",
124
+ region: data.region.slug,
125
+ })
126
+ : undefined;
127
+ if (clusterSize && data.cluster_name !== clusterSize) {
128
+ if (!props.isProduction) {
129
+ throw new Error(`Cannot change cluster size of non-production branch ${branchName}`);
130
+ }
131
+ await ensureProductionBranchClusterSize(api, props.organizationId, props.databaseName, branchName, data.kind, clusterSize);
152
132
  }
153
133
  return this({
154
134
  ...props,
155
135
  name: branchName,
156
- parentBranch: data.parent_branch,
136
+ parentBranch: currentParentBranch,
157
137
  createdAt: data.created_at,
158
138
  updatedAt: data.updated_at,
159
139
  htmlUrl: data.html_url,
160
140
  });
161
141
  }
162
- catch (error) {
163
- console.error("Error managing branch:", error);
164
- throw error;
142
+ let clusterSize;
143
+ const parent = await waitForBranchReady(api, props.organizationId, props.databaseName, parentBranchName);
144
+ if (props.clusterSize) {
145
+ clusterSize = sanitizeClusterSize({
146
+ size: props.clusterSize,
147
+ kind: parent.kind,
148
+ arch: parent.cluster_architecture === "aarch64" ? "arm" : "x86",
149
+ region: parent.region.slug,
150
+ });
151
+ }
152
+ // Branch doesn't exist, create it
153
+ const data = await api.organizations.databases.branches.post({
154
+ path: {
155
+ organization: props.organizationId,
156
+ database: props.databaseName,
157
+ },
158
+ body: {
159
+ name: branchName,
160
+ parent_branch: parentBranchName,
161
+ backup_id: props.backupId,
162
+ seed_data: props.seedData,
163
+ // This is ignored unless props.backupId is provided
164
+ cluster_size: clusterSize,
165
+ },
166
+ });
167
+ // Handle safe migrations if specified
168
+ if (props.safeMigrations !== undefined) {
169
+ // We can't change the migrations mode if the branch is not ready
170
+ await waitForBranchReady(api, props.organizationId, props.databaseName, branchName);
171
+ await api.organizations.databases.branches.safeMigrations[props.safeMigrations ? "post" : "delete"]({
172
+ path: {
173
+ organization: props.organizationId,
174
+ database: props.databaseName,
175
+ name: branchName,
176
+ },
177
+ });
178
+ }
179
+ // Handle cluster size update if specified
180
+ if (clusterSize) {
181
+ await ensureProductionBranchClusterSize(api, props.organizationId, props.databaseName, branchName, data.kind, clusterSize);
165
182
  }
183
+ return this({
184
+ ...props,
185
+ name: branchName,
186
+ parentBranch: data.parent_branch,
187
+ createdAt: data.created_at,
188
+ updatedAt: data.updated_at,
189
+ htmlUrl: data.html_url,
190
+ });
166
191
  });
167
192
  //# sourceMappingURL=branch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"branch.js","sourceRoot":"","sources":["../../src/planetscale/branch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"branch.js","sourceRoot":"","sources":["../../src/planetscale/branch.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,8 @@
1
1
  import type { Context } from "../context.ts";
2
2
  import { Resource } from "../resource.ts";
3
- import type { Secret } from "../secret.ts";
3
+ import type { PlanetScaleProps } from "./api/client.gen.ts";
4
4
  import { type PlanetScaleClusterSize } from "./utils.ts";
5
- /**
6
- * Properties for creating or updating a PlanetScale Database
7
- */
8
- export interface DatabaseProps {
5
+ interface BaseDatabaseProps extends PlanetScaleProps {
9
6
  /**
10
7
  * The name of the database
11
8
  *
@@ -16,10 +13,6 @@ export interface DatabaseProps {
16
13
  * The organization ID where the database will be created
17
14
  */
18
15
  organizationId: string;
19
- /**
20
- * PlanetScale API token (overrides environment variable)
21
- */
22
- apiKey?: Secret;
23
16
  /**
24
17
  * Whether to adopt the database if it already exists in Planetscale
25
18
  */
@@ -73,11 +66,30 @@ export interface DatabaseProps {
73
66
  * The database cluster size (required)
74
67
  */
75
68
  clusterSize: PlanetScaleClusterSize;
69
+ /**
70
+ * The engine kind for the database
71
+ * @default "mysql"
72
+ */
73
+ kind?: "mysql" | "postgresql";
74
+ /**
75
+ * The CPU architecture for the database. Only available for PostgreSQL databases.
76
+ */
77
+ arch?: "x86" | "arm";
76
78
  }
79
+ /**
80
+ * Properties for creating or updating a PlanetScale Database
81
+ */
82
+ export type DatabaseProps = BaseDatabaseProps & ({
83
+ kind?: "mysql";
84
+ arch?: undefined;
85
+ } | {
86
+ kind: "postgresql";
87
+ arch?: "x86" | "arm";
88
+ });
77
89
  /**
78
90
  * Represents a PlanetScale Database
79
91
  */
80
- export interface Database extends Resource<"planetscale::Database">, DatabaseProps {
92
+ export type Database = Resource<"planetscale::Database"> & DatabaseProps & {
81
93
  /**
82
94
  * The unique identifier of the database
83
95
  */
@@ -110,7 +122,7 @@ export interface Database extends Resource<"planetscale::Database">, DatabasePro
110
122
  * HTML URL to access the database
111
123
  */
112
124
  htmlUrl: string;
113
- }
125
+ };
114
126
  /**
115
127
  * Create, manage and delete PlanetScale databases
116
128
  *
@@ -146,4 +158,5 @@ export interface Database extends Resource<"planetscale::Database">, DatabasePro
146
158
  * });
147
159
  */
148
160
  export declare const Database: (((this: any, id: string, props?: {}) => never) & (new (_: never) => never)) | ((this: Context<Database>, id: string, props: DatabaseProps) => Promise<Database>);
161
+ export {};
149
162
  //# sourceMappingURL=database.d.ts.map
@@ -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;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAEL,KAAK,sBAAsB,EAE5B,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE;QACP;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF;;OAEG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;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;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,WAAW,EAAE,sBAAsB,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,QACf,SAAQ,QAAQ,CAAC,uBAAuB,CAAC,EACvC,aAAa;IACf;;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;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,QAAQ,yFAGX,OAAO,CAAC,QAAQ,CAAC,MACnB,MAAM,SACH,aAAa,KACnB,OAAO,CAAC,QAAQ,CAAC,CAsOrB,CAAC"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/planetscale/database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAEL,KAAK,sBAAsB,EAG5B,MAAM,YAAY,CAAC;AAEpB,UAAU,iBAAkB,SAAQ,gBAAgB;IAClD;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE;QACP;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF;;OAEG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;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;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,WAAW,EAAE,sBAAsB,CAAC;IAEpC;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IAE9B;;OAEG;IACH,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAC3C,CACI;IACE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,GACD;IACE,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;CACtB,CACJ,CAAC;AAEJ;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC,uBAAuB,CAAC,GACtD,aAAa,GAAG;IACd;;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;CACjB,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,QAAQ,yFAGX,OAAO,CAAC,QAAQ,CAAC,MACnB,MAAM,SACH,aAAa,KACnB,OAAO,CAAC,QAAQ,CAAC,CAwOrB,CAAC"}