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.
Files changed (80) hide show
  1. package/lib/cloudflare/ai-gateway.d.ts.map +1 -1
  2. package/lib/cloudflare/ai-gateway.js +1 -2
  3. package/lib/cloudflare/ai-gateway.js.map +1 -1
  4. package/lib/cloudflare/bindings.d.ts +2 -1
  5. package/lib/cloudflare/bindings.d.ts.map +1 -1
  6. package/lib/cloudflare/bound.d.ts +2 -1
  7. package/lib/cloudflare/bound.d.ts.map +1 -1
  8. package/lib/cloudflare/bucket.d.ts +8 -2
  9. package/lib/cloudflare/bucket.d.ts.map +1 -1
  10. package/lib/cloudflare/bucket.js +1 -1
  11. package/lib/cloudflare/bucket.js.map +1 -1
  12. package/lib/cloudflare/d1-database.d.ts +8 -2
  13. package/lib/cloudflare/d1-database.d.ts.map +1 -1
  14. package/lib/cloudflare/d1-database.js +2 -2
  15. package/lib/cloudflare/d1-database.js.map +1 -1
  16. package/lib/cloudflare/event-source.d.ts +26 -0
  17. package/lib/cloudflare/event-source.d.ts.map +1 -0
  18. package/lib/cloudflare/event-source.js +9 -0
  19. package/lib/cloudflare/event-source.js.map +1 -0
  20. package/lib/cloudflare/hyperdrive.d.ts +216 -0
  21. package/lib/cloudflare/hyperdrive.d.ts.map +1 -0
  22. package/lib/cloudflare/hyperdrive.js +184 -0
  23. package/lib/cloudflare/hyperdrive.js.map +1 -0
  24. package/lib/cloudflare/index.d.ts +2 -0
  25. package/lib/cloudflare/index.d.ts.map +1 -1
  26. package/lib/cloudflare/index.js +2 -0
  27. package/lib/cloudflare/index.js.map +1 -1
  28. package/lib/cloudflare/queue-consumer.d.ts +162 -0
  29. package/lib/cloudflare/queue-consumer.d.ts.map +1 -0
  30. package/lib/cloudflare/queue-consumer.js +197 -0
  31. package/lib/cloudflare/queue-consumer.js.map +1 -0
  32. package/lib/cloudflare/queue.d.ts +15 -3
  33. package/lib/cloudflare/queue.d.ts.map +1 -1
  34. package/lib/cloudflare/queue.js +8 -2
  35. package/lib/cloudflare/queue.js.map +1 -1
  36. package/lib/cloudflare/website.d.ts.map +1 -1
  37. package/lib/cloudflare/website.js +8 -10
  38. package/lib/cloudflare/website.js.map +1 -1
  39. package/lib/cloudflare/worker.d.ts +13 -2
  40. package/lib/cloudflare/worker.d.ts.map +1 -1
  41. package/lib/cloudflare/worker.js +75 -3
  42. package/lib/cloudflare/worker.js.map +1 -1
  43. package/lib/cloudflare/wrangler.json.d.ts +13 -3
  44. package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
  45. package/lib/cloudflare/wrangler.json.js +27 -5
  46. package/lib/cloudflare/wrangler.json.js.map +1 -1
  47. package/lib/neon/api-error.d.ts +31 -0
  48. package/lib/neon/api-error.d.ts.map +1 -0
  49. package/lib/neon/api-error.js +73 -0
  50. package/lib/neon/api-error.js.map +1 -0
  51. package/lib/neon/api.d.ts +70 -0
  52. package/lib/neon/api.d.ts.map +1 -0
  53. package/lib/neon/api.js +128 -0
  54. package/lib/neon/api.js.map +1 -0
  55. package/lib/neon/index.d.ts +4 -0
  56. package/lib/neon/index.d.ts.map +1 -0
  57. package/lib/neon/index.js +4 -0
  58. package/lib/neon/index.js.map +1 -0
  59. package/lib/neon/project.d.ts +345 -0
  60. package/lib/neon/project.d.ts.map +1 -0
  61. package/lib/neon/project.js +305 -0
  62. package/lib/neon/project.js.map +1 -0
  63. package/package.json +2 -1
  64. package/src/cloudflare/ai-gateway.ts +0 -1
  65. package/src/cloudflare/bindings.ts +4 -2
  66. package/src/cloudflare/bound.ts +20 -17
  67. package/src/cloudflare/bucket.ts +9 -2
  68. package/src/cloudflare/d1-database.ts +10 -3
  69. package/src/cloudflare/event-source.ts +33 -0
  70. package/src/cloudflare/hyperdrive.ts +375 -0
  71. package/src/cloudflare/index.ts +2 -0
  72. package/src/cloudflare/queue-consumer.ts +433 -0
  73. package/src/cloudflare/queue.ts +83 -63
  74. package/src/cloudflare/website.ts +9 -13
  75. package/src/cloudflare/worker.ts +109 -5
  76. package/src/cloudflare/wrangler.json.ts +52 -8
  77. package/src/neon/api-error.ts +81 -0
  78. package/src/neon/api.ts +178 -0
  79. package/src/neon/index.ts +3 -0
  80. 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"}
@@ -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":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAkB1D;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,UAAmC,EAAE;IACjE,OAAO,IAAI,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAgC;IAEhC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAEvE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F,CAAC;IACJ,CAAC;IAED,OAAO;QACL,cAAc,EAAE,kBAAkB;QAClC,MAAM,EAAE,kBAAkB;QAC1B,aAAa,EAAE,UAAU,MAAM,EAAE;KAClC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,OAAO;IASW;IARb,OAAO,CAAS;IAEhC;;;;;OAKG;IACH,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QAClD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,kCAAkC,CAAC;IACvE,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,OAAoB,EAAE;QAC9C,IAAI,OAAO,GAA2B,EAAE,CAAC;QAEzC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBACpC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,YAAY,OAAO,EAAE,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBAClC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,GAAG,IAAI,CAAC,OAAiC,CAAC;QACnD,CAAC;QAED,OAAO,GAAG;YACR,GAAG,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3C,GAAG,OAAO;SACX,CAAC;QAEF,mEAAmE;QACnE,OAAO,sBAAsB,CAC3B,GAAG,EAAE,CACH,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YAC9B,GAAG,IAAI;YACP,OAAO;SACR,CAAC,EACJ,CAAC,KAAK,EAAE,EAAE;YACR,uCAAuC;YACvC,MAAM,QAAQ,GAAI,KAAe,CAAC,OAAO,IAAI,EAAE,CAAC;YAChD,MAAM,cAAc,GAClB,QAAQ,CAAC,QAAQ,CAAC,8BAA8B,CAAC;gBACjD,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAC/B,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC9B,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAEpC,OAAO,cAAc,IAAI,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACrE,CAAC,EACD,CAAC,EAAE,6CAA6C;QAChD,IAAI,CAAC,mDAAmD;SACzD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,IAAY,EAAE,OAAoB,EAAE;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CACR,IAAY,EACZ,IAAS,EACT,OAAoB,EAAE;QAEtB,MAAM,WAAW,GACf,IAAI,YAAY,QAAQ;YACtB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ;gBACxB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CACP,IAAY,EACZ,IAAS,EACT,OAAoB,EAAE;QAEtB,MAAM,WAAW,GAAG,IAAI,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CACT,IAAY,EACZ,IAAS,EACT,OAAoB,EAAE;QAEtB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACtB,GAAG,IAAI;YACP,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,OAAoB,EAAE;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzD,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ export * from "./api-error.js";
2
+ export * from "./api.js";
3
+ export * from "./project.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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,4 @@
1
+ export * from "./api-error.js";
2
+ export * from "./api.js";
3
+ export * from "./project.js";
4
+ //# sourceMappingURL=index.js.map
@@ -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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"}