@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,17 @@
1
+ export { deriveProjectSlug, INTERNAL_D1_BINDINGS } from './project-runtime.js';
2
+ export declare function getRuntimeRoot(projectDir: string): string;
3
+ export declare function getRuntimeServerSrcDir(projectDir: string): string;
4
+ export declare function getRuntimeAdminBuildDir(projectDir: string): string;
5
+ export declare function ensureRuntimeScaffold(projectDir: string): void;
6
+ export declare function ensureLocalWranglerToml(projectDir: string): string;
7
+ export declare function buildDefaultWranglerToml(accountId?: string, projectName?: string): string;
8
+ export declare function resolveWranglerCommand(): {
9
+ command: string;
10
+ argsPrefix: string[];
11
+ };
12
+ export declare function ensureProjectSharedPackageLink(projectDir: string): void;
13
+ export declare function resolveRuntimeNodeModulesSourceFromCandidates(candidates: string[]): string | null;
14
+ export declare function resolveSharedPackageSourceFromCandidates(candidates: string[]): string | null;
15
+ export declare function resolveSharedPackageLinkRoots(projectDir: string): string[];
16
+ export declare function writeRuntimeConfigShim(projectDir: string, injectedEnv?: Record<string, string>): void;
17
+ //# sourceMappingURL=runtime-scaffold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-scaffold.d.ts","sourceRoot":"","sources":["../../src/lib/runtime-scaffold.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAY9D;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAUlE;AAED,wBAAgB,wBAAwB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,SAAa,GAAG,MAAM,CAiD7F;AAED,wBAAgB,sBAAsB,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAElF;AA8ED,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAOvE;AAMD,wBAAgB,6CAA6C,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAQjG;AAMD,wBAAgB,wCAAwC,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAQ5F;AAyBD,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAO1E;AA6ID,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,IAAI,CAON"}
@@ -0,0 +1,366 @@
1
+ import { cpSync, existsSync, lstatSync, mkdirSync, readFileSync, readlinkSync, rmSync, unlinkSync, symlinkSync, writeFileSync, } from 'node:fs';
2
+ import { basename, dirname, join, resolve } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { buildManagedD1DatabaseName } from './managed-resource-names.js';
5
+ import { deriveProjectSlug, INTERNAL_D1_BINDINGS } from './project-runtime.js';
6
+ import { resolveWranglerTool } from './wrangler.js';
7
+ const __dirname = dirname(fileURLToPath(import.meta.url));
8
+ const WORKSPACE_ROOT = resolve(__dirname, '../../../..');
9
+ const MONOREPO_SERVER_RUNTIME_SOURCE = resolve(__dirname, '../../../server/src');
10
+ const MONOREPO_ADMIN_BUILD_SOURCES = [
11
+ resolve(__dirname, '../../../admin/build'),
12
+ resolve(__dirname, '../../../server/admin-build'),
13
+ ];
14
+ const CLI_NODE_MODULES_SOURCE = resolve(__dirname, '../../node_modules');
15
+ const WORKSPACE_NODE_MODULES_SOURCE = resolve(WORKSPACE_ROOT, 'node_modules');
16
+ const SERVER_NODE_MODULES_SOURCE = resolve(__dirname, '../../../server/node_modules');
17
+ const MONOREPO_SHARED_SOURCE = resolve(__dirname, '../../../shared');
18
+ export { deriveProjectSlug, INTERNAL_D1_BINDINGS } from './project-runtime.js';
19
+ export function getRuntimeRoot(projectDir) {
20
+ return join(projectDir, '.edgebase', 'runtime', 'server');
21
+ }
22
+ export function getRuntimeServerSrcDir(projectDir) {
23
+ return join(getRuntimeRoot(projectDir), 'src');
24
+ }
25
+ export function getRuntimeAdminBuildDir(projectDir) {
26
+ return join(getRuntimeRoot(projectDir), 'admin-build');
27
+ }
28
+ export function ensureRuntimeScaffold(projectDir) {
29
+ const runtimeRoot = getRuntimeRoot(projectDir);
30
+ mkdirSync(runtimeRoot, { recursive: true });
31
+ copyRuntimeDir(resolveServerRuntimeSource(projectDir), getRuntimeServerSrcDir(projectDir));
32
+ const adminBuildDir = getRuntimeAdminBuildDir(projectDir);
33
+ copyRuntimeDir(resolveAdminBuildSource(projectDir), adminBuildDir);
34
+ normalizeAdminBuildBase(adminBuildDir);
35
+ ensureRuntimeNodeModulesLink(projectDir, runtimeRoot);
36
+ ensureProjectSharedPackageLink(projectDir);
37
+ writeRuntimeConfigShim(projectDir);
38
+ writeRuntimeTestConfigShim(projectDir);
39
+ }
40
+ export function ensureLocalWranglerToml(projectDir) {
41
+ const wranglerPath = join(projectDir, 'wrangler.toml');
42
+ if (existsSync(wranglerPath))
43
+ return wranglerPath;
44
+ writeFileSync(wranglerPath, buildDefaultWranglerToml(undefined, deriveProjectSlug(projectDir)), 'utf-8');
45
+ return wranglerPath;
46
+ }
47
+ export function buildDefaultWranglerToml(accountId, projectName = 'edgebase') {
48
+ const accountLine = accountId ? `account_id = "${accountId}"\n` : '';
49
+ const internalD1Blocks = INTERNAL_D1_BINDINGS.map(({ name, binding }) => `[[d1_databases]]
50
+ binding = "${binding}"
51
+ database_name = "${buildManagedD1DatabaseName(projectName, name)}"
52
+ database_id = "local"
53
+ `).join('\n');
54
+ return `# Auto-generated by edgebase
55
+ name = "${projectName}"
56
+ ${accountLine}main = ".edgebase/runtime/server/src/index.ts"
57
+ compatibility_date = "2025-02-10"
58
+ compatibility_flags = ["nodejs_compat"]
59
+
60
+ [durable_objects]
61
+ bindings = [
62
+ { name = "DATABASE", class_name = "DatabaseDO" },
63
+ { name = "AUTH", class_name = "AuthDO" },
64
+ { name = "DATABASE_LIVE", class_name = "DatabaseLiveDO" },
65
+ { name = "ROOMS", class_name = "RoomsDO" },
66
+ { name = "LOGS", class_name = "LogsDO" },
67
+ ]
68
+
69
+ [[migrations]]
70
+ tag = "v1"
71
+ new_sqlite_classes = ["DatabaseDO", "AuthDO"]
72
+ new_classes = ["DatabaseLiveDO", "RoomsDO"]
73
+
74
+ [[migrations]]
75
+ tag = "v2"
76
+ new_sqlite_classes = ["LogsDO"]
77
+
78
+ [[r2_buckets]]
79
+ binding = "STORAGE"
80
+ bucket_name = "${projectName}-storage"
81
+
82
+ [[kv_namespaces]]
83
+ binding = "KV"
84
+ id = "local"
85
+
86
+ ${internalD1Blocks}
87
+
88
+ [assets]
89
+ directory = ".edgebase/runtime/server/admin-build"
90
+ binding = "ASSETS"
91
+ run_worker_first = true
92
+ `;
93
+ }
94
+ export function resolveWranglerCommand() {
95
+ return resolveWranglerTool(process.cwd());
96
+ }
97
+ function copyRuntimeDir(source, target) {
98
+ if (!existsSync(source)) {
99
+ throw new Error(`Runtime scaffold source is missing: ${source}`);
100
+ }
101
+ mkdirSync(target, { recursive: true });
102
+ cpSync(source, target, {
103
+ recursive: true,
104
+ force: true,
105
+ filter: (sourcePath) => basename(sourcePath) !== '_functions-registry.ts',
106
+ });
107
+ }
108
+ function resolveServerRuntimeSource(projectDir) {
109
+ const candidates = dedupeCandidates([
110
+ join(projectDir, 'node_modules', '@edge-base', 'server', 'src'),
111
+ resolve(CLI_NODE_MODULES_SOURCE, '@edge-base/server', 'src'),
112
+ resolve(WORKSPACE_NODE_MODULES_SOURCE, '@edge-base/server', 'src'),
113
+ MONOREPO_SERVER_RUNTIME_SOURCE,
114
+ ]);
115
+ for (const candidate of candidates) {
116
+ if (existsSync(join(candidate, 'index.ts'))) {
117
+ return candidate;
118
+ }
119
+ }
120
+ throw new Error(`Runtime scaffold source is missing. Checked: ${candidates.join(', ')}`);
121
+ }
122
+ function resolveAdminBuildSource(projectDir) {
123
+ const candidates = dedupeCandidates([
124
+ join(projectDir, 'node_modules', '@edge-base', 'server', 'admin-build'),
125
+ resolve(CLI_NODE_MODULES_SOURCE, '@edge-base/server', 'admin-build'),
126
+ resolve(WORKSPACE_NODE_MODULES_SOURCE, '@edge-base/server', 'admin-build'),
127
+ ...MONOREPO_ADMIN_BUILD_SOURCES,
128
+ ]);
129
+ for (const candidate of candidates) {
130
+ if (existsSync(join(candidate, 'index.html'))) {
131
+ return candidate;
132
+ }
133
+ }
134
+ throw new Error(`Admin build source is missing. Checked: ${candidates.join(', ')}`);
135
+ }
136
+ function normalizeAdminBuildBase(adminBuildDir) {
137
+ const indexPath = join(adminBuildDir, 'index.html');
138
+ if (!existsSync(indexPath))
139
+ return;
140
+ const content = readFileSync(indexPath, 'utf-8');
141
+ const normalized = content
142
+ .replace(/href="\/favicon\.svg"/g, 'href="/admin/favicon.svg"')
143
+ .replace(/href="\/_app\//g, 'href="/admin/_app/')
144
+ .replace(/import\("\/_app\//g, 'import("/admin/_app/')
145
+ .replace(/base:\s*""/g, 'base: "/admin"');
146
+ if (normalized !== content) {
147
+ writeFileSync(indexPath, normalized, 'utf-8');
148
+ }
149
+ }
150
+ function ensureRuntimeNodeModulesLink(projectDir, runtimeRoot) {
151
+ const source = resolveRuntimeNodeModulesSource(projectDir);
152
+ if (!source)
153
+ return;
154
+ const target = join(runtimeRoot, 'node_modules');
155
+ const currentLink = readExistingSymlinkTarget(target);
156
+ if (currentLink === source)
157
+ return;
158
+ if (currentLink !== null || existsSync(target)) {
159
+ rmSync(target, { recursive: true, force: true });
160
+ }
161
+ symlinkSync(source, target, process.platform === 'win32' ? 'junction' : 'dir');
162
+ }
163
+ export function ensureProjectSharedPackageLink(projectDir) {
164
+ const source = resolveSharedPackageSource(projectDir);
165
+ if (!source)
166
+ return;
167
+ for (const root of resolveSharedPackageLinkRoots(projectDir)) {
168
+ ensureSharedPackageLinkAtRoot(root, source);
169
+ }
170
+ }
171
+ function resolveRuntimeNodeModulesSource(projectDir) {
172
+ return resolveRuntimeNodeModulesSourceFromCandidates(getRuntimeNodeModulesCandidates(projectDir));
173
+ }
174
+ export function resolveRuntimeNodeModulesSourceFromCandidates(candidates) {
175
+ for (const candidate of candidates) {
176
+ if (existsSync(candidate)) {
177
+ return candidate;
178
+ }
179
+ }
180
+ return null;
181
+ }
182
+ function resolveSharedPackageSource(projectDir) {
183
+ return resolveSharedPackageSourceFromCandidates(getSharedPackageSourceCandidates(projectDir));
184
+ }
185
+ export function resolveSharedPackageSourceFromCandidates(candidates) {
186
+ for (const candidate of candidates) {
187
+ if (existsSync(join(candidate, 'src', 'index.ts'))) {
188
+ return candidate;
189
+ }
190
+ }
191
+ return null;
192
+ }
193
+ function getRuntimeNodeModulesCandidates(projectDir) {
194
+ return dedupeCandidates([
195
+ SERVER_NODE_MODULES_SOURCE,
196
+ CLI_NODE_MODULES_SOURCE,
197
+ WORKSPACE_NODE_MODULES_SOURCE,
198
+ join(projectDir, 'node_modules'),
199
+ ]);
200
+ }
201
+ function getSharedPackageSourceCandidates(projectDir) {
202
+ return dedupeCandidates([
203
+ join(projectDir, 'node_modules', '@edge-base', 'shared'),
204
+ resolve(CLI_NODE_MODULES_SOURCE, '@edge-base/shared'),
205
+ resolve(WORKSPACE_NODE_MODULES_SOURCE, '@edge-base/shared'),
206
+ resolve(SERVER_NODE_MODULES_SOURCE, '@edge-base/shared'),
207
+ MONOREPO_SHARED_SOURCE,
208
+ ]);
209
+ }
210
+ function dedupeCandidates(candidates) {
211
+ return Array.from(new Set(candidates));
212
+ }
213
+ export function resolveSharedPackageLinkRoots(projectDir) {
214
+ const roots = new Set([projectDir]);
215
+ const workspaceRoot = findWorkspaceRoot(projectDir);
216
+ if (workspaceRoot) {
217
+ roots.add(workspaceRoot);
218
+ }
219
+ return Array.from(roots);
220
+ }
221
+ function ensureSharedPackageLinkAtRoot(rootDir, source) {
222
+ const target = join(rootDir, 'node_modules', '@edge-base', 'shared');
223
+ const markerPath = join(target, '.edgebase-shim');
224
+ const normalizedSource = resolve(source);
225
+ const normalizedTarget = resolve(target);
226
+ if (existsSync(target)) {
227
+ if (normalizedSource === normalizedTarget) {
228
+ return;
229
+ }
230
+ try {
231
+ const stat = lstatSync(target);
232
+ if (stat.isSymbolicLink()) {
233
+ unlinkSync(target);
234
+ }
235
+ else if (!existsSync(markerPath)) {
236
+ return;
237
+ }
238
+ }
239
+ catch {
240
+ return;
241
+ }
242
+ }
243
+ mkdirSync(target, { recursive: true });
244
+ writeFileSync(join(target, 'package.json'), buildSharedShimPackageJson(), 'utf-8');
245
+ writeFileSync(markerPath, 'edgebase-shared-shim\n', 'utf-8');
246
+ ensureDirectorySymlink(join(source, 'src'), join(target, 'src'));
247
+ }
248
+ function findWorkspaceRoot(startDir) {
249
+ let currentDir = resolve(startDir);
250
+ while (true) {
251
+ if (existsSync(join(currentDir, 'pnpm-workspace.yaml')) || existsSync(join(currentDir, '.git'))) {
252
+ return currentDir;
253
+ }
254
+ const parentDir = dirname(currentDir);
255
+ if (parentDir === currentDir) {
256
+ return null;
257
+ }
258
+ currentDir = parentDir;
259
+ }
260
+ }
261
+ function ensureDirectorySymlink(source, target) {
262
+ const normalizedSource = resolve(source);
263
+ const currentLink = readExistingSymlinkTarget(target);
264
+ if (currentLink === normalizedSource)
265
+ return;
266
+ if (currentLink !== null) {
267
+ unlinkSync(target);
268
+ }
269
+ else if (existsSync(target)) {
270
+ rmSync(target, { recursive: true, force: true });
271
+ }
272
+ try {
273
+ symlinkSync(normalizedSource, target, process.platform === 'win32' ? 'junction' : 'dir');
274
+ }
275
+ catch (error) {
276
+ if (error.code !== 'EEXIST') {
277
+ throw error;
278
+ }
279
+ const retryLink = readExistingSymlinkTarget(target);
280
+ if (retryLink === normalizedSource) {
281
+ return;
282
+ }
283
+ if (retryLink !== null) {
284
+ unlinkSync(target);
285
+ }
286
+ else {
287
+ rmSync(target, { recursive: true, force: true });
288
+ }
289
+ symlinkSync(normalizedSource, target, process.platform === 'win32' ? 'junction' : 'dir');
290
+ }
291
+ }
292
+ function readExistingSymlinkTarget(target) {
293
+ try {
294
+ if (!lstatSync(target).isSymbolicLink()) {
295
+ return null;
296
+ }
297
+ return resolve(dirname(target), readlinkSync(target));
298
+ }
299
+ catch {
300
+ return null;
301
+ }
302
+ }
303
+ function buildSharedShimPackageJson() {
304
+ return `${JSON.stringify({
305
+ name: '@edge-base/shared',
306
+ private: true,
307
+ type: 'module',
308
+ main: './src/index.ts',
309
+ types: './src/index.ts',
310
+ exports: {
311
+ '.': {
312
+ types: './src/index.ts',
313
+ import: './src/index.ts',
314
+ default: './src/index.ts',
315
+ require: './src/index.ts',
316
+ },
317
+ },
318
+ }, null, 2)}\n`;
319
+ }
320
+ function buildRuntimeConfigShimContents(injectedEnv) {
321
+ const normalizedEnv = Object.fromEntries(Object.entries(injectedEnv ?? {}).filter(([, value]) => typeof value === 'string'));
322
+ if (Object.keys(normalizedEnv).length === 0) {
323
+ return `// Auto-generated by edgebase CLI. Re-export the user project config with a static path so Wrangler can bundle it.
324
+ import config from '../../../../edgebase.config.ts';
325
+
326
+ export default config;
327
+ `;
328
+ }
329
+ return `// Auto-generated by edgebase CLI. Inject local config env before evaluating the user project config.
330
+ const injectedEnv = ${JSON.stringify(normalizedEnv, null, 2)} as Record<string, string>;
331
+
332
+ if (typeof process !== 'undefined' && process?.env) {
333
+ for (const [key, value] of Object.entries(injectedEnv)) {
334
+ if (typeof value === 'string' && process.env[key] === undefined) {
335
+ process.env[key] = value;
336
+ }
337
+ }
338
+ }
339
+
340
+ const mod = await import('../../../../edgebase.config.ts');
341
+ const config = (mod as { default?: unknown }).default ?? mod;
342
+
343
+ export default config;
344
+ `;
345
+ }
346
+ export function writeRuntimeConfigShim(projectDir, injectedEnv) {
347
+ const shimPath = join(getRuntimeServerSrcDir(projectDir), 'generated-config.ts');
348
+ writeFileSync(shimPath, buildRuntimeConfigShimContents(injectedEnv), 'utf-8');
349
+ }
350
+ function writeRuntimeTestConfigShim(projectDir) {
351
+ const shimPath = join(getRuntimeRoot(projectDir), 'edgebase.test.config.ts');
352
+ const tsConfigPath = join(projectDir, 'edgebase.test.config.ts');
353
+ const jsConfigPath = join(projectDir, 'edgebase.test.config.js');
354
+ const importPath = existsSync(tsConfigPath)
355
+ ? '../../../edgebase.test.config.ts'
356
+ : existsSync(jsConfigPath)
357
+ ? '../../../edgebase.test.config.js'
358
+ : './src/generated-config.ts';
359
+ writeFileSync(shimPath, `// Auto-generated by edgebase CLI. Keep the runtime test-config import resolvable in scaffolded dev environments.
360
+ // If the project does not define a dedicated test config, fall back to the generated runtime config shim.
361
+ import config from '${importPath}';
362
+
363
+ export default config;
364
+ `, 'utf-8');
365
+ }
366
+ //# sourceMappingURL=runtime-scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-scaffold.js","sourceRoot":"","sources":["../../src/lib/runtime-scaffold.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Schema Destructive Change Detection — Build-time snapshot diff.
3
+ *
4
+ * Compares the current config schema against a saved snapshot to detect
5
+ * destructive changes (column delete, rename, type change) and forces
6
+ * the developer to choose: DB reset or migration.
7
+ */
8
+ import type { SchemaField } from '@edge-base/shared';
9
+ export interface SnapshotTableEntry {
10
+ schema: Record<string, Pick<SchemaField, 'type' | 'primaryKey'>>;
11
+ latestMigrationVersion: number;
12
+ }
13
+ export interface SchemaSnapshot {
14
+ version: 1 | 2;
15
+ databases: Record<string, {
16
+ tables: Record<string, SnapshotTableEntry>;
17
+ provider?: string;
18
+ }>;
19
+ authProvider?: string;
20
+ }
21
+ export interface DestructiveChange {
22
+ dbKey: string;
23
+ table: string;
24
+ type: 'column_deleted' | 'column_type_changed' | 'table_deleted';
25
+ detail: string;
26
+ }
27
+ /** Minimal shape of a DB block needed for snapshot building. */
28
+ export interface DbBlockLike {
29
+ tables?: Record<string, {
30
+ schema?: Record<string, unknown>;
31
+ migrations?: Array<{
32
+ version: number;
33
+ }>;
34
+ }>;
35
+ provider?: string;
36
+ }
37
+ /**
38
+ * Build a full snapshot from the current config's databases block.
39
+ */
40
+ export declare function buildSnapshot(databases: Record<string, DbBlockLike>, authProvider?: string): SchemaSnapshot;
41
+ export declare function getSnapshotPath(projectDir: string): string;
42
+ export declare function loadSnapshot(projectDir: string): SchemaSnapshot | null;
43
+ export declare function saveSnapshot(projectDir: string, snapshot: SchemaSnapshot): void;
44
+ export interface ProviderChange {
45
+ namespace: string;
46
+ oldProvider: string;
47
+ newProvider: string;
48
+ }
49
+ /**
50
+ * Detect provider changes between snapshots.
51
+ * Returns list of namespaces whose provider changed.
52
+ */
53
+ export declare function detectProviderChanges(saved: SchemaSnapshot, current: SchemaSnapshot): ProviderChange[];
54
+ /**
55
+ * Detect auth provider change between snapshots.
56
+ * Returns a ProviderChange for namespace '_auth' if auth.provider changed.
57
+ */
58
+ export declare function detectAuthProviderChange(saved: SchemaSnapshot, current: SchemaSnapshot): ProviderChange | null;
59
+ /**
60
+ * Compare saved snapshot against current config and return destructive changes.
61
+ */
62
+ export declare function detectDestructiveChanges(saved: SchemaSnapshot, current: SchemaSnapshot): DestructiveChange[];
63
+ /**
64
+ * Filter out destructive changes for tables that have new migrations covering them.
65
+ */
66
+ export declare function filterAutoPassChanges(changes: DestructiveChange[], saved: SchemaSnapshot, current: SchemaSnapshot): DestructiveChange[];
67
+ export interface HandleResult {
68
+ action: 'reset' | 'migration_guide' | 'auto_pass';
69
+ }
70
+ /**
71
+ * Display destructive changes and prompt for action.
72
+ * Returns the user's choice.
73
+ */
74
+ export declare function handleDestructiveChanges(changes: DestructiveChange[], isRelease: boolean, isTTY: boolean, ifDestructiveFlag?: string): Promise<HandleResult>;
75
+ /**
76
+ * Reset local Miniflare DO state for dev mode.
77
+ */
78
+ export declare function resetLocalDoState(projectDir: string, persistTo?: string): void;
79
+ //# sourceMappingURL=schema-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-check.d.ts","sourceRoot":"","sources":["../../src/lib/schema-check.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC;IACjE,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;QACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,gBAAgB,GAAG,qBAAqB,GAAG,eAAe,CAAC;IACjE,MAAM,EAAE,MAAM,CAAC;CAChB;AA2CD,gEAAgE;AAChE,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,UAAU,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACzC,CAAC,CAAC;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,cAAc,CAsB3G;AAMD,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAStE;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAG/E;AAID,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,cAAc,GACtB,cAAc,EAAE,CAgBlB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,cAAc,GACtB,cAAc,GAAG,IAAI,CAQvB;AAID;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,cAAc,GACtB,iBAAiB,EAAE,CA4DrB;AAID;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,iBAAiB,EAAE,EAC5B,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,cAAc,GACtB,iBAAiB,EAAE,CAgBrB;AAID,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,OAAO,GAAG,iBAAiB,GAAG,WAAW,CAAC;CACnD;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,iBAAiB,EAAE,EAC5B,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,OAAO,EACd,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,YAAY,CAAC,CAuFvB;AAgDD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAU9E"}