alchemy 0.81.3 → 0.82.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.
- package/bin/alchemy.js +5 -3
- package/bin/commands/util.ts +2 -0
- package/lib/cloudflare/hyperdrive.d.ts +5 -0
- package/lib/cloudflare/hyperdrive.d.ts.map +1 -1
- package/lib/cloudflare/hyperdrive.js +4 -0
- package/lib/cloudflare/hyperdrive.js.map +1 -1
- package/lib/neon/branch.d.ts +10 -17
- package/lib/neon/branch.d.ts.map +1 -1
- package/lib/neon/branch.js +101 -0
- package/lib/neon/branch.js.map +1 -1
- package/package.json +1 -1
- package/src/cloudflare/hyperdrive.ts +13 -0
- package/src/neon/branch.ts +134 -0
- package/workers/tunnel-proxy.js +1 -1
package/bin/alchemy.js
CHANGED
|
@@ -37096,7 +37096,7 @@ function envPaths(name$1, { suffix = "nodejs" } = {}) {
|
|
|
37096
37096
|
//#endregion
|
|
37097
37097
|
//#region package.json
|
|
37098
37098
|
var name = "alchemy";
|
|
37099
|
-
var version = "0.
|
|
37099
|
+
var version = "0.82.0";
|
|
37100
37100
|
var license = "Apache-2.0";
|
|
37101
37101
|
var author = "Sam Goodwin <sam@alchemy.run>";
|
|
37102
37102
|
var homepage = "https://alchemy.run";
|
|
@@ -233377,7 +233377,8 @@ const CLOUDFLARE_OAUTH_SCOPES_TO_PERMISSION_GROUP_NAMES = {
|
|
|
233377
233377
|
"Workers KV Storage Read",
|
|
233378
233378
|
"Workers KV Storage Write",
|
|
233379
233379
|
"Workers R2 Storage Write",
|
|
233380
|
-
"Workers R2 Storage Read"
|
|
233380
|
+
"Workers R2 Storage Read",
|
|
233381
|
+
"Hyperdrive Write"
|
|
233381
233382
|
],
|
|
233382
233383
|
"workers_builds:read": ["Workers CI Read"],
|
|
233383
233384
|
"workers_builds:write": ["Workers CI Write"],
|
|
@@ -233406,7 +233407,8 @@ const CLOUDFLARE_OAUTH_SCOPES_TO_PERMISSION_GROUP_NAMES = {
|
|
|
233406
233407
|
"Workers Scripts Read",
|
|
233407
233408
|
"Workers KV Storage Read",
|
|
233408
233409
|
"Workers R2 Storage Read",
|
|
233409
|
-
"Workers Routes Read"
|
|
233410
|
+
"Workers Routes Read",
|
|
233411
|
+
"Hyperdrive Read"
|
|
233410
233412
|
]
|
|
233411
233413
|
};
|
|
233412
233414
|
|
package/bin/commands/util.ts
CHANGED
|
@@ -402,6 +402,7 @@ export const CLOUDFLARE_OAUTH_SCOPES_TO_PERMISSION_GROUP_NAMES: Record<
|
|
|
402
402
|
"Workers KV Storage Write",
|
|
403
403
|
"Workers R2 Storage Write",
|
|
404
404
|
"Workers R2 Storage Read",
|
|
405
|
+
"Hyperdrive Write",
|
|
405
406
|
],
|
|
406
407
|
"workers_builds:read": ["Workers CI Read"],
|
|
407
408
|
"workers_builds:write": ["Workers CI Write"],
|
|
@@ -429,5 +430,6 @@ export const CLOUDFLARE_OAUTH_SCOPES_TO_PERMISSION_GROUP_NAMES: Record<
|
|
|
429
430
|
"Workers KV Storage Read",
|
|
430
431
|
"Workers R2 Storage Read",
|
|
431
432
|
"Workers Routes Read",
|
|
433
|
+
"Hyperdrive Read",
|
|
432
434
|
],
|
|
433
435
|
};
|
|
@@ -148,6 +148,11 @@ export interface HyperdriveProps extends CloudflareApiOptions {
|
|
|
148
148
|
* @default false
|
|
149
149
|
*/
|
|
150
150
|
adopt?: boolean;
|
|
151
|
+
/**
|
|
152
|
+
* Whether to delete the hyperdrive config when the resource is deleted
|
|
153
|
+
* @default true
|
|
154
|
+
*/
|
|
155
|
+
delete?: boolean;
|
|
151
156
|
dev?: {
|
|
152
157
|
/**
|
|
153
158
|
* The database connection origin configuration for local development
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hyperdrive.d.ts","sourceRoot":"","sources":["../../src/cloudflare/hyperdrive.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"hyperdrive.d.ts","sourceRoot":"","sources":["../../src/cloudflare/hyperdrive.ts"],"names":[],"mappings":"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"}
|
|
@@ -114,6 +114,10 @@ const _Hyperdrive = Resource("cloudflare::Hyperdrive", async function (id, props
|
|
|
114
114
|
}
|
|
115
115
|
const api = await createCloudflareApi(props);
|
|
116
116
|
if (this.phase === "delete") {
|
|
117
|
+
if (props.delete === false) {
|
|
118
|
+
logger.warn(`Delete is disabled for hyperdrive "${name}" (${id}), removing from state`);
|
|
119
|
+
return this.destroy();
|
|
120
|
+
}
|
|
117
121
|
if (!hyperdriveId) {
|
|
118
122
|
logger.warn(`No hyperdriveId found for ${id}, skipping delete`);
|
|
119
123
|
return this.destroy();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hyperdrive.js","sourceRoot":"","sources":["../../src/cloudflare/hyperdrive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EACL,uBAAuB,GAExB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,mBAAmB,GAGpB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"hyperdrive.js","sourceRoot":"","sources":["../../src/cloudflare/hyperdrive.ts"],"names":[],"mappings":"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"}
|
package/lib/neon/branch.d.ts
CHANGED
|
@@ -33,6 +33,10 @@ export interface NeonBranchProps extends NeonApiOptions {
|
|
|
33
33
|
* The timestamp must be provided in ISO 8601 format; for example: `2024-02-26T12:00:00Z`.
|
|
34
34
|
*/
|
|
35
35
|
parentTimestamp?: string;
|
|
36
|
+
/**
|
|
37
|
+
* When `true`, will adopt an existing branch by `name`.
|
|
38
|
+
*/
|
|
39
|
+
adopt?: boolean;
|
|
36
40
|
/**
|
|
37
41
|
* The timestamp when the branch is scheduled to expire and be automatically deleted.
|
|
38
42
|
* Must be set by the client following the [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6) format with precision up to seconds (such as 2025-06-09T18:02:16Z).
|
|
@@ -136,22 +140,11 @@ export interface NeonBranch {
|
|
|
136
140
|
*/
|
|
137
141
|
connectionUris: NeonConnectionUri[];
|
|
138
142
|
}
|
|
139
|
-
export declare const NeonBranch: (((this: any, id: string, props?: {}) => never) & (new (_: never) => never)) | ((this: Context<NeonBranch>, id: string, props: NeonBranchProps) => Promise<
|
|
140
|
-
|
|
141
|
-
name: string;
|
|
143
|
+
export declare const NeonBranch: (((this: any, id: string, props?: {}) => never) & (new (_: never) => never)) | ((this: Context<NeonBranch>, id: string, props: NeonBranchProps) => Promise<NeonBranch>);
|
|
144
|
+
export interface NeonConnectionUriProps extends NeonApiOptions {
|
|
142
145
|
projectId: string;
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
parentTimestamp: string | undefined;
|
|
148
|
-
initSource: "schema-only" | "parent-data" | undefined;
|
|
149
|
-
createdAt: Date;
|
|
150
|
-
updatedAt: Date;
|
|
151
|
-
expiresAt: Date | undefined;
|
|
152
|
-
endpoints: neon.Endpoint[];
|
|
153
|
-
databases: neon.Database[];
|
|
154
|
-
roles: NeonRole[];
|
|
155
|
-
connectionUris: NeonConnectionUri[];
|
|
156
|
-
}>);
|
|
146
|
+
branchId: string;
|
|
147
|
+
databaseName: string;
|
|
148
|
+
roleName: string;
|
|
149
|
+
}
|
|
157
150
|
//# sourceMappingURL=branch.d.ts.map
|
package/lib/neon/branch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../src/neon/branch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../src/neon/branch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AAE9D,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACd,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD;;;OAGG;IACH,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC;IAC9B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;IACjD;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,aAAa,GAAG,aAAa,CAAC;IAC3C;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,EAAE,IAAI,CAAC,kCAAkC,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;OAEG;IACH,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B;;;OAGG;IACH,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC;;OAEG;IACH,UAAU,EAAE,aAAa,GAAG,aAAa,GAAG,SAAS,CAAC;IACtD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,SAAS,EAAE,IAAI,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,IAAI,CAAC;IAChB;;;;OAIG;IACH,SAAS,EAAE,IAAI,GAAG,SAAS,CAAC;IAC5B;;OAEG;IACH,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B;;OAEG;IACH,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B;;OAEG;IACH,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB;;OAEG;IACH,cAAc,EAAE,iBAAiB,EAAE,CAAC;CACrC;AAED,eAAO,MAAM,UAAU,yFAGb,OAAO,CAAC,UAAU,CAAC,MACrB,MAAM,SACH,eAAe,yBAuIzB,CAAC;AA2GF,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB"}
|
package/lib/neon/branch.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { alchemy } from "../alchemy.js";
|
|
1
2
|
import { Resource } from "../resource.js";
|
|
2
3
|
import { createNeonApi } from "./api.js";
|
|
3
4
|
import { formatConnectionUri, formatRole, waitForOperations, } from "./utils.js";
|
|
@@ -27,6 +28,17 @@ export const NeonBranch = Resource("neon::Branch", async function (id, props) {
|
|
|
27
28
|
return this.destroy();
|
|
28
29
|
}
|
|
29
30
|
case "create": {
|
|
31
|
+
if (this.scope.adopt || props.adopt) {
|
|
32
|
+
try {
|
|
33
|
+
return await fetchBranch(api, { ...props, projectId, name });
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
if (!(error instanceof NeonBranchNotFound)) {
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
// branch not found, continue with creation
|
|
40
|
+
}
|
|
41
|
+
}
|
|
30
42
|
const { data } = await api.createProjectBranch({
|
|
31
43
|
path: {
|
|
32
44
|
project_id: projectId,
|
|
@@ -109,4 +121,93 @@ export const NeonBranch = Resource("neon::Branch", async function (id, props) {
|
|
|
109
121
|
}
|
|
110
122
|
}
|
|
111
123
|
});
|
|
124
|
+
async function fetchBranch(api, props) {
|
|
125
|
+
const branchList = [];
|
|
126
|
+
let branchesResponse = await api.listProjectBranches({
|
|
127
|
+
path: { project_id: props.projectId },
|
|
128
|
+
query: {
|
|
129
|
+
search: props.name,
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
branchList.push(...(branchesResponse.data?.branches ?? []));
|
|
133
|
+
while (branchesResponse.data?.pagination?.next) {
|
|
134
|
+
branchesResponse = await api.listProjectBranches({
|
|
135
|
+
path: { project_id: props.projectId },
|
|
136
|
+
query: {
|
|
137
|
+
search: props.name,
|
|
138
|
+
cursor: branchesResponse.data.pagination.next,
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
branchList.push(...(branchesResponse.data?.branches ?? []));
|
|
142
|
+
}
|
|
143
|
+
const branchesMatchingName = branchList.filter((b) => b.name === props.name);
|
|
144
|
+
if (branchesMatchingName.length === 0) {
|
|
145
|
+
throw new NeonBranchNotFound(props.name);
|
|
146
|
+
}
|
|
147
|
+
if (branchesMatchingName.length > 1) {
|
|
148
|
+
throw new Error(`Multiple branches found with name "${props.name}". Name must be unique when adopting a branch.`);
|
|
149
|
+
}
|
|
150
|
+
const branch = branchesMatchingName[0];
|
|
151
|
+
const databases = await api.listProjectBranchDatabases({
|
|
152
|
+
path: {
|
|
153
|
+
branch_id: branch.id,
|
|
154
|
+
project_id: props.projectId,
|
|
155
|
+
},
|
|
156
|
+
});
|
|
157
|
+
const endpoints = await api.listProjectBranchEndpoints({
|
|
158
|
+
path: { project_id: props.projectId, branch_id: branch.id },
|
|
159
|
+
});
|
|
160
|
+
const roles = await api.listProjectBranchRoles({
|
|
161
|
+
path: {
|
|
162
|
+
project_id: props.projectId,
|
|
163
|
+
branch_id: branch.id,
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
const connectionUris = await Promise.all(databases.data.databases.map((database) => api
|
|
167
|
+
.getConnectionUri({
|
|
168
|
+
path: { project_id: props.projectId },
|
|
169
|
+
query: {
|
|
170
|
+
branch_id: branch.id,
|
|
171
|
+
database_name: database.name,
|
|
172
|
+
role_name: database.owner_name,
|
|
173
|
+
pooled: false,
|
|
174
|
+
},
|
|
175
|
+
})
|
|
176
|
+
.then((res) => {
|
|
177
|
+
const url = new URL(res.data.uri);
|
|
178
|
+
return {
|
|
179
|
+
connection_uri: alchemy.secret(res.data.uri),
|
|
180
|
+
connection_parameters: {
|
|
181
|
+
database: database.name,
|
|
182
|
+
host: url.host,
|
|
183
|
+
port: 5432,
|
|
184
|
+
user: url.username,
|
|
185
|
+
password: alchemy.secret(url.password),
|
|
186
|
+
},
|
|
187
|
+
};
|
|
188
|
+
})));
|
|
189
|
+
return {
|
|
190
|
+
id: branch.id,
|
|
191
|
+
projectId: branch.project_id,
|
|
192
|
+
createdAt: new Date(branch.created_at),
|
|
193
|
+
updatedAt: new Date(branch.updated_at),
|
|
194
|
+
expiresAt: branch.expires_at ? new Date(branch.expires_at) : undefined,
|
|
195
|
+
initSource: branch.init_source,
|
|
196
|
+
name: branch.name,
|
|
197
|
+
protected: branch.protected,
|
|
198
|
+
default: branch.default,
|
|
199
|
+
parentBranchId: branch.parent_id,
|
|
200
|
+
parentTimestamp: branch.parent_timestamp,
|
|
201
|
+
parentLsn: branch.parent_lsn,
|
|
202
|
+
roles: roles.data.roles.map(formatRole),
|
|
203
|
+
endpoints: endpoints.data.endpoints,
|
|
204
|
+
databases: databases.data.databases,
|
|
205
|
+
connectionUris,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
class NeonBranchNotFound extends Error {
|
|
209
|
+
constructor(name) {
|
|
210
|
+
super(`Branch ${name} not found`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
112
213
|
//# sourceMappingURL=branch.js.map
|
package/lib/neon/branch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branch.js","sourceRoot":"","sources":["../../src/neon/branch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"branch.js","sourceRoot":"","sources":["../../src/neon/branch.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -198,6 +198,12 @@ export interface HyperdriveProps extends CloudflareApiOptions {
|
|
|
198
198
|
*/
|
|
199
199
|
adopt?: boolean;
|
|
200
200
|
|
|
201
|
+
/**
|
|
202
|
+
* Whether to delete the hyperdrive config when the resource is deleted
|
|
203
|
+
* @default true
|
|
204
|
+
*/
|
|
205
|
+
delete?: boolean;
|
|
206
|
+
|
|
201
207
|
dev?: {
|
|
202
208
|
/**
|
|
203
209
|
* The database connection origin configuration for local development
|
|
@@ -361,6 +367,7 @@ interface InternalHyperdriveProps extends CloudflareApiOptions {
|
|
|
361
367
|
force?: boolean;
|
|
362
368
|
};
|
|
363
369
|
adopt?: boolean;
|
|
370
|
+
delete?: boolean;
|
|
364
371
|
}
|
|
365
372
|
|
|
366
373
|
const _Hyperdrive = Resource(
|
|
@@ -390,6 +397,12 @@ const _Hyperdrive = Resource(
|
|
|
390
397
|
const api = await createCloudflareApi(props);
|
|
391
398
|
|
|
392
399
|
if (this.phase === "delete") {
|
|
400
|
+
if (props.delete === false) {
|
|
401
|
+
logger.warn(
|
|
402
|
+
`Delete is disabled for hyperdrive "${name}" (${id}), removing from state`,
|
|
403
|
+
);
|
|
404
|
+
return this.destroy();
|
|
405
|
+
}
|
|
393
406
|
if (!hyperdriveId) {
|
|
394
407
|
logger.warn(`No hyperdriveId found for ${id}, skipping delete`);
|
|
395
408
|
return this.destroy();
|
package/src/neon/branch.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { alchemy } from "../alchemy.ts";
|
|
1
2
|
import type { Context } from "../context.ts";
|
|
2
3
|
import { Resource } from "../resource.ts";
|
|
3
4
|
import { createNeonApi, type NeonApiOptions } from "./api.ts";
|
|
5
|
+
import type { NeonClient } from "./api/sdk.gen.ts";
|
|
4
6
|
import type * as neon from "./api/types.gen.ts";
|
|
5
7
|
import type { NeonProject } from "./project.ts";
|
|
6
8
|
import {
|
|
@@ -41,6 +43,10 @@ export interface NeonBranchProps extends NeonApiOptions {
|
|
|
41
43
|
* The timestamp must be provided in ISO 8601 format; for example: `2024-02-26T12:00:00Z`.
|
|
42
44
|
*/
|
|
43
45
|
parentTimestamp?: string;
|
|
46
|
+
/**
|
|
47
|
+
* When `true`, will adopt an existing branch by `name`.
|
|
48
|
+
*/
|
|
49
|
+
adopt?: boolean;
|
|
44
50
|
/**
|
|
45
51
|
* The timestamp when the branch is scheduled to expire and be automatically deleted.
|
|
46
52
|
* Must be set by the client following the [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6) format with precision up to seconds (such as 2025-06-09T18:02:16Z).
|
|
@@ -182,6 +188,16 @@ export const NeonBranch = Resource(
|
|
|
182
188
|
return this.destroy();
|
|
183
189
|
}
|
|
184
190
|
case "create": {
|
|
191
|
+
if (this.scope.adopt || props.adopt) {
|
|
192
|
+
try {
|
|
193
|
+
return await fetchBranch(api, { ...props, projectId, name });
|
|
194
|
+
} catch (error) {
|
|
195
|
+
if (!(error instanceof NeonBranchNotFound)) {
|
|
196
|
+
throw error;
|
|
197
|
+
}
|
|
198
|
+
// branch not found, continue with creation
|
|
199
|
+
}
|
|
200
|
+
}
|
|
185
201
|
const { data } = await api.createProjectBranch({
|
|
186
202
|
path: {
|
|
187
203
|
project_id: projectId,
|
|
@@ -277,3 +293,121 @@ export const NeonBranch = Resource(
|
|
|
277
293
|
}
|
|
278
294
|
},
|
|
279
295
|
);
|
|
296
|
+
|
|
297
|
+
async function fetchBranch(
|
|
298
|
+
api: NeonClient,
|
|
299
|
+
props: NeonBranchProps & { name: string; projectId: string },
|
|
300
|
+
): Promise<NeonBranch> {
|
|
301
|
+
const branchList: neon.Branch[] = [];
|
|
302
|
+
|
|
303
|
+
let branchesResponse = await api.listProjectBranches({
|
|
304
|
+
path: { project_id: props.projectId },
|
|
305
|
+
query: {
|
|
306
|
+
search: props.name,
|
|
307
|
+
},
|
|
308
|
+
});
|
|
309
|
+
branchList.push(...(branchesResponse.data?.branches ?? []));
|
|
310
|
+
|
|
311
|
+
while (branchesResponse.data?.pagination?.next) {
|
|
312
|
+
branchesResponse = await api.listProjectBranches({
|
|
313
|
+
path: { project_id: props.projectId },
|
|
314
|
+
query: {
|
|
315
|
+
search: props.name,
|
|
316
|
+
cursor: branchesResponse.data.pagination.next,
|
|
317
|
+
},
|
|
318
|
+
});
|
|
319
|
+
branchList.push(...(branchesResponse.data?.branches ?? []));
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
const branchesMatchingName = branchList.filter((b) => b.name === props.name);
|
|
323
|
+
|
|
324
|
+
if (branchesMatchingName.length === 0) {
|
|
325
|
+
throw new NeonBranchNotFound(props.name);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
if (branchesMatchingName.length > 1) {
|
|
329
|
+
throw new Error(
|
|
330
|
+
`Multiple branches found with name "${props.name}". Name must be unique when adopting a branch.`,
|
|
331
|
+
);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
const branch = branchesMatchingName[0];
|
|
335
|
+
|
|
336
|
+
const databases = await api.listProjectBranchDatabases({
|
|
337
|
+
path: {
|
|
338
|
+
branch_id: branch.id,
|
|
339
|
+
project_id: props.projectId,
|
|
340
|
+
},
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
const endpoints = await api.listProjectBranchEndpoints({
|
|
344
|
+
path: { project_id: props.projectId, branch_id: branch.id },
|
|
345
|
+
});
|
|
346
|
+
|
|
347
|
+
const roles = await api.listProjectBranchRoles({
|
|
348
|
+
path: {
|
|
349
|
+
project_id: props.projectId,
|
|
350
|
+
branch_id: branch.id,
|
|
351
|
+
},
|
|
352
|
+
});
|
|
353
|
+
|
|
354
|
+
const connectionUris: NeonConnectionUri[] = await Promise.all(
|
|
355
|
+
databases.data.databases.map((database) =>
|
|
356
|
+
api
|
|
357
|
+
.getConnectionUri({
|
|
358
|
+
path: { project_id: props.projectId },
|
|
359
|
+
query: {
|
|
360
|
+
branch_id: branch.id,
|
|
361
|
+
database_name: database.name,
|
|
362
|
+
role_name: database.owner_name,
|
|
363
|
+
pooled: false,
|
|
364
|
+
},
|
|
365
|
+
})
|
|
366
|
+
.then((res) => {
|
|
367
|
+
const url = new URL(res.data.uri);
|
|
368
|
+
return {
|
|
369
|
+
connection_uri: alchemy.secret(res.data.uri),
|
|
370
|
+
connection_parameters: {
|
|
371
|
+
database: database.name,
|
|
372
|
+
host: url.host,
|
|
373
|
+
port: 5432,
|
|
374
|
+
user: url.username,
|
|
375
|
+
password: alchemy.secret(url.password),
|
|
376
|
+
},
|
|
377
|
+
};
|
|
378
|
+
}),
|
|
379
|
+
),
|
|
380
|
+
);
|
|
381
|
+
|
|
382
|
+
return {
|
|
383
|
+
id: branch.id,
|
|
384
|
+
projectId: branch.project_id,
|
|
385
|
+
createdAt: new Date(branch.created_at),
|
|
386
|
+
updatedAt: new Date(branch.updated_at),
|
|
387
|
+
expiresAt: branch.expires_at ? new Date(branch.expires_at) : undefined,
|
|
388
|
+
initSource: branch.init_source as "schema-only" | "parent-data" | undefined,
|
|
389
|
+
name: branch.name,
|
|
390
|
+
protected: branch.protected,
|
|
391
|
+
default: branch.default,
|
|
392
|
+
parentBranchId: branch.parent_id,
|
|
393
|
+
parentTimestamp: branch.parent_timestamp,
|
|
394
|
+
parentLsn: branch.parent_lsn,
|
|
395
|
+
roles: roles.data.roles.map(formatRole),
|
|
396
|
+
endpoints: endpoints.data.endpoints,
|
|
397
|
+
databases: databases.data.databases,
|
|
398
|
+
connectionUris,
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
export interface NeonConnectionUriProps extends NeonApiOptions {
|
|
403
|
+
projectId: string;
|
|
404
|
+
branchId: string;
|
|
405
|
+
databaseName: string;
|
|
406
|
+
roleName: string;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
class NeonBranchNotFound extends Error {
|
|
410
|
+
constructor(name: string) {
|
|
411
|
+
super(`Branch ${name} not found`);
|
|
412
|
+
}
|
|
413
|
+
}
|
package/workers/tunnel-proxy.js
CHANGED
|
@@ -83,7 +83,7 @@ const renderErrorHtml = (props) => `
|
|
|
83
83
|
Alchemy</a>.</p>
|
|
84
84
|
</div>
|
|
85
85
|
<div class="bg-slate-200 px-5 py-3 flex flex-col w-full max-w-lg">
|
|
86
|
-
<p class="text-sm text-slate-500">Alchemy 0.
|
|
86
|
+
<p class="text-sm text-slate-500">Alchemy 0.82.0</p>
|
|
87
87
|
</div>
|
|
88
88
|
</div>
|
|
89
89
|
</body>
|