@edge-base/cli 0.1.1

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 (234) hide show
  1. package/README.md +182 -0
  2. package/dist/commands/admin.d.ts +10 -0
  3. package/dist/commands/admin.d.ts.map +1 -0
  4. package/dist/commands/admin.js +307 -0
  5. package/dist/commands/admin.js.map +1 -0
  6. package/dist/commands/backup.d.ts +148 -0
  7. package/dist/commands/backup.d.ts.map +1 -0
  8. package/dist/commands/backup.js +1247 -0
  9. package/dist/commands/backup.js.map +1 -0
  10. package/dist/commands/completion.d.ts +3 -0
  11. package/dist/commands/completion.d.ts.map +1 -0
  12. package/dist/commands/completion.js +168 -0
  13. package/dist/commands/completion.js.map +1 -0
  14. package/dist/commands/create-plugin.d.ts +3 -0
  15. package/dist/commands/create-plugin.d.ts.map +1 -0
  16. package/dist/commands/create-plugin.js +208 -0
  17. package/dist/commands/create-plugin.js.map +1 -0
  18. package/dist/commands/deploy.d.ts +146 -0
  19. package/dist/commands/deploy.d.ts.map +1 -0
  20. package/dist/commands/deploy.js +1823 -0
  21. package/dist/commands/deploy.js.map +1 -0
  22. package/dist/commands/describe.d.ts +45 -0
  23. package/dist/commands/describe.d.ts.map +1 -0
  24. package/dist/commands/describe.js +114 -0
  25. package/dist/commands/describe.js.map +1 -0
  26. package/dist/commands/destroy.d.ts +13 -0
  27. package/dist/commands/destroy.d.ts.map +1 -0
  28. package/dist/commands/destroy.js +642 -0
  29. package/dist/commands/destroy.js.map +1 -0
  30. package/dist/commands/dev.d.ts +80 -0
  31. package/dist/commands/dev.d.ts.map +1 -0
  32. package/dist/commands/dev.js +1131 -0
  33. package/dist/commands/dev.js.map +1 -0
  34. package/dist/commands/docker.d.ts +22 -0
  35. package/dist/commands/docker.d.ts.map +1 -0
  36. package/dist/commands/docker.js +373 -0
  37. package/dist/commands/docker.js.map +1 -0
  38. package/dist/commands/export.d.ts +15 -0
  39. package/dist/commands/export.d.ts.map +1 -0
  40. package/dist/commands/export.js +142 -0
  41. package/dist/commands/export.js.map +1 -0
  42. package/dist/commands/init.d.ts +7 -0
  43. package/dist/commands/init.d.ts.map +1 -0
  44. package/dist/commands/init.js +506 -0
  45. package/dist/commands/init.js.map +1 -0
  46. package/dist/commands/keys.d.ts +23 -0
  47. package/dist/commands/keys.d.ts.map +1 -0
  48. package/dist/commands/keys.js +347 -0
  49. package/dist/commands/keys.js.map +1 -0
  50. package/dist/commands/logs.d.ts +17 -0
  51. package/dist/commands/logs.d.ts.map +1 -0
  52. package/dist/commands/logs.js +104 -0
  53. package/dist/commands/logs.js.map +1 -0
  54. package/dist/commands/migrate.d.ts +29 -0
  55. package/dist/commands/migrate.d.ts.map +1 -0
  56. package/dist/commands/migrate.js +302 -0
  57. package/dist/commands/migrate.js.map +1 -0
  58. package/dist/commands/migration.d.ts +18 -0
  59. package/dist/commands/migration.d.ts.map +1 -0
  60. package/dist/commands/migration.js +114 -0
  61. package/dist/commands/migration.js.map +1 -0
  62. package/dist/commands/neon.d.ts +66 -0
  63. package/dist/commands/neon.d.ts.map +1 -0
  64. package/dist/commands/neon.js +600 -0
  65. package/dist/commands/neon.js.map +1 -0
  66. package/dist/commands/plugins.d.ts +9 -0
  67. package/dist/commands/plugins.d.ts.map +1 -0
  68. package/dist/commands/plugins.js +295 -0
  69. package/dist/commands/plugins.js.map +1 -0
  70. package/dist/commands/realtime.d.ts +3 -0
  71. package/dist/commands/realtime.d.ts.map +1 -0
  72. package/dist/commands/realtime.js +71 -0
  73. package/dist/commands/realtime.js.map +1 -0
  74. package/dist/commands/secret.d.ts +7 -0
  75. package/dist/commands/secret.d.ts.map +1 -0
  76. package/dist/commands/secret.js +180 -0
  77. package/dist/commands/secret.js.map +1 -0
  78. package/dist/commands/seed.d.ts +21 -0
  79. package/dist/commands/seed.d.ts.map +1 -0
  80. package/dist/commands/seed.js +325 -0
  81. package/dist/commands/seed.js.map +1 -0
  82. package/dist/commands/telemetry.d.ts +12 -0
  83. package/dist/commands/telemetry.d.ts.map +1 -0
  84. package/dist/commands/telemetry.js +57 -0
  85. package/dist/commands/telemetry.js.map +1 -0
  86. package/dist/commands/typegen.d.ts +26 -0
  87. package/dist/commands/typegen.d.ts.map +1 -0
  88. package/dist/commands/typegen.js +212 -0
  89. package/dist/commands/typegen.js.map +1 -0
  90. package/dist/commands/upgrade.d.ts +29 -0
  91. package/dist/commands/upgrade.d.ts.map +1 -0
  92. package/dist/commands/upgrade.js +265 -0
  93. package/dist/commands/upgrade.js.map +1 -0
  94. package/dist/commands/webhook-test.d.ts +3 -0
  95. package/dist/commands/webhook-test.d.ts.map +1 -0
  96. package/dist/commands/webhook-test.js +133 -0
  97. package/dist/commands/webhook-test.js.map +1 -0
  98. package/dist/index.d.ts +3 -0
  99. package/dist/index.d.ts.map +1 -0
  100. package/dist/index.js +183 -0
  101. package/dist/index.js.map +1 -0
  102. package/dist/lib/agent-contract.d.ts +36 -0
  103. package/dist/lib/agent-contract.d.ts.map +1 -0
  104. package/dist/lib/agent-contract.js +78 -0
  105. package/dist/lib/agent-contract.js.map +1 -0
  106. package/dist/lib/cf-auth.d.ts +76 -0
  107. package/dist/lib/cf-auth.d.ts.map +1 -0
  108. package/dist/lib/cf-auth.js +321 -0
  109. package/dist/lib/cf-auth.js.map +1 -0
  110. package/dist/lib/cli-context.d.ts +23 -0
  111. package/dist/lib/cli-context.d.ts.map +1 -0
  112. package/dist/lib/cli-context.js +40 -0
  113. package/dist/lib/cli-context.js.map +1 -0
  114. package/dist/lib/cloudflare-deploy-manifest.d.ts +26 -0
  115. package/dist/lib/cloudflare-deploy-manifest.d.ts.map +1 -0
  116. package/dist/lib/cloudflare-deploy-manifest.js +107 -0
  117. package/dist/lib/cloudflare-deploy-manifest.js.map +1 -0
  118. package/dist/lib/cloudflare-wrangler-resources.d.ts +32 -0
  119. package/dist/lib/cloudflare-wrangler-resources.d.ts.map +1 -0
  120. package/dist/lib/cloudflare-wrangler-resources.js +59 -0
  121. package/dist/lib/cloudflare-wrangler-resources.js.map +1 -0
  122. package/dist/lib/config-editor.d.ts +139 -0
  123. package/dist/lib/config-editor.d.ts.map +1 -0
  124. package/dist/lib/config-editor.js +1188 -0
  125. package/dist/lib/config-editor.js.map +1 -0
  126. package/dist/lib/deploy-shared.d.ts +55 -0
  127. package/dist/lib/deploy-shared.d.ts.map +1 -0
  128. package/dist/lib/deploy-shared.js +183 -0
  129. package/dist/lib/deploy-shared.js.map +1 -0
  130. package/dist/lib/dev-sidecar.d.ts +31 -0
  131. package/dist/lib/dev-sidecar.d.ts.map +1 -0
  132. package/dist/lib/dev-sidecar.js +1058 -0
  133. package/dist/lib/dev-sidecar.js.map +1 -0
  134. package/dist/lib/fetch-with-timeout.d.ts +14 -0
  135. package/dist/lib/fetch-with-timeout.d.ts.map +1 -0
  136. package/dist/lib/fetch-with-timeout.js +29 -0
  137. package/dist/lib/fetch-with-timeout.js.map +1 -0
  138. package/dist/lib/function-registry.d.ts +56 -0
  139. package/dist/lib/function-registry.d.ts.map +1 -0
  140. package/dist/lib/function-registry.js +210 -0
  141. package/dist/lib/function-registry.js.map +1 -0
  142. package/dist/lib/load-config.d.ts +24 -0
  143. package/dist/lib/load-config.d.ts.map +1 -0
  144. package/dist/lib/load-config.js +263 -0
  145. package/dist/lib/load-config.js.map +1 -0
  146. package/dist/lib/local-secrets.d.ts +2 -0
  147. package/dist/lib/local-secrets.d.ts.map +1 -0
  148. package/dist/lib/local-secrets.js +60 -0
  149. package/dist/lib/local-secrets.js.map +1 -0
  150. package/dist/lib/managed-resource-names.d.ts +4 -0
  151. package/dist/lib/managed-resource-names.d.ts.map +1 -0
  152. package/dist/lib/managed-resource-names.js +19 -0
  153. package/dist/lib/managed-resource-names.js.map +1 -0
  154. package/dist/lib/migrator.d.ts +57 -0
  155. package/dist/lib/migrator.d.ts.map +1 -0
  156. package/dist/lib/migrator.js +321 -0
  157. package/dist/lib/migrator.js.map +1 -0
  158. package/dist/lib/neon.d.ts +41 -0
  159. package/dist/lib/neon.d.ts.map +1 -0
  160. package/dist/lib/neon.js +325 -0
  161. package/dist/lib/neon.js.map +1 -0
  162. package/dist/lib/node-tools.d.ts +10 -0
  163. package/dist/lib/node-tools.d.ts.map +1 -0
  164. package/dist/lib/node-tools.js +32 -0
  165. package/dist/lib/node-tools.js.map +1 -0
  166. package/dist/lib/npm.d.ts +8 -0
  167. package/dist/lib/npm.d.ts.map +1 -0
  168. package/dist/lib/npm.js +10 -0
  169. package/dist/lib/npm.js.map +1 -0
  170. package/dist/lib/npx.d.ts +9 -0
  171. package/dist/lib/npx.d.ts.map +1 -0
  172. package/dist/lib/npx.js +11 -0
  173. package/dist/lib/npx.js.map +1 -0
  174. package/dist/lib/project-runtime.d.ts +38 -0
  175. package/dist/lib/project-runtime.d.ts.map +1 -0
  176. package/dist/lib/project-runtime.js +122 -0
  177. package/dist/lib/project-runtime.js.map +1 -0
  178. package/dist/lib/prompts.d.ts +28 -0
  179. package/dist/lib/prompts.d.ts.map +1 -0
  180. package/dist/lib/prompts.js +85 -0
  181. package/dist/lib/prompts.js.map +1 -0
  182. package/dist/lib/rate-limit-bindings.d.ts +11 -0
  183. package/dist/lib/rate-limit-bindings.d.ts.map +1 -0
  184. package/dist/lib/rate-limit-bindings.js +52 -0
  185. package/dist/lib/rate-limit-bindings.js.map +1 -0
  186. package/dist/lib/realtime-provision.d.ts +22 -0
  187. package/dist/lib/realtime-provision.d.ts.map +1 -0
  188. package/dist/lib/realtime-provision.js +246 -0
  189. package/dist/lib/realtime-provision.js.map +1 -0
  190. package/dist/lib/resolve-options.d.ts +42 -0
  191. package/dist/lib/resolve-options.d.ts.map +1 -0
  192. package/dist/lib/resolve-options.js +98 -0
  193. package/dist/lib/resolve-options.js.map +1 -0
  194. package/dist/lib/runtime-scaffold.d.ts +17 -0
  195. package/dist/lib/runtime-scaffold.d.ts.map +1 -0
  196. package/dist/lib/runtime-scaffold.js +366 -0
  197. package/dist/lib/runtime-scaffold.js.map +1 -0
  198. package/dist/lib/schema-check.d.ts +79 -0
  199. package/dist/lib/schema-check.d.ts.map +1 -0
  200. package/dist/lib/schema-check.js +347 -0
  201. package/dist/lib/schema-check.js.map +1 -0
  202. package/dist/lib/spinner.d.ts +20 -0
  203. package/dist/lib/spinner.d.ts.map +1 -0
  204. package/dist/lib/spinner.js +42 -0
  205. package/dist/lib/spinner.js.map +1 -0
  206. package/dist/lib/telemetry.d.ts +37 -0
  207. package/dist/lib/telemetry.d.ts.map +1 -0
  208. package/dist/lib/telemetry.js +98 -0
  209. package/dist/lib/telemetry.js.map +1 -0
  210. package/dist/lib/turnstile-provision.d.ts +27 -0
  211. package/dist/lib/turnstile-provision.d.ts.map +1 -0
  212. package/dist/lib/turnstile-provision.js +144 -0
  213. package/dist/lib/turnstile-provision.js.map +1 -0
  214. package/dist/lib/update-check.d.ts +13 -0
  215. package/dist/lib/update-check.d.ts.map +1 -0
  216. package/dist/lib/update-check.js +110 -0
  217. package/dist/lib/update-check.js.map +1 -0
  218. package/dist/lib/wrangler-secrets.d.ts +3 -0
  219. package/dist/lib/wrangler-secrets.d.ts.map +1 -0
  220. package/dist/lib/wrangler-secrets.js +32 -0
  221. package/dist/lib/wrangler-secrets.js.map +1 -0
  222. package/dist/lib/wrangler.d.ts +9 -0
  223. package/dist/lib/wrangler.d.ts.map +1 -0
  224. package/dist/lib/wrangler.js +84 -0
  225. package/dist/lib/wrangler.js.map +1 -0
  226. package/dist/templates/plugin/README.md.tmpl +91 -0
  227. package/dist/templates/plugin/client/js/package.json.tmpl +23 -0
  228. package/dist/templates/plugin/client/js/src/index.ts.tmpl +68 -0
  229. package/dist/templates/plugin/client/js/tsconfig.json.tmpl +14 -0
  230. package/dist/templates/plugin/server/package.json.tmpl +19 -0
  231. package/dist/templates/plugin/server/src/index.ts.tmpl +59 -0
  232. package/dist/templates/plugin/server/tsconfig.json.tmpl +14 -0
  233. package/llms.txt +94 -0
  234. package/package.json +60 -0
@@ -0,0 +1,325 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ import { chmodSync, existsSync, readFileSync, writeFileSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { npxCommand } from './npx.js';
5
+ const NEONCTL_PACKAGE = 'neonctl@latest';
6
+ const POSTGRES_PROTOCOLS = ['postgres://', 'postgresql://'];
7
+ function pickString(value) {
8
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
9
+ }
10
+ function formatExecError(error) {
11
+ if (!error || typeof error !== 'object') {
12
+ return String(error);
13
+ }
14
+ const err = error;
15
+ const stderr = typeof err.stderr === 'string'
16
+ ? err.stderr.trim()
17
+ : Buffer.isBuffer(err.stderr)
18
+ ? err.stderr.toString('utf-8').trim()
19
+ : '';
20
+ if (stderr)
21
+ return stderr;
22
+ const stdout = typeof err.stdout === 'string'
23
+ ? err.stdout.trim()
24
+ : Buffer.isBuffer(err.stdout)
25
+ ? err.stdout.toString('utf-8').trim()
26
+ : '';
27
+ if (stdout)
28
+ return stdout;
29
+ return err.message;
30
+ }
31
+ function findConnectionString(value) {
32
+ if (typeof value === 'string') {
33
+ const trimmed = value.trim();
34
+ if (POSTGRES_PROTOCOLS.some((prefix) => trimmed.startsWith(prefix))) {
35
+ return trimmed;
36
+ }
37
+ return undefined;
38
+ }
39
+ if (Array.isArray(value)) {
40
+ for (const entry of value) {
41
+ const found = findConnectionString(entry);
42
+ if (found)
43
+ return found;
44
+ }
45
+ return undefined;
46
+ }
47
+ if (!value || typeof value !== 'object') {
48
+ return undefined;
49
+ }
50
+ const record = value;
51
+ for (const key of [
52
+ 'connection_string',
53
+ 'connectionString',
54
+ 'uri',
55
+ 'url',
56
+ 'dsn',
57
+ 'connection_uri',
58
+ 'connectionUri',
59
+ ]) {
60
+ const found = pickString(record[key]);
61
+ if (found && POSTGRES_PROTOCOLS.some((prefix) => found.startsWith(prefix))) {
62
+ return found;
63
+ }
64
+ }
65
+ for (const nested of Object.values(record)) {
66
+ const found = findConnectionString(nested);
67
+ if (found)
68
+ return found;
69
+ }
70
+ return undefined;
71
+ }
72
+ export function getDefaultPostgresEnvKey(namespace) {
73
+ return `DB_POSTGRES_${namespace.toUpperCase().replace(/-/g, '_')}_URL`;
74
+ }
75
+ export function buildNeonctlArgs(commandArgs, options = {}) {
76
+ const args = ['-y', NEONCTL_PACKAGE, ...commandArgs];
77
+ if (options.output)
78
+ args.push('--output', options.output);
79
+ if (options.configDir)
80
+ args.push('--config-dir', options.configDir);
81
+ if (options.apiKey)
82
+ args.push('--api-key', options.apiKey);
83
+ return args;
84
+ }
85
+ export function runNeonctl(commandArgs, options = {}) {
86
+ try {
87
+ return execFileSync(npxCommand(), buildNeonctlArgs(commandArgs, options), {
88
+ cwd: options.cwd,
89
+ encoding: 'utf-8',
90
+ stdio: ['inherit', 'pipe', 'pipe'],
91
+ });
92
+ }
93
+ catch (error) {
94
+ throw new Error(formatExecError(error));
95
+ }
96
+ }
97
+ export function runNeonctlInteractive(commandArgs, options = {}) {
98
+ try {
99
+ execFileSync(npxCommand(), buildNeonctlArgs(commandArgs, options), {
100
+ cwd: options.cwd,
101
+ stdio: 'inherit',
102
+ });
103
+ }
104
+ catch (error) {
105
+ throw new Error(formatExecError(error));
106
+ }
107
+ }
108
+ export function parseNeonConnectionString(rawOutput) {
109
+ const trimmed = rawOutput.trim();
110
+ if (!trimmed) {
111
+ throw new Error('Neon CLI returned an empty response.');
112
+ }
113
+ try {
114
+ const parsed = JSON.parse(trimmed);
115
+ const found = findConnectionString(parsed);
116
+ if (found)
117
+ return found;
118
+ }
119
+ catch {
120
+ // Not JSON — fall through to raw line parsing.
121
+ }
122
+ const line = trimmed
123
+ .split('\n')
124
+ .map((entry) => entry.trim())
125
+ .find((entry) => POSTGRES_PROTOCOLS.some((prefix) => entry.startsWith(prefix)));
126
+ if (line)
127
+ return line;
128
+ throw new Error('Neon CLI did not return a PostgreSQL connection string.');
129
+ }
130
+ export function parseNeonBranches(rawOutput) {
131
+ const trimmed = rawOutput.trim();
132
+ if (!trimmed)
133
+ return [];
134
+ const parsed = JSON.parse(trimmed);
135
+ if (!Array.isArray(parsed))
136
+ return [];
137
+ return parsed
138
+ .filter((entry) => !!entry && typeof entry === 'object')
139
+ .map((entry) => ({
140
+ id: pickString(entry.id),
141
+ name: pickString(entry.name) ?? pickString(entry.slug) ?? '',
142
+ default: entry.default === true,
143
+ primary: entry.primary === true,
144
+ }))
145
+ .filter((entry) => entry.name.length > 0);
146
+ }
147
+ export function parseNeonOrganizations(rawOutput) {
148
+ const trimmed = rawOutput.trim();
149
+ if (!trimmed)
150
+ return [];
151
+ const parsed = JSON.parse(trimmed);
152
+ if (!Array.isArray(parsed))
153
+ return [];
154
+ return parsed
155
+ .filter((entry) => !!entry && typeof entry === 'object')
156
+ .map((entry) => ({
157
+ id: pickString(entry.id) ?? '',
158
+ name: pickString(entry.name) ?? '',
159
+ handle: pickString(entry.handle),
160
+ }))
161
+ .filter((entry) => entry.id.length > 0 && entry.name.length > 0);
162
+ }
163
+ export function parseNeonProjects(rawOutput) {
164
+ const trimmed = rawOutput.trim();
165
+ if (!trimmed)
166
+ return [];
167
+ const parsed = JSON.parse(trimmed);
168
+ if (!Array.isArray(parsed))
169
+ return [];
170
+ return parsed
171
+ .filter((entry) => !!entry && typeof entry === 'object')
172
+ .map((entry) => ({
173
+ id: pickString(entry.id) ?? '',
174
+ name: pickString(entry.name) ?? '',
175
+ orgId: pickString(entry.org_id) ?? pickString(entry.owner_id),
176
+ }))
177
+ .filter((entry) => entry.id.length > 0 && entry.name.length > 0);
178
+ }
179
+ export function parseNeonProject(rawOutput) {
180
+ const trimmed = rawOutput.trim();
181
+ if (!trimmed)
182
+ return null;
183
+ const parsed = JSON.parse(trimmed);
184
+ if (Array.isArray(parsed)) {
185
+ return parseNeonProjects(trimmed)[0] ?? null;
186
+ }
187
+ if (!parsed || typeof parsed !== 'object')
188
+ return null;
189
+ const record = parsed;
190
+ const nestedProject = record.project;
191
+ if (nestedProject && typeof nestedProject === 'object') {
192
+ const nestedRecord = nestedProject;
193
+ const nestedId = pickString(nestedRecord.id);
194
+ const nestedName = pickString(nestedRecord.name);
195
+ if (nestedId && nestedName) {
196
+ return {
197
+ id: nestedId,
198
+ name: nestedName,
199
+ orgId: pickString(nestedRecord.org_id) ?? pickString(nestedRecord.owner_id),
200
+ };
201
+ }
202
+ }
203
+ const id = pickString(record.id);
204
+ const name = pickString(record.name);
205
+ if (!id || !name)
206
+ return null;
207
+ return {
208
+ id,
209
+ name,
210
+ orgId: pickString(record.org_id) ?? pickString(record.owner_id),
211
+ };
212
+ }
213
+ export function parseNeonNamedItems(rawOutput) {
214
+ const trimmed = rawOutput.trim();
215
+ if (!trimmed)
216
+ return [];
217
+ const parsed = JSON.parse(trimmed);
218
+ if (!Array.isArray(parsed))
219
+ return [];
220
+ return parsed
221
+ .filter((entry) => !!entry && typeof entry === 'object')
222
+ .map((entry) => pickString(entry.name) ?? '')
223
+ .filter((entry) => entry.length > 0);
224
+ }
225
+ export function listNeonOrganizations(options = {}) {
226
+ const output = runNeonctl(['orgs', 'list'], { ...options, output: 'json' });
227
+ return parseNeonOrganizations(output);
228
+ }
229
+ export function listNeonProjects(orgId, options = {}) {
230
+ const output = runNeonctl(['project', 'list', '--org-id', orgId], { ...options, output: 'json' });
231
+ return parseNeonProjects(output);
232
+ }
233
+ export function listNeonBranches(projectId, options = {}) {
234
+ const output = runNeonctl(['branches', 'list', '--project-id', projectId], { ...options, output: 'json' });
235
+ return parseNeonBranches(output);
236
+ }
237
+ export function listNeonDatabases(projectId, branch, options = {}) {
238
+ const args = ['database', 'list', '--project-id', projectId];
239
+ if (branch)
240
+ args.push('--branch', branch);
241
+ const output = runNeonctl(args, { ...options, output: 'json' });
242
+ return parseNeonNamedItems(output);
243
+ }
244
+ export function listNeonRoles(projectId, branch, options = {}) {
245
+ const args = ['role', 'list', '--project-id', projectId];
246
+ if (branch)
247
+ args.push('--branch', branch);
248
+ const output = runNeonctl(args, { ...options, output: 'json' });
249
+ return parseNeonNamedItems(output);
250
+ }
251
+ export function upsertEnvValue(filePath, key, value, headerComment) {
252
+ if (!existsSync(filePath)) {
253
+ const freshContent = [headerComment, '', `${key}=${value}`, ''].join('\n');
254
+ writeFileSync(filePath, freshContent, 'utf-8');
255
+ chmodSync(filePath, 0o600);
256
+ return;
257
+ }
258
+ const lines = readFileSync(filePath, 'utf-8').split(/\r?\n/);
259
+ const updatedLines = [];
260
+ let replaced = false;
261
+ for (const line of lines) {
262
+ if (line.trimStart().startsWith(`${key}=`)) {
263
+ if (!replaced) {
264
+ updatedLines.push(`${key}=${value}`);
265
+ replaced = true;
266
+ }
267
+ continue;
268
+ }
269
+ updatedLines.push(line);
270
+ }
271
+ if (!replaced) {
272
+ while (updatedLines.length > 0 && updatedLines[updatedLines.length - 1] === '') {
273
+ updatedLines.pop();
274
+ }
275
+ if (updatedLines.length > 0)
276
+ updatedLines.push('');
277
+ updatedLines.push(`${key}=${value}`);
278
+ }
279
+ updatedLines.push('');
280
+ writeFileSync(filePath, updatedLines.join('\n'), 'utf-8');
281
+ chmodSync(filePath, 0o600);
282
+ }
283
+ export function removeEnvValue(filePath, key) {
284
+ if (!existsSync(filePath))
285
+ return;
286
+ const lines = readFileSync(filePath, 'utf-8').split(/\r?\n/);
287
+ const updatedLines = [];
288
+ let removed = false;
289
+ for (const line of lines) {
290
+ const trimmed = line.trim();
291
+ if (!trimmed || trimmed.startsWith('#')) {
292
+ updatedLines.push(line);
293
+ continue;
294
+ }
295
+ const eqIdx = line.indexOf('=');
296
+ if (eqIdx === -1) {
297
+ updatedLines.push(line);
298
+ continue;
299
+ }
300
+ const existingKey = line.slice(0, eqIdx).trim();
301
+ if (existingKey === key) {
302
+ removed = true;
303
+ continue;
304
+ }
305
+ updatedLines.push(line);
306
+ }
307
+ if (!removed)
308
+ return;
309
+ while (updatedLines.length > 1 && updatedLines[updatedLines.length - 1] === '' && updatedLines[updatedLines.length - 2] === '') {
310
+ updatedLines.pop();
311
+ }
312
+ if (updatedLines.length === 0 || updatedLines[updatedLines.length - 1] !== '') {
313
+ updatedLines.push('');
314
+ }
315
+ writeFileSync(filePath, updatedLines.join('\n'), 'utf-8');
316
+ chmodSync(filePath, 0o600);
317
+ }
318
+ export function writeProjectEnvValue(projectDir, fileName, key, value) {
319
+ const filePath = join(projectDir, fileName);
320
+ upsertEnvValue(filePath, key, value, fileName === '.env.development'
321
+ ? '# EdgeBase local development secrets'
322
+ : '# EdgeBase production secrets');
323
+ return filePath;
324
+ }
325
+ //# sourceMappingURL=neon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neon.js","sourceRoot":"","sources":["../../src/lib/neon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type ExecFileSyncOptionsWithStringEncoding } from 'node:child_process';
2
+ interface ResolvedToolCommand {
3
+ command: string;
4
+ argsPrefix: string[];
5
+ }
6
+ export declare function resolveTsxCommand(): ResolvedToolCommand;
7
+ export declare function execTsxSync(args: string[], options: ExecFileSyncOptionsWithStringEncoding): string;
8
+ export declare function buildBundleWithEsbuild(entryPoint: string, outfile: string, cwd: string): void;
9
+ export {};
10
+ //# sourceMappingURL=node-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-tools.d.ts","sourceRoot":"","sources":["../../src/lib/node-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,qCAAqC,EAAE,MAAM,oBAAoB,CAAC;AAO9F,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,wBAAgB,iBAAiB,IAAI,mBAAmB,CAOvD;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,qCAAqC,GAC7C,MAAM,CAOR;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,GACV,IAAI,CAYN"}
@@ -0,0 +1,32 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ import { createRequire } from 'node:module';
3
+ import { buildSync } from 'esbuild';
4
+ import { npxCommand } from './npx.js';
5
+ const require = createRequire(import.meta.url);
6
+ export function resolveTsxCommand() {
7
+ try {
8
+ const entry = require.resolve('tsx/cli');
9
+ return { command: process.execPath, argsPrefix: [entry] };
10
+ }
11
+ catch {
12
+ return { command: npxCommand(), argsPrefix: ['tsx'] };
13
+ }
14
+ }
15
+ export function execTsxSync(args, options) {
16
+ const resolved = resolveTsxCommand();
17
+ return execFileSync(resolved.command, [...resolved.argsPrefix, ...args], options);
18
+ }
19
+ export function buildBundleWithEsbuild(entryPoint, outfile, cwd) {
20
+ buildSync({
21
+ absWorkingDir: cwd,
22
+ entryPoints: [entryPoint],
23
+ outfile,
24
+ bundle: true,
25
+ format: 'esm',
26
+ platform: 'node',
27
+ target: 'esnext',
28
+ external: ['node:*'],
29
+ logLevel: 'silent',
30
+ });
31
+ }
32
+ //# sourceMappingURL=node-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-tools.js","sourceRoot":"","sources":["../../src/lib/node-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA8C,MAAM,oBAAoB,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAO/C,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IACxD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,IAAc,EACd,OAA8C;IAE9C,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IACrC,OAAO,YAAY,CACjB,QAAQ,CAAC,OAAO,EAChB,CAAC,GAAG,QAAQ,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,EACjC,OAAO,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,UAAkB,EAClB,OAAe,EACf,GAAW;IAEX,SAAS,CAAC;QACR,aAAa,EAAE,GAAG;QAClB,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,OAAO;QACP,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,CAAC,QAAQ,CAAC;QACpB,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Cross-platform npm command resolution.
3
+ *
4
+ * On Windows, invoking `npm` without a shell fails because the executable is
5
+ * exposed through `npm.cmd`. This helper mirrors the existing `npx` helper.
6
+ */
7
+ export declare function npmCommand(): string;
8
+ //# sourceMappingURL=npm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm.d.ts","sourceRoot":"","sources":["../../src/lib/npm.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Cross-platform npm command resolution.
3
+ *
4
+ * On Windows, invoking `npm` without a shell fails because the executable is
5
+ * exposed through `npm.cmd`. This helper mirrors the existing `npx` helper.
6
+ */
7
+ export function npmCommand() {
8
+ return process.platform === 'win32' ? 'npm.cmd' : 'npm';
9
+ }
10
+ //# sourceMappingURL=npm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm.js","sourceRoot":"","sources":["../../src/lib/npm.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Cross-platform npx command resolution.
3
+ *
4
+ * On Windows, `spawn('npx', [...])` without `shell: true` fails because
5
+ * Node.js cannot resolve `npx` (a `.cmd` shim). This helper returns
6
+ * the correct executable name for the current platform.
7
+ */
8
+ export declare function npxCommand(): string;
9
+ //# sourceMappingURL=npx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npx.d.ts","sourceRoot":"","sources":["../../src/lib/npx.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Cross-platform npx command resolution.
3
+ *
4
+ * On Windows, `spawn('npx', [...])` without `shell: true` fails because
5
+ * Node.js cannot resolve `npx` (a `.cmd` shim). This helper returns
6
+ * the correct executable name for the current platform.
7
+ */
8
+ export function npxCommand() {
9
+ return process.platform === 'win32' ? 'npx.cmd' : 'npx';
10
+ }
11
+ //# sourceMappingURL=npx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npx.js","sourceRoot":"","sources":["../../src/lib/npx.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { type WranglerResourceConfig } from './cloudflare-wrangler-resources.js';
2
+ export interface ManagedD1BindingDescriptor {
3
+ binding: string;
4
+ resourceName: string;
5
+ kind: 'internal' | 'database';
6
+ namespace?: string;
7
+ }
8
+ export interface LocalDevBinding {
9
+ type: 'd1_database';
10
+ name: string;
11
+ binding: string;
12
+ id: string;
13
+ }
14
+ export interface ProjectWranglerContext {
15
+ path: string | null;
16
+ dir: string;
17
+ config: WranglerResourceConfig | null;
18
+ }
19
+ export declare const INTERNAL_D1_BINDINGS: readonly [{
20
+ readonly name: "auth";
21
+ readonly binding: "AUTH_DB";
22
+ }, {
23
+ readonly name: "control";
24
+ readonly binding: "CONTROL_DB";
25
+ }];
26
+ export declare function deriveProjectSlug(projectDir: string): string;
27
+ export declare function resolveProjectWranglerPath(projectDir: string): string | null;
28
+ export declare function readProjectWranglerContext(projectDir: string): ProjectWranglerContext;
29
+ export declare function resolveProjectWorkerName(projectDir: string, options?: {
30
+ fallbackToProjectSlug?: boolean;
31
+ }): string;
32
+ export declare function resolveProjectWorkerUrl(projectDir: string, options?: {
33
+ fallbackToProjectSlug?: boolean;
34
+ }): string;
35
+ export declare function resolveManagedD1BindingDescriptors(config?: Record<string, unknown>): ManagedD1BindingDescriptor[];
36
+ export declare function resolveLocalDevBindings(config?: Record<string, unknown>): LocalDevBinding[];
37
+ export declare function resolveManagedD1DatabaseName(projectDir: string, binding: string, config?: Record<string, unknown>): string | null;
38
+ //# sourceMappingURL=project-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-runtime.d.ts","sourceRoot":"","sources":["../../src/lib/project-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,EAA+B,KAAK,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAY9G,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAC;CACvC;AAED,eAAO,MAAM,oBAAoB;;;;;;EAGvB,CAAC;AAEX,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAgB5D;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS5E;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,sBAAsB,CAerF;AAED,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5C,MAAM,CAIR;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5C,MAAM,CAGR;AAED,wBAAgB,kCAAkC,CAChD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,0BAA0B,EAAE,CA2B9B;AAED,wBAAgB,uBAAuB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,EAAE,CAO3F;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,GAAG,IAAI,CAYf"}
@@ -0,0 +1,122 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { dirname, join, resolve } from 'node:path';
3
+ import { parseWranglerResourceConfig } from './cloudflare-wrangler-resources.js';
4
+ import { extractDatabases } from './deploy-shared.js';
5
+ import { buildManagedD1DatabaseName } from './managed-resource-names.js';
6
+ const GENERIC_PROJECT_DIR_NAMES = new Set(['edgebase', 'server', 'backend', 'api', 'worker']);
7
+ export const INTERNAL_D1_BINDINGS = [
8
+ { name: 'auth', binding: 'AUTH_DB' },
9
+ { name: 'control', binding: 'CONTROL_DB' },
10
+ ];
11
+ export function deriveProjectSlug(projectDir) {
12
+ const normalizedProjectName = sanitizeNameSegment(resolve(projectDir).split(/[\\/]/).pop() ?? '');
13
+ if (!normalizedProjectName)
14
+ return 'edgebase';
15
+ if (!GENERIC_PROJECT_DIR_NAMES.has(normalizedProjectName)) {
16
+ return normalizedProjectName;
17
+ }
18
+ const normalizedParentName = sanitizeNameSegment(resolve(projectDir, '..').split(/[\\/]/).pop() ?? '');
19
+ if (normalizedParentName && normalizedParentName !== normalizedProjectName) {
20
+ return `${normalizedParentName}-${normalizedProjectName}`;
21
+ }
22
+ return normalizedProjectName;
23
+ }
24
+ export function resolveProjectWranglerPath(projectDir) {
25
+ const normalizedProjectDir = resolve(projectDir);
26
+ const directPath = join(normalizedProjectDir, 'wrangler.toml');
27
+ if (existsSync(directPath))
28
+ return directPath;
29
+ const monorepoServerPath = join(normalizedProjectDir, 'packages', 'server', 'wrangler.toml');
30
+ if (existsSync(monorepoServerPath))
31
+ return monorepoServerPath;
32
+ return null;
33
+ }
34
+ export function readProjectWranglerContext(projectDir) {
35
+ const wranglerPath = resolveProjectWranglerPath(projectDir);
36
+ if (!wranglerPath) {
37
+ return {
38
+ path: null,
39
+ dir: resolve(projectDir),
40
+ config: null,
41
+ };
42
+ }
43
+ return {
44
+ path: wranglerPath,
45
+ dir: dirname(wranglerPath),
46
+ config: parseWranglerResourceConfig(readFileSync(wranglerPath, 'utf-8')),
47
+ };
48
+ }
49
+ export function resolveProjectWorkerName(projectDir, options) {
50
+ const { config } = readProjectWranglerContext(projectDir);
51
+ if (config?.workerName)
52
+ return config.workerName;
53
+ return options?.fallbackToProjectSlug ? deriveProjectSlug(projectDir) : '';
54
+ }
55
+ export function resolveProjectWorkerUrl(projectDir, options) {
56
+ const workerName = resolveProjectWorkerName(projectDir, options);
57
+ return workerName ? `https://${workerName}.workers.dev` : '';
58
+ }
59
+ export function resolveManagedD1BindingDescriptors(config) {
60
+ const descriptors = INTERNAL_D1_BINDINGS.map(({ name, binding }) => ({
61
+ binding,
62
+ resourceName: name,
63
+ kind: 'internal',
64
+ }));
65
+ const databases = extractDatabases(config ?? {});
66
+ if (!databases)
67
+ return descriptors;
68
+ for (const [namespace, dbBlock] of Object.entries(databases)) {
69
+ const meta = dbBlock;
70
+ if (!meta)
71
+ continue;
72
+ const provider = meta.provider;
73
+ if (provider === 'neon' || provider === 'postgres' || provider === 'do')
74
+ continue;
75
+ if (provider !== 'd1' && isDynamicManagedDbBlock(meta))
76
+ continue;
77
+ descriptors.push({
78
+ binding: `DB_D1_${namespace.toUpperCase()}`,
79
+ resourceName: `db-${namespace}`,
80
+ kind: 'database',
81
+ namespace,
82
+ });
83
+ }
84
+ return descriptors;
85
+ }
86
+ export function resolveLocalDevBindings(config) {
87
+ return resolveManagedD1BindingDescriptors(config).map((descriptor) => ({
88
+ type: 'd1_database',
89
+ name: descriptor.resourceName,
90
+ binding: descriptor.binding,
91
+ id: 'local',
92
+ }));
93
+ }
94
+ export function resolveManagedD1DatabaseName(projectDir, binding, config) {
95
+ const { config: wranglerConfig } = readProjectWranglerContext(projectDir);
96
+ const configuredDatabase = wranglerConfig?.d1Databases.find((database) => database.binding === binding);
97
+ if (configuredDatabase?.databaseName) {
98
+ return configuredDatabase.databaseName;
99
+ }
100
+ const descriptor = resolveManagedD1BindingDescriptors(config).find((entry) => entry.binding === binding);
101
+ if (!descriptor)
102
+ return null;
103
+ const workerName = wranglerConfig?.workerName || deriveProjectSlug(projectDir);
104
+ return buildManagedD1DatabaseName(workerName, descriptor.resourceName);
105
+ }
106
+ function isDynamicManagedDbBlock(dbBlock) {
107
+ if (dbBlock.instance)
108
+ return true;
109
+ if (dbBlock.access && typeof dbBlock.access === 'object')
110
+ return true;
111
+ return false;
112
+ }
113
+ function sanitizeNameSegment(value) {
114
+ const normalized = value
115
+ .toLowerCase()
116
+ .replace(/[^a-z0-9]+/g, '-')
117
+ .replace(/^-+|-+$/g, '');
118
+ if (!normalized)
119
+ return '';
120
+ return /^[a-z]/.test(normalized) ? normalized : `edgebase-${normalized}`;
121
+ }
122
+ //# sourceMappingURL=project-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-runtime.js","sourceRoot":"","sources":["../../src/lib/project-runtime.ts"],"names":[],"mappings":"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"}