alchemy 0.12.6 → 0.12.8
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/lib/cloudflare/ai-gateway.d.ts.map +1 -1
- package/lib/cloudflare/ai-gateway.js +1 -2
- package/lib/cloudflare/ai-gateway.js.map +1 -1
- package/lib/cloudflare/bindings.d.ts +2 -1
- package/lib/cloudflare/bindings.d.ts.map +1 -1
- package/lib/cloudflare/bound.d.ts +2 -1
- package/lib/cloudflare/bound.d.ts.map +1 -1
- package/lib/cloudflare/bucket.d.ts +8 -2
- package/lib/cloudflare/bucket.d.ts.map +1 -1
- package/lib/cloudflare/bucket.js +1 -1
- package/lib/cloudflare/bucket.js.map +1 -1
- package/lib/cloudflare/d1-database.d.ts +8 -2
- package/lib/cloudflare/d1-database.d.ts.map +1 -1
- package/lib/cloudflare/d1-database.js +2 -2
- package/lib/cloudflare/d1-database.js.map +1 -1
- package/lib/cloudflare/event-source.d.ts +26 -0
- package/lib/cloudflare/event-source.d.ts.map +1 -0
- package/lib/cloudflare/event-source.js +9 -0
- package/lib/cloudflare/event-source.js.map +1 -0
- package/lib/cloudflare/hyperdrive.d.ts +216 -0
- package/lib/cloudflare/hyperdrive.d.ts.map +1 -0
- package/lib/cloudflare/hyperdrive.js +184 -0
- package/lib/cloudflare/hyperdrive.js.map +1 -0
- package/lib/cloudflare/index.d.ts +2 -0
- package/lib/cloudflare/index.d.ts.map +1 -1
- package/lib/cloudflare/index.js +2 -0
- package/lib/cloudflare/index.js.map +1 -1
- package/lib/cloudflare/queue-consumer.d.ts +162 -0
- package/lib/cloudflare/queue-consumer.d.ts.map +1 -0
- package/lib/cloudflare/queue-consumer.js +197 -0
- package/lib/cloudflare/queue-consumer.js.map +1 -0
- package/lib/cloudflare/queue.d.ts +15 -3
- package/lib/cloudflare/queue.d.ts.map +1 -1
- package/lib/cloudflare/queue.js +8 -2
- package/lib/cloudflare/queue.js.map +1 -1
- package/lib/cloudflare/website.d.ts.map +1 -1
- package/lib/cloudflare/website.js +8 -10
- package/lib/cloudflare/website.js.map +1 -1
- package/lib/cloudflare/worker.d.ts +13 -2
- package/lib/cloudflare/worker.d.ts.map +1 -1
- package/lib/cloudflare/worker.js +75 -3
- package/lib/cloudflare/worker.js.map +1 -1
- package/lib/cloudflare/wrangler.json.d.ts +13 -3
- package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
- package/lib/cloudflare/wrangler.json.js +27 -5
- package/lib/cloudflare/wrangler.json.js.map +1 -1
- package/lib/neon/api-error.d.ts +31 -0
- package/lib/neon/api-error.d.ts.map +1 -0
- package/lib/neon/api-error.js +73 -0
- package/lib/neon/api-error.js.map +1 -0
- package/lib/neon/api.d.ts +70 -0
- package/lib/neon/api.d.ts.map +1 -0
- package/lib/neon/api.js +128 -0
- package/lib/neon/api.js.map +1 -0
- package/lib/neon/index.d.ts +4 -0
- package/lib/neon/index.d.ts.map +1 -0
- package/lib/neon/index.js +4 -0
- package/lib/neon/index.js.map +1 -0
- package/lib/neon/project.d.ts +345 -0
- package/lib/neon/project.d.ts.map +1 -0
- package/lib/neon/project.js +305 -0
- package/lib/neon/project.js.map +1 -0
- package/package.json +2 -1
- package/src/cloudflare/ai-gateway.ts +0 -1
- package/src/cloudflare/bindings.ts +4 -2
- package/src/cloudflare/bound.ts +20 -17
- package/src/cloudflare/bucket.ts +9 -2
- package/src/cloudflare/d1-database.ts +10 -3
- package/src/cloudflare/event-source.ts +33 -0
- package/src/cloudflare/hyperdrive.ts +375 -0
- package/src/cloudflare/index.ts +2 -0
- package/src/cloudflare/queue-consumer.ts +433 -0
- package/src/cloudflare/queue.ts +83 -63
- package/src/cloudflare/website.ts +9 -13
- package/src/cloudflare/worker.ts +109 -5
- package/src/cloudflare/wrangler.json.ts +52 -8
- package/src/neon/api-error.ts +81 -0
- package/src/neon/api.ts +178 -0
- package/src/neon/index.ts +3 -0
- package/src/neon/project.ts +870 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error class for Neon API errors
|
|
3
|
+
*/
|
|
4
|
+
export class NeonApiError extends Error {
|
|
5
|
+
/**
|
|
6
|
+
* HTTP status code
|
|
7
|
+
*/
|
|
8
|
+
status;
|
|
9
|
+
/**
|
|
10
|
+
* HTTP status text
|
|
11
|
+
*/
|
|
12
|
+
statusText;
|
|
13
|
+
/**
|
|
14
|
+
* Error data from the API response
|
|
15
|
+
*/
|
|
16
|
+
errorData;
|
|
17
|
+
/**
|
|
18
|
+
* Create a new NeonApiError
|
|
19
|
+
*/
|
|
20
|
+
constructor(message, response, errorData) {
|
|
21
|
+
super(message);
|
|
22
|
+
this.name = "NeonApiError";
|
|
23
|
+
this.status = response.status;
|
|
24
|
+
this.statusText = response.statusText;
|
|
25
|
+
this.errorData = errorData;
|
|
26
|
+
// Capture stack trace
|
|
27
|
+
if (Error.captureStackTrace) {
|
|
28
|
+
Error.captureStackTrace(this, NeonApiError);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Handle API errors and throw NeonApiError with context
|
|
34
|
+
*
|
|
35
|
+
* @param response Response object from fetch
|
|
36
|
+
* @param action Action that was being performed
|
|
37
|
+
* @param resourceType Type of resource
|
|
38
|
+
* @param resourceId ID of the resource
|
|
39
|
+
*/
|
|
40
|
+
export async function handleApiError(response, action, resourceType, resourceId) {
|
|
41
|
+
const resourceDisplay = resourceId ? `'${resourceId}'` : "";
|
|
42
|
+
let errorData;
|
|
43
|
+
try {
|
|
44
|
+
errorData = await response.json();
|
|
45
|
+
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
// If we can't parse JSON, just use the response text
|
|
48
|
+
try {
|
|
49
|
+
errorData = { message: await response.text() };
|
|
50
|
+
}
|
|
51
|
+
catch (textError) {
|
|
52
|
+
errorData = { message: response.statusText };
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
let message = `Error ${action} ${resourceType} ${resourceDisplay}: `;
|
|
56
|
+
if (errorData?.error?.message) {
|
|
57
|
+
message += errorData.error.message;
|
|
58
|
+
}
|
|
59
|
+
else if (errorData?.message) {
|
|
60
|
+
message += errorData.message;
|
|
61
|
+
}
|
|
62
|
+
else if (errorData?.error) {
|
|
63
|
+
message +=
|
|
64
|
+
typeof errorData.error === "string"
|
|
65
|
+
? errorData.error
|
|
66
|
+
: JSON.stringify(errorData.error);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
message += response.statusText;
|
|
70
|
+
}
|
|
71
|
+
throw new NeonApiError(message, response, errorData);
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=api-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-error.js","sourceRoot":"","sources":["../../src/neon/api-error.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC;;OAEG;IACa,MAAM,CAAS;IAE/B;;OAEG;IACa,UAAU,CAAS;IAEnC;;OAEG;IACa,SAAS,CAAO;IAEhC;;OAEG;IACH,YAAY,OAAe,EAAE,QAAkB,EAAE,SAAe;QAC9D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,sBAAsB;QACtB,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAkB,EAClB,MAAuD,EACvD,YAAoB,EACpB,UAAmB;IAEnB,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,IAAI,SAAc,CAAC;IAEnB,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,qDAAqD;QACrD,IAAI,CAAC;YACH,SAAS,GAAG,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACjD,CAAC;QAAC,OAAO,SAAS,EAAE,CAAC;YACnB,SAAS,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAAG,SAAS,MAAM,IAAI,YAAY,IAAI,eAAe,IAAI,CAAC;IAErE,IAAI,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAC9B,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;IACrC,CAAC;SAAM,IAAI,SAAS,EAAE,OAAO,EAAE,CAAC;QAC9B,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC;IAC/B,CAAC;SAAM,IAAI,SAAS,EAAE,KAAK,EAAE,CAAC;QAC5B,OAAO;YACL,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ;gBACjC,CAAC,CAAC,SAAS,CAAC,KAAK;gBACjB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,QAAQ,CAAC,UAAU,CAAC;IACjC,CAAC;IAED,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { Secret } from "../secret.js";
|
|
2
|
+
/**
|
|
3
|
+
* Options for Neon API requests
|
|
4
|
+
*/
|
|
5
|
+
export interface NeonApiOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Base URL for Neon API
|
|
8
|
+
* @default https://console.neon.tech/api/v2
|
|
9
|
+
*/
|
|
10
|
+
baseUrl?: string;
|
|
11
|
+
/**
|
|
12
|
+
* API Key to use (overrides NEON_API_KEY env var)
|
|
13
|
+
*/
|
|
14
|
+
apiKey?: Secret;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Create a NeonApi instance with environment variable fallback
|
|
18
|
+
* @param options API options
|
|
19
|
+
* @returns NeonApi instance
|
|
20
|
+
*/
|
|
21
|
+
export declare function createNeonApi(options?: Partial<NeonApiOptions>): NeonApi;
|
|
22
|
+
/**
|
|
23
|
+
* Get authentication headers for Neon API
|
|
24
|
+
* @param options NeonApiOptions
|
|
25
|
+
* @returns Headers for authentication
|
|
26
|
+
*/
|
|
27
|
+
export declare function getNeonAuthHeaders(options: Partial<NeonApiOptions>): Promise<Record<string, string>>;
|
|
28
|
+
/**
|
|
29
|
+
* Neon API client using raw fetch
|
|
30
|
+
*/
|
|
31
|
+
export declare class NeonApi {
|
|
32
|
+
private readonly options;
|
|
33
|
+
readonly baseUrl: string;
|
|
34
|
+
/**
|
|
35
|
+
* Create a new Neon API client
|
|
36
|
+
* Use createNeonApi factory function instead of direct constructor
|
|
37
|
+
*
|
|
38
|
+
* @param options API options
|
|
39
|
+
*/
|
|
40
|
+
constructor(options: NeonApiOptions);
|
|
41
|
+
/**
|
|
42
|
+
* Make a fetch request to the Neon API
|
|
43
|
+
*
|
|
44
|
+
* @param path API path (without base URL)
|
|
45
|
+
* @param init Fetch init options
|
|
46
|
+
* @returns Raw Response object from fetch
|
|
47
|
+
*/
|
|
48
|
+
fetch(path: string, init?: RequestInit): Promise<Response>;
|
|
49
|
+
/**
|
|
50
|
+
* Helper for GET requests
|
|
51
|
+
*/
|
|
52
|
+
get(path: string, init?: RequestInit): Promise<Response>;
|
|
53
|
+
/**
|
|
54
|
+
* Helper for POST requests
|
|
55
|
+
*/
|
|
56
|
+
post(path: string, body: any, init?: RequestInit): Promise<Response>;
|
|
57
|
+
/**
|
|
58
|
+
* Helper for PUT requests
|
|
59
|
+
*/
|
|
60
|
+
put(path: string, body: any, init?: RequestInit): Promise<Response>;
|
|
61
|
+
/**
|
|
62
|
+
* Helper for PATCH requests
|
|
63
|
+
*/
|
|
64
|
+
patch(path: string, body: any, init?: RequestInit): Promise<Response>;
|
|
65
|
+
/**
|
|
66
|
+
* Helper for DELETE requests
|
|
67
|
+
*/
|
|
68
|
+
delete(path: string, init?: RequestInit): Promise<Response>;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/neon/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,OAAO,CAK5E;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAC/B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAcjC;AAED;;GAEG;AACH,qBAAa,OAAO;IASN,OAAO,CAAC,QAAQ,CAAC,OAAO;IARpC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAEhC;;;;;OAKG;gBAC0B,OAAO,EAAE,cAAc;IAIpD;;;;;;OAMG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IA2CpE;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIlE;;OAEG;IACG,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,GAAG,EACT,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,QAAQ,CAAC;IAUpB;;OAEG;IACG,GAAG,CACP,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,GAAG,EACT,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,QAAQ,CAAC;IAKpB;;OAEG;IACG,KAAK,CACT,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,GAAG,EACT,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,QAAQ,CAAC;IAQpB;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;CAGtE"}
|
package/lib/neon/api.js
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { withExponentialBackoff } from "../util/retry.js";
|
|
2
|
+
/**
|
|
3
|
+
* Create a NeonApi instance with environment variable fallback
|
|
4
|
+
* @param options API options
|
|
5
|
+
* @returns NeonApi instance
|
|
6
|
+
*/
|
|
7
|
+
export function createNeonApi(options = {}) {
|
|
8
|
+
return new NeonApi({
|
|
9
|
+
baseUrl: options.baseUrl,
|
|
10
|
+
apiKey: options.apiKey,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Get authentication headers for Neon API
|
|
15
|
+
* @param options NeonApiOptions
|
|
16
|
+
* @returns Headers for authentication
|
|
17
|
+
*/
|
|
18
|
+
export async function getNeonAuthHeaders(options) {
|
|
19
|
+
const apiKey = options.apiKey?.unencrypted ?? process.env.NEON_API_KEY;
|
|
20
|
+
if (!apiKey) {
|
|
21
|
+
throw new Error("Neon API key is required. Set NEON_API_KEY environment variable or provide apiKey option.");
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
"Content-Type": "application/json",
|
|
25
|
+
Accept: "application/json",
|
|
26
|
+
Authorization: `Bearer ${apiKey}`,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Neon API client using raw fetch
|
|
31
|
+
*/
|
|
32
|
+
export class NeonApi {
|
|
33
|
+
options;
|
|
34
|
+
baseUrl;
|
|
35
|
+
/**
|
|
36
|
+
* Create a new Neon API client
|
|
37
|
+
* Use createNeonApi factory function instead of direct constructor
|
|
38
|
+
*
|
|
39
|
+
* @param options API options
|
|
40
|
+
*/
|
|
41
|
+
constructor(options) {
|
|
42
|
+
this.options = options;
|
|
43
|
+
this.baseUrl = options.baseUrl ?? "https://console.neon.tech/api/v2";
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Make a fetch request to the Neon API
|
|
47
|
+
*
|
|
48
|
+
* @param path API path (without base URL)
|
|
49
|
+
* @param init Fetch init options
|
|
50
|
+
* @returns Raw Response object from fetch
|
|
51
|
+
*/
|
|
52
|
+
async fetch(path, init = {}) {
|
|
53
|
+
let headers = {};
|
|
54
|
+
if (Array.isArray(init.headers)) {
|
|
55
|
+
init.headers.forEach(([key, value]) => {
|
|
56
|
+
headers[key] = value;
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
else if (init.headers instanceof Headers) {
|
|
60
|
+
init.headers.forEach((value, key) => {
|
|
61
|
+
headers[key] = value;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
else if (init.headers) {
|
|
65
|
+
headers = init.headers;
|
|
66
|
+
}
|
|
67
|
+
headers = {
|
|
68
|
+
...(await getNeonAuthHeaders(this.options)),
|
|
69
|
+
...headers,
|
|
70
|
+
};
|
|
71
|
+
// Use withExponentialBackoff for automatic retry on network errors
|
|
72
|
+
return withExponentialBackoff(() => fetch(`${this.baseUrl}${path}`, {
|
|
73
|
+
...init,
|
|
74
|
+
headers,
|
|
75
|
+
}), (error) => {
|
|
76
|
+
// Only retry on network-related errors
|
|
77
|
+
const errorMsg = error.message || "";
|
|
78
|
+
const isNetworkError = errorMsg.includes("socket connection was closed") ||
|
|
79
|
+
errorMsg.includes("ECONNRESET") ||
|
|
80
|
+
errorMsg.includes("ETIMEDOUT") ||
|
|
81
|
+
errorMsg.includes("ECONNREFUSED");
|
|
82
|
+
return isNetworkError || error?.status?.toString().startsWith("5");
|
|
83
|
+
}, 5, // Maximum 5 attempts (1 initial + 4 retries)
|
|
84
|
+
1000 // Start with 1s delay, will exponentially increase
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Helper for GET requests
|
|
89
|
+
*/
|
|
90
|
+
async get(path, init = {}) {
|
|
91
|
+
return this.fetch(path, { ...init, method: "GET" });
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Helper for POST requests
|
|
95
|
+
*/
|
|
96
|
+
async post(path, body, init = {}) {
|
|
97
|
+
const requestBody = body instanceof FormData
|
|
98
|
+
? body
|
|
99
|
+
: typeof body === "string"
|
|
100
|
+
? body
|
|
101
|
+
: JSON.stringify(body);
|
|
102
|
+
return this.fetch(path, { ...init, method: "POST", body: requestBody });
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Helper for PUT requests
|
|
106
|
+
*/
|
|
107
|
+
async put(path, body, init = {}) {
|
|
108
|
+
const requestBody = body instanceof FormData ? body : JSON.stringify(body);
|
|
109
|
+
return this.fetch(path, { ...init, method: "PUT", body: requestBody });
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Helper for PATCH requests
|
|
113
|
+
*/
|
|
114
|
+
async patch(path, body, init = {}) {
|
|
115
|
+
return this.fetch(path, {
|
|
116
|
+
...init,
|
|
117
|
+
method: "PATCH",
|
|
118
|
+
body: JSON.stringify(body),
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Helper for DELETE requests
|
|
123
|
+
*/
|
|
124
|
+
async delete(path, init = {}) {
|
|
125
|
+
return this.fetch(path, { ...init, method: "DELETE" });
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/neon/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/neon/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/neon/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
import type { Context } from "../context.js";
|
|
2
|
+
import { Resource } from "../resource.js";
|
|
3
|
+
import type { Secret } from "../secret.js";
|
|
4
|
+
import { type NeonApiOptions } from "./api.js";
|
|
5
|
+
/**
|
|
6
|
+
* A Neon region where projects can be provisioned
|
|
7
|
+
*/
|
|
8
|
+
export type NeonRegion = "aws-us-east-1" | "aws-us-east-2" | "aws-us-west-2" | "aws-eu-central-1" | "aws-eu-west-2" | "aws-ap-southeast-1" | "aws-ap-southeast-2" | "aws-sa-east-1" | "azure-eastus2" | "azure-westus3" | "azure-gwc";
|
|
9
|
+
/**
|
|
10
|
+
* Properties for creating or updating a Neon project
|
|
11
|
+
*/
|
|
12
|
+
export interface NeonProjectProps extends NeonApiOptions {
|
|
13
|
+
/**
|
|
14
|
+
* Name of the project
|
|
15
|
+
*/
|
|
16
|
+
name: string;
|
|
17
|
+
/**
|
|
18
|
+
* Region where the project will be provisioned
|
|
19
|
+
* @default "aws-us-east-1"
|
|
20
|
+
*/
|
|
21
|
+
region_id?: NeonRegion;
|
|
22
|
+
/**
|
|
23
|
+
* PostgreSQL version to use
|
|
24
|
+
* @default 15
|
|
25
|
+
*/
|
|
26
|
+
pg_version?: 14 | 15 | 16;
|
|
27
|
+
/**
|
|
28
|
+
* Whether to create a default branch and endpoint
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
31
|
+
default_endpoint?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Default branch name
|
|
34
|
+
* @default "main"
|
|
35
|
+
*/
|
|
36
|
+
default_branch_name?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Existing project ID to update
|
|
39
|
+
* Used internally during update operations
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
existing_project_id?: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* A Neon database
|
|
46
|
+
*/
|
|
47
|
+
export interface NeonDatabase {
|
|
48
|
+
/**
|
|
49
|
+
* Database ID
|
|
50
|
+
*/
|
|
51
|
+
id: number;
|
|
52
|
+
/**
|
|
53
|
+
* ID of the branch this database belongs to
|
|
54
|
+
*/
|
|
55
|
+
branch_id: string;
|
|
56
|
+
/**
|
|
57
|
+
* Database name
|
|
58
|
+
*/
|
|
59
|
+
name: string;
|
|
60
|
+
/**
|
|
61
|
+
* Name of the database owner role
|
|
62
|
+
*/
|
|
63
|
+
owner_name: string;
|
|
64
|
+
/**
|
|
65
|
+
* Time at which the database was created
|
|
66
|
+
*/
|
|
67
|
+
created_at: string;
|
|
68
|
+
/**
|
|
69
|
+
* Time at which the database was last updated
|
|
70
|
+
*/
|
|
71
|
+
updated_at: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* A Neon database role
|
|
75
|
+
*/
|
|
76
|
+
export interface NeonRole {
|
|
77
|
+
/**
|
|
78
|
+
* ID of the branch this role belongs to
|
|
79
|
+
*/
|
|
80
|
+
branch_id: string;
|
|
81
|
+
/**
|
|
82
|
+
* Role name
|
|
83
|
+
*/
|
|
84
|
+
name: string;
|
|
85
|
+
/**
|
|
86
|
+
* Role password (only included during creation)
|
|
87
|
+
*/
|
|
88
|
+
password?: string;
|
|
89
|
+
/**
|
|
90
|
+
* Whether this role is protected from deletion
|
|
91
|
+
*/
|
|
92
|
+
protected: boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Time at which the role was created
|
|
95
|
+
*/
|
|
96
|
+
created_at: string;
|
|
97
|
+
/**
|
|
98
|
+
* Time at which the role was last updated
|
|
99
|
+
*/
|
|
100
|
+
updated_at: string;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* A Neon branch
|
|
104
|
+
*/
|
|
105
|
+
export interface NeonBranch {
|
|
106
|
+
/**
|
|
107
|
+
* Branch ID
|
|
108
|
+
*/
|
|
109
|
+
id: string;
|
|
110
|
+
/**
|
|
111
|
+
* ID of the project this branch belongs to
|
|
112
|
+
*/
|
|
113
|
+
project_id: string;
|
|
114
|
+
/**
|
|
115
|
+
* Branch name
|
|
116
|
+
*/
|
|
117
|
+
name: string;
|
|
118
|
+
/**
|
|
119
|
+
* Current state of the branch
|
|
120
|
+
*/
|
|
121
|
+
current_state: string;
|
|
122
|
+
/**
|
|
123
|
+
* Pending state of the branch
|
|
124
|
+
*/
|
|
125
|
+
pending_state: string;
|
|
126
|
+
/**
|
|
127
|
+
* Time at which the branch was created
|
|
128
|
+
*/
|
|
129
|
+
created_at: string;
|
|
130
|
+
/**
|
|
131
|
+
* Time at which the branch was last updated
|
|
132
|
+
*/
|
|
133
|
+
updated_at: string;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* A Neon compute endpoint
|
|
137
|
+
*/
|
|
138
|
+
export interface NeonEndpoint {
|
|
139
|
+
/**
|
|
140
|
+
* Endpoint ID
|
|
141
|
+
*/
|
|
142
|
+
id: string;
|
|
143
|
+
/**
|
|
144
|
+
* Host for connecting to this endpoint
|
|
145
|
+
*/
|
|
146
|
+
host: string;
|
|
147
|
+
/**
|
|
148
|
+
* ID of the project this endpoint belongs to
|
|
149
|
+
*/
|
|
150
|
+
project_id: string;
|
|
151
|
+
/**
|
|
152
|
+
* ID of the branch this endpoint belongs to
|
|
153
|
+
*/
|
|
154
|
+
branch_id: string;
|
|
155
|
+
/**
|
|
156
|
+
* Endpoint type (read_write, read_only)
|
|
157
|
+
*/
|
|
158
|
+
type: string;
|
|
159
|
+
/**
|
|
160
|
+
* Current state of the endpoint
|
|
161
|
+
*/
|
|
162
|
+
current_state: string;
|
|
163
|
+
/**
|
|
164
|
+
* Pending state of the endpoint
|
|
165
|
+
*/
|
|
166
|
+
pending_state: string;
|
|
167
|
+
/**
|
|
168
|
+
* Region ID where this endpoint is provisioned
|
|
169
|
+
*/
|
|
170
|
+
region_id: string;
|
|
171
|
+
/**
|
|
172
|
+
* Minimum compute units for autoscaling
|
|
173
|
+
*/
|
|
174
|
+
autoscaling_limit_min_cu: number;
|
|
175
|
+
/**
|
|
176
|
+
* Maximum compute units for autoscaling
|
|
177
|
+
*/
|
|
178
|
+
autoscaling_limit_max_cu: number;
|
|
179
|
+
/**
|
|
180
|
+
* Whether connection pooler is enabled
|
|
181
|
+
*/
|
|
182
|
+
pooler_enabled: boolean;
|
|
183
|
+
/**
|
|
184
|
+
* Connection pooler mode
|
|
185
|
+
*/
|
|
186
|
+
pooler_mode: string;
|
|
187
|
+
/**
|
|
188
|
+
* Whether this endpoint is disabled
|
|
189
|
+
*/
|
|
190
|
+
disabled: boolean;
|
|
191
|
+
/**
|
|
192
|
+
* Whether passwordless access is enabled
|
|
193
|
+
*/
|
|
194
|
+
passwordless_access: boolean;
|
|
195
|
+
/**
|
|
196
|
+
* Time at which the endpoint was created
|
|
197
|
+
*/
|
|
198
|
+
created_at: string;
|
|
199
|
+
/**
|
|
200
|
+
* Time at which the endpoint was last updated
|
|
201
|
+
*/
|
|
202
|
+
updated_at: string;
|
|
203
|
+
/**
|
|
204
|
+
* Proxy host for this endpoint
|
|
205
|
+
*/
|
|
206
|
+
proxy_host: string;
|
|
207
|
+
/**
|
|
208
|
+
* Endpoint settings
|
|
209
|
+
*/
|
|
210
|
+
settings: {
|
|
211
|
+
/**
|
|
212
|
+
* PostgreSQL settings
|
|
213
|
+
*/
|
|
214
|
+
pg_settings: Record<string, any>;
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* A Neon connection URI
|
|
219
|
+
*/
|
|
220
|
+
export interface NeonConnectionUri {
|
|
221
|
+
/**
|
|
222
|
+
* Connection URI string
|
|
223
|
+
*/
|
|
224
|
+
connection_uri: Secret;
|
|
225
|
+
/**
|
|
226
|
+
* Connection parameters
|
|
227
|
+
*/
|
|
228
|
+
connection_parameters: {
|
|
229
|
+
database: string;
|
|
230
|
+
host: string;
|
|
231
|
+
port: number;
|
|
232
|
+
user: string;
|
|
233
|
+
password: Secret;
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* A Neon operation
|
|
238
|
+
*/
|
|
239
|
+
export interface NeonOperation {
|
|
240
|
+
/**
|
|
241
|
+
* Operation ID
|
|
242
|
+
*/
|
|
243
|
+
id: string;
|
|
244
|
+
/**
|
|
245
|
+
* ID of the project this operation belongs to
|
|
246
|
+
*/
|
|
247
|
+
project_id: string;
|
|
248
|
+
/**
|
|
249
|
+
* ID of the branch this operation affects, if applicable
|
|
250
|
+
*/
|
|
251
|
+
branch_id?: string;
|
|
252
|
+
/**
|
|
253
|
+
* ID of the endpoint this operation affects, if applicable
|
|
254
|
+
*/
|
|
255
|
+
endpoint_id?: string;
|
|
256
|
+
/**
|
|
257
|
+
* Action being performed
|
|
258
|
+
*/
|
|
259
|
+
action: string;
|
|
260
|
+
/**
|
|
261
|
+
* Current status of the operation
|
|
262
|
+
*/
|
|
263
|
+
status: string;
|
|
264
|
+
/**
|
|
265
|
+
* Number of failures encountered
|
|
266
|
+
*/
|
|
267
|
+
failures_count: number;
|
|
268
|
+
/**
|
|
269
|
+
* Time at which the operation was created
|
|
270
|
+
*/
|
|
271
|
+
created_at: string;
|
|
272
|
+
/**
|
|
273
|
+
* Time at which the operation was last updated
|
|
274
|
+
*/
|
|
275
|
+
updated_at: string;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Output returned after Neon project creation/update
|
|
279
|
+
* IMPORTANT: The interface name MUST match the exported resource name
|
|
280
|
+
*/
|
|
281
|
+
export interface NeonProject extends Resource<"neon::Project">, Omit<NeonProjectProps, "apiKey" | "existing_project_id"> {
|
|
282
|
+
/**
|
|
283
|
+
* The ID of the project
|
|
284
|
+
*/
|
|
285
|
+
id: string;
|
|
286
|
+
/**
|
|
287
|
+
* Time at which the project was created
|
|
288
|
+
*/
|
|
289
|
+
created_at: string;
|
|
290
|
+
/**
|
|
291
|
+
* Time at which the project was last updated
|
|
292
|
+
*/
|
|
293
|
+
updated_at: string;
|
|
294
|
+
/**
|
|
295
|
+
* Hostname for proxy access
|
|
296
|
+
*/
|
|
297
|
+
proxy_host?: string;
|
|
298
|
+
/**
|
|
299
|
+
* Connection URIs for the databases
|
|
300
|
+
*/
|
|
301
|
+
connection_uris: [NeonConnectionUri, ...NeonConnectionUri[]];
|
|
302
|
+
/**
|
|
303
|
+
* Database roles created with the project
|
|
304
|
+
*/
|
|
305
|
+
roles: [NeonRole, ...NeonRole[]];
|
|
306
|
+
/**
|
|
307
|
+
* Databases created with the project
|
|
308
|
+
*/
|
|
309
|
+
databases?: [NeonDatabase, ...NeonDatabase[]];
|
|
310
|
+
/**
|
|
311
|
+
* Default branch information
|
|
312
|
+
*/
|
|
313
|
+
branch?: NeonBranch;
|
|
314
|
+
/**
|
|
315
|
+
* Compute endpoints for the project
|
|
316
|
+
*/
|
|
317
|
+
endpoints: [NeonEndpoint, ...NeonEndpoint[]];
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Creates a Neon serverless PostgreSQL project.
|
|
321
|
+
*
|
|
322
|
+
* @example
|
|
323
|
+
* // Create a basic Neon project with default settings:
|
|
324
|
+
* const project = await NeonProject("my-project", {
|
|
325
|
+
* name: "My Project"
|
|
326
|
+
* });
|
|
327
|
+
*
|
|
328
|
+
* @example
|
|
329
|
+
* // Create a Neon project in a specific region with a specific PostgreSQL version:
|
|
330
|
+
* const euProject = await NeonProject("my-eu-project", {
|
|
331
|
+
* name: "My EU Project",
|
|
332
|
+
* region_id: "aws-eu-west-1",
|
|
333
|
+
* pg_version: 16,
|
|
334
|
+
* apiKey: alchemy.secret(process.env.NEON_API_KEY)
|
|
335
|
+
* });
|
|
336
|
+
*
|
|
337
|
+
* @example
|
|
338
|
+
* // Create a Neon project with a custom default branch name:
|
|
339
|
+
* const devProject = await NeonProject("dev-project", {
|
|
340
|
+
* name: "Development Project",
|
|
341
|
+
* default_branch_name: "development"
|
|
342
|
+
* });
|
|
343
|
+
*/
|
|
344
|
+
export declare const NeonProject: (((this: any, id: string, props?: {}) => never) & (new (_: never) => never)) | ((this: Context<NeonProject>, id: string, props: NeonProjectProps) => Promise<NeonProject>);
|
|
345
|
+
//# sourceMappingURL=project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/neon/project.ts"],"names":[],"mappings":"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"}
|