@byline/cli 4.8.0 → 4.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/README.md +56 -15
  2. package/dist/cli.js +16 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/doctor.d.ts +8 -0
  5. package/dist/commands/doctor.d.ts.map +1 -1
  6. package/dist/commands/doctor.js +8 -5
  7. package/dist/commands/doctor.js.map +1 -1
  8. package/dist/commands/init.d.ts +2 -1
  9. package/dist/commands/init.d.ts.map +1 -1
  10. package/dist/commands/init.js.map +1 -1
  11. package/dist/commands/setup-checks.d.ts +2 -0
  12. package/dist/commands/setup-checks.d.ts.map +1 -1
  13. package/dist/commands/setup-checks.js +14 -6
  14. package/dist/commands/setup-checks.js.map +1 -1
  15. package/dist/commands/setup-flow.test.d.ts +2 -0
  16. package/dist/commands/setup-flow.test.d.ts.map +1 -0
  17. package/dist/commands/setup-flow.test.js +230 -0
  18. package/dist/commands/setup-flow.test.js.map +1 -0
  19. package/dist/commands/setup.d.ts +30 -1
  20. package/dist/commands/setup.d.ts.map +1 -1
  21. package/dist/commands/setup.js +71 -35
  22. package/dist/commands/setup.js.map +1 -1
  23. package/dist/context.d.ts +4 -1
  24. package/dist/context.d.ts.map +1 -1
  25. package/dist/context.js +3 -0
  26. package/dist/context.js.map +1 -1
  27. package/dist/lib/baseline-drift.test.d.ts +2 -0
  28. package/dist/lib/baseline-drift.test.d.ts.map +1 -0
  29. package/dist/lib/baseline-drift.test.js +97 -0
  30. package/dist/lib/baseline-drift.test.js.map +1 -0
  31. package/dist/lib/baseline.d.ts +10 -0
  32. package/dist/lib/baseline.d.ts.map +1 -0
  33. package/dist/lib/baseline.js +12 -0
  34. package/dist/lib/baseline.js.map +1 -0
  35. package/dist/lib/database/adapters.d.ts +54 -0
  36. package/dist/lib/database/adapters.d.ts.map +1 -0
  37. package/dist/lib/database/adapters.js +83 -0
  38. package/dist/lib/database/adapters.js.map +1 -0
  39. package/dist/lib/database/adapters.test.d.ts +2 -0
  40. package/dist/lib/database/adapters.test.d.ts.map +1 -0
  41. package/dist/lib/database/adapters.test.js +36 -0
  42. package/dist/lib/database/adapters.test.js.map +1 -0
  43. package/dist/lib/database/dialect.d.ts +12 -0
  44. package/dist/lib/database/dialect.d.ts.map +1 -0
  45. package/dist/lib/database/dialect.js +53 -0
  46. package/dist/lib/database/dialect.js.map +1 -0
  47. package/dist/lib/database/dialect.test.d.ts +2 -0
  48. package/dist/lib/database/dialect.test.d.ts.map +1 -0
  49. package/dist/lib/database/dialect.test.js +58 -0
  50. package/dist/lib/database/dialect.test.js.map +1 -0
  51. package/dist/lib/database/mysql.d.ts +21 -0
  52. package/dist/lib/database/mysql.d.ts.map +1 -0
  53. package/dist/lib/database/mysql.js +152 -0
  54. package/dist/lib/database/mysql.js.map +1 -0
  55. package/dist/lib/database/mysql.test.d.ts +2 -0
  56. package/dist/lib/database/mysql.test.d.ts.map +1 -0
  57. package/dist/lib/database/mysql.test.js +45 -0
  58. package/dist/lib/database/mysql.test.js.map +1 -0
  59. package/dist/lib/database/postgres.d.ts +8 -0
  60. package/dist/lib/database/postgres.d.ts.map +1 -0
  61. package/dist/lib/database/postgres.js +142 -0
  62. package/dist/lib/database/postgres.js.map +1 -0
  63. package/dist/lib/database/postgres.test.d.ts +2 -0
  64. package/dist/lib/database/postgres.test.d.ts.map +1 -0
  65. package/dist/lib/database/postgres.test.js +14 -0
  66. package/dist/lib/database/postgres.test.js.map +1 -0
  67. package/dist/lib/database/provisioner.d.ts +35 -0
  68. package/dist/lib/database/provisioner.d.ts.map +1 -0
  69. package/dist/lib/database/provisioner.js +20 -0
  70. package/dist/lib/database/provisioner.js.map +1 -0
  71. package/dist/lib/database/provisioner.test.d.ts +2 -0
  72. package/dist/lib/database/provisioner.test.d.ts.map +1 -0
  73. package/dist/lib/database/provisioner.test.js +32 -0
  74. package/dist/lib/database/provisioner.test.js.map +1 -0
  75. package/dist/lib/database/selection.d.ts +11 -0
  76. package/dist/lib/database/selection.d.ts.map +1 -0
  77. package/dist/lib/database/selection.js +52 -0
  78. package/dist/lib/database/selection.js.map +1 -0
  79. package/dist/lib/database/selection.test.d.ts +2 -0
  80. package/dist/lib/database/selection.test.d.ts.map +1 -0
  81. package/dist/lib/database/selection.test.js +58 -0
  82. package/dist/lib/database/selection.test.js.map +1 -0
  83. package/dist/lib/database/state.d.ts +4 -0
  84. package/dist/lib/database/state.d.ts.map +1 -0
  85. package/dist/lib/database/state.js +10 -0
  86. package/dist/lib/database/state.js.map +1 -0
  87. package/dist/lib/database/state.test.d.ts +2 -0
  88. package/dist/lib/database/state.test.d.ts.map +1 -0
  89. package/dist/lib/database/state.test.js +17 -0
  90. package/dist/lib/database/state.test.js.map +1 -0
  91. package/dist/lib/database/urls.d.ts +19 -0
  92. package/dist/lib/database/urls.d.ts.map +1 -0
  93. package/dist/lib/database/urls.js +14 -0
  94. package/dist/lib/database/urls.js.map +1 -0
  95. package/dist/lib/database/urls.test.d.ts +2 -0
  96. package/dist/lib/database/urls.test.d.ts.map +1 -0
  97. package/dist/lib/database/urls.test.js +31 -0
  98. package/dist/lib/database/urls.test.js.map +1 -0
  99. package/dist/lib/dependency-version.d.ts.map +1 -1
  100. package/dist/lib/dependency-version.js +5 -4
  101. package/dist/lib/dependency-version.js.map +1 -1
  102. package/dist/lib/template-hook-boundary.test.node.js +9 -4
  103. package/dist/lib/template-hook-boundary.test.node.js.map +1 -1
  104. package/dist/manifest/deps.d.ts +8 -1
  105. package/dist/manifest/deps.d.ts.map +1 -1
  106. package/dist/manifest/deps.js +40 -13
  107. package/dist/manifest/deps.js.map +1 -1
  108. package/dist/manifest/env.d.ts +4 -1
  109. package/dist/manifest/env.d.ts.map +1 -1
  110. package/dist/manifest/env.js +12 -6
  111. package/dist/manifest/env.js.map +1 -1
  112. package/dist/phases/db-init.d.ts +2 -1
  113. package/dist/phases/db-init.d.ts.map +1 -1
  114. package/dist/phases/db-init.js +141 -124
  115. package/dist/phases/db-init.js.map +1 -1
  116. package/dist/phases/db-init.test.d.ts +2 -0
  117. package/dist/phases/db-init.test.d.ts.map +1 -0
  118. package/dist/phases/db-init.test.js +144 -0
  119. package/dist/phases/db-init.test.js.map +1 -0
  120. package/dist/phases/db.d.ts +0 -8
  121. package/dist/phases/db.d.ts.map +1 -1
  122. package/dist/phases/db.js +69 -49
  123. package/dist/phases/db.js.map +1 -1
  124. package/dist/phases/db.test.d.ts +2 -0
  125. package/dist/phases/db.test.d.ts.map +1 -0
  126. package/dist/phases/db.test.js +69 -0
  127. package/dist/phases/db.test.js.map +1 -0
  128. package/dist/phases/deps.d.ts.map +1 -1
  129. package/dist/phases/deps.js +7 -4
  130. package/dist/phases/deps.js.map +1 -1
  131. package/dist/phases/deps.test.js +67 -5
  132. package/dist/phases/deps.test.js.map +1 -1
  133. package/dist/phases/env.d.ts.map +1 -1
  134. package/dist/phases/env.js +30 -21
  135. package/dist/phases/env.js.map +1 -1
  136. package/dist/phases/env.test.d.ts +2 -0
  137. package/dist/phases/env.test.d.ts.map +1 -0
  138. package/dist/phases/env.test.js +79 -0
  139. package/dist/phases/env.test.js.map +1 -0
  140. package/dist/phases/scaffold-smoke.test.js +44 -10
  141. package/dist/phases/scaffold-smoke.test.js.map +1 -1
  142. package/dist/phases/scaffold.d.ts.map +1 -1
  143. package/dist/phases/scaffold.js +32 -23
  144. package/dist/phases/scaffold.js.map +1 -1
  145. package/dist/phases/scaffold.test.js +22 -0
  146. package/dist/phases/scaffold.test.js.map +1 -1
  147. package/dist/phases/wire/vite-config.d.ts.map +1 -1
  148. package/dist/phases/wire/vite-config.js +2 -0
  149. package/dist/phases/wire/vite-config.js.map +1 -1
  150. package/dist/phases/wire/vite-config.test.js +25 -2
  151. package/dist/phases/wire/vite-config.test.js.map +1 -1
  152. package/dist/state.d.ts +6 -0
  153. package/dist/state.d.ts.map +1 -1
  154. package/dist/state.js +40 -4
  155. package/dist/state.js.map +1 -1
  156. package/dist/state.test.d.ts +2 -0
  157. package/dist/state.test.d.ts.map +1 -0
  158. package/dist/state.test.js +77 -0
  159. package/dist/state.test.js.map +1 -0
  160. package/dist/templates/byline-examples/collections/docs/admin.tsx +1 -1
  161. package/dist/templates/byline-examples/collections/docs/hooks.ts +1 -1
  162. package/dist/templates/byline-examples/collections/docs/schema.ts +8 -8
  163. package/dist/templates/byline-examples/collections/media/schema.ts +7 -7
  164. package/dist/templates/byline-examples/collections/news/schema.ts +7 -7
  165. package/dist/templates/byline-examples/collections/news-categories/schema.ts +7 -7
  166. package/dist/templates/byline-examples/collections/pages/schema.ts +7 -7
  167. package/dist/templates/byline-examples/scripts/import-docs.ts +1 -1
  168. package/dist/templates/dialects/mysql/byline/server.config.ts +105 -0
  169. package/dist/templates/dialects/mysql/byline-examples/server.config.ts +115 -0
  170. package/dist/templates/{byline-examples → dialects/postgres/byline-examples}/scripts/backfill-version-locales.ts +1 -1
  171. package/dist/templates/{byline-examples → dialects/postgres/byline-examples}/scripts/re-anchor.ts +1 -1
  172. package/dist/templates/{byline-examples → dialects/postgres/byline-examples}/server.config.ts +2 -2
  173. package/dist/templates/host/vite.config.ts +4 -3
  174. package/dist/templates/migrations/mysql/0000_unknown_kulan_gath.sql +412 -0
  175. package/dist/templates/migrations/mysql/meta/_journal.json +13 -0
  176. package/dist/test-helpers.d.ts +14 -2
  177. package/dist/test-helpers.d.ts.map +1 -1
  178. package/dist/test-helpers.js +12 -9
  179. package/dist/test-helpers.js.map +1 -1
  180. package/dist/types.d.ts +3 -0
  181. package/dist/types.d.ts.map +1 -1
  182. package/package.json +7 -2
  183. package/dist/templates/migrations/meta/0000_snapshot.json +0 -3471
  184. /package/dist/templates/{byline → dialects/postgres/byline}/server.config.ts +0 -0
  185. /package/dist/templates/migrations/{0000_mushy_luckman.sql → postgres/0000_mushy_luckman.sql} +0 -0
  186. /package/dist/templates/migrations/{meta → postgres/meta}/_journal.json +0 -0
@@ -14,11 +14,36 @@
14
14
  * `src/routes/_byline/`, `src/ui/byline/`). Transitive deps reach the
15
15
  * user via the `@byline/*` package boundary and don't need declaring.
16
16
  */
17
- import { BYLINE_RELEASE_POLICY } from '../lib/release-policy.js';
17
+ import { DATABASE_ADAPTER_IDS, DATABASE_ADAPTERS, } from '../lib/database/adapters.js';
18
+ import { BYLINE_RELEASE_POLICY, CLI_PACKAGE_VERSION } from '../lib/release-policy.js';
18
19
  // The templates and publishable packages release in lockstep with the CLI.
19
20
  // Changesets updates package.json during version-packages; deriving this range
20
21
  // makes that release version the sole source of truth for scaffolded installs.
21
22
  export const BYLINE_VERSION = BYLINE_RELEASE_POLICY.dependencyRange;
23
+ export const BYLINE_ADAPTER_VERSION = CLI_PACKAGE_VERSION;
24
+ const DATABASE_DEP_SPECS = DATABASE_ADAPTER_IDS.map((id) => ({
25
+ name: DATABASE_ADAPTERS[id].packageName,
26
+ version: BYLINE_ADAPTER_VERSION,
27
+ group: 'byline',
28
+ adapters: [id],
29
+ versionPolicy: 'exact',
30
+ note: `${DATABASE_ADAPTERS[id].label} adapter — pinned to the CLI's bundled schema baseline`,
31
+ }));
32
+ const SEARCH_DEP_SPECS = DATABASE_ADAPTER_IDS.flatMap((id) => {
33
+ const adapter = DATABASE_ADAPTERS[id];
34
+ return adapter.searchPackageName
35
+ ? [
36
+ {
37
+ name: adapter.searchPackageName,
38
+ version: BYLINE_VERSION,
39
+ group: 'byline',
40
+ optional: 'examples',
41
+ adapters: [id],
42
+ note: `built-in ${adapter.label} full-text search provider used by example collections`,
43
+ },
44
+ ]
45
+ : [];
46
+ });
22
47
  export const DEP_SPECS = [
23
48
  // ---- @byline/* — released in lockstep at BYLINE_VERSION -----------------
24
49
  {
@@ -57,12 +82,7 @@ export const DEP_SPECS = [
57
82
  group: 'byline',
58
83
  note: 'declaration-merge target for the app-generated collection types',
59
84
  },
60
- {
61
- name: '@byline/db-postgres',
62
- version: BYLINE_VERSION,
63
- group: 'byline',
64
- note: 'Postgres adapter (Drizzle ORM)',
65
- },
85
+ ...DATABASE_DEP_SPECS,
66
86
  {
67
87
  name: '@byline/host-tanstack-start',
68
88
  version: BYLINE_VERSION,
@@ -81,12 +101,7 @@ export const DEP_SPECS = [
81
101
  group: 'byline',
82
102
  note: 'Lexical-backed richtext field + server populate',
83
103
  },
84
- {
85
- name: '@byline/search-postgres',
86
- version: BYLINE_VERSION,
87
- group: 'byline',
88
- note: 'built-in Postgres full-text search provider; registered in byline/server.config.ts, drives collections/docs indexing hooks',
89
- },
104
+ ...SEARCH_DEP_SPECS,
90
105
  {
91
106
  name: '@byline/storage-local',
92
107
  version: BYLINE_VERSION,
@@ -203,4 +218,16 @@ export const DEP_SPECS = [
203
218
  note: 'extracts heading text in the optional markdown import helpers',
204
219
  },
205
220
  ];
221
+ export function dependencySpecsFor(answers) {
222
+ const adapter = answers.dbAdapter;
223
+ if (!adapter)
224
+ return [];
225
+ return DEP_SPECS.filter((spec) => {
226
+ if (spec.adapters && !spec.adapters.includes(adapter))
227
+ return false;
228
+ if (spec.optional && answers[spec.optional] !== true)
229
+ return false;
230
+ return true;
231
+ });
232
+ }
206
233
  //# sourceMappingURL=deps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/manifest/deps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/manifest/deps.ts"],"names":[],"mappings":"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"}
@@ -13,16 +13,19 @@
13
13
  * `file: 'public'` → `.env`, committed to git, no secrets.
14
14
  * `file: 'secret'` → `.env.local`, gitignored, secrets only.
15
15
  */
16
- export type EnvKey = 'VITE_SERVER_URL' | 'BYLINE_DB_POSTGRES_CONNECTION_STRING' | 'BYLINE_JWT_SECRET' | 'BYLINE_SUPERADMIN_EMAIL' | 'BYLINE_SUPERADMIN_PASSWORD';
16
+ import type { DatabaseAdapterId } from '../types.js';
17
+ export type EnvKey = 'VITE_SERVER_URL' | 'BYLINE_DB_POSTGRES_CONNECTION_STRING' | 'BYLINE_DB_MYSQL_CONNECTION_STRING' | 'BYLINE_JWT_SECRET' | 'BYLINE_SUPERADMIN_EMAIL' | 'BYLINE_SUPERADMIN_PASSWORD';
17
18
  export type EnvFile = 'public' | 'secret';
18
19
  export interface EnvSpec {
19
20
  key: EnvKey;
20
21
  description: string;
21
22
  group: 'app' | 'database' | 'auth';
22
23
  file: EnvFile;
24
+ adapters?: readonly DatabaseAdapterId[];
23
25
  }
24
26
  export declare const ENV_SPECS: readonly EnvSpec[];
25
27
  export declare const ENV_KEYS: readonly EnvKey[];
28
+ export declare function envSpecsForAdapter(adapter: DatabaseAdapterId): readonly EnvSpec[];
26
29
  /**
27
30
  * Relative file paths (from the host app root) corresponding to each
28
31
  * `EnvFile` classification. Centralised here so the env phase and any
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/manifest/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,MAAM,MAAM,GACd,iBAAiB,GACjB,sCAAsC,GACtC,mBAAmB,GACnB,yBAAyB,GACzB,4BAA4B,CAAA;AAEhC,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEzC,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,KAAK,GAAG,UAAU,GAAG,MAAM,CAAA;IAClC,IAAI,EAAE,OAAO,CAAA;CACd;AAED,eAAO,MAAM,SAAS,EAAE,SAAS,OAAO,EA+B9B,CAAA;AAEV,eAAO,MAAM,QAAQ,EAAE,SAAS,MAAM,EAAgC,CAAA;AAEtE;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAGlD,CAAA"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/manifest/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,MAAM,MAAM,MAAM,GACd,iBAAiB,GACjB,sCAAsC,GACtC,mCAAmC,GACnC,mBAAmB,GACnB,yBAAyB,GACzB,4BAA4B,CAAA;AAEhC,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEzC,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,KAAK,GAAG,UAAU,GAAG,MAAM,CAAA;IAClC,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAA;CACxC;AAUD,eAAO,MAAM,SAAS,EAAE,SAAS,OAAO,EA0B9B,CAAA;AAEV,eAAO,MAAM,QAAQ,EAAE,SAAS,MAAM,EAAgC,CAAA;AAEtE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,OAAO,EAAE,CAEjF;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAGlD,CAAA"}
@@ -13,6 +13,14 @@
13
13
  * `file: 'public'` → `.env`, committed to git, no secrets.
14
14
  * `file: 'secret'` → `.env.local`, gitignored, secrets only.
15
15
  */
16
+ import { DATABASE_ADAPTER_IDS, DATABASE_ADAPTERS } from '../lib/database/adapters.js';
17
+ const DATABASE_ENV_SPECS = DATABASE_ADAPTER_IDS.map((id) => ({
18
+ key: DATABASE_ADAPTERS[id].connectionEnvKey,
19
+ description: `${DATABASE_ADAPTERS[id].label} connection string consumed by ${DATABASE_ADAPTERS[id].packageName}`,
20
+ group: 'database',
21
+ file: 'secret',
22
+ adapters: [id],
23
+ }));
16
24
  export const ENV_SPECS = [
17
25
  {
18
26
  key: 'VITE_SERVER_URL',
@@ -20,12 +28,7 @@ export const ENV_SPECS = [
20
28
  group: 'app',
21
29
  file: 'public',
22
30
  },
23
- {
24
- key: 'BYLINE_DB_POSTGRES_CONNECTION_STRING',
25
- description: 'Postgres connection string consumed by @byline/db-postgres',
26
- group: 'database',
27
- file: 'secret',
28
- },
31
+ ...DATABASE_ENV_SPECS,
29
32
  {
30
33
  key: 'BYLINE_JWT_SECRET',
31
34
  description: 'Signing secret for the built-in JwtSessionProvider (>= 32 bytes of entropy)',
@@ -46,6 +49,9 @@ export const ENV_SPECS = [
46
49
  },
47
50
  ];
48
51
  export const ENV_KEYS = ENV_SPECS.map((s) => s.key);
52
+ export function envSpecsForAdapter(adapter) {
53
+ return ENV_SPECS.filter((spec) => !spec.adapters || spec.adapters.includes(adapter));
54
+ }
49
55
  /**
50
56
  * Relative file paths (from the host app root) corresponding to each
51
57
  * `EnvFile` classification. Centralised here so the env phase and any
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/manifest/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAkBH,MAAM,CAAC,MAAM,SAAS,GAAuB;IAC3C;QACE,GAAG,EAAE,iBAAiB;QACtB,WAAW,EAAE,4CAA4C;QACzD,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,QAAQ;KACf;IACD;QACE,GAAG,EAAE,sCAAsC;QAC3C,WAAW,EAAE,4DAA4D;QACzE,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,QAAQ;KACf;IACD;QACE,GAAG,EAAE,mBAAmB;QACxB,WAAW,EAAE,6EAA6E;QAC1F,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,QAAQ;KACf;IACD;QACE,GAAG,EAAE,yBAAyB;QAC9B,WAAW,EAAE,sDAAsD;QACnE,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,QAAQ;KACf;IACD;QACE,GAAG,EAAE,4BAA4B;QACjC,WAAW,EAAE,yDAAyD;QACtE,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,QAAQ;KACf;CACO,CAAA;AAEV,MAAM,CAAC,MAAM,QAAQ,GAAsB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAEtE;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAA4B;IACrD,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,YAAY;CACrB,CAAA"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/manifest/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAqBrF,MAAM,kBAAkB,GAAuB,oBAAoB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/E,GAAG,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAC,gBAAgB;IAC3C,WAAW,EAAE,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC,KAAK,kCAAkC,iBAAiB,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;IAChH,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,EAAE,CAAC;CACf,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,SAAS,GAAuB;IAC3C;QACE,GAAG,EAAE,iBAAiB;QACtB,WAAW,EAAE,4CAA4C;QACzD,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,QAAQ;KACf;IACD,GAAG,kBAAkB;IACrB;QACE,GAAG,EAAE,mBAAmB;QACxB,WAAW,EAAE,6EAA6E;QAC1F,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,QAAQ;KACf;IACD;QACE,GAAG,EAAE,yBAAyB;QAC9B,WAAW,EAAE,sDAAsD;QACnE,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,QAAQ;KACf;IACD;QACE,GAAG,EAAE,4BAA4B;QACjC,WAAW,EAAE,yDAAyD;QACtE,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,QAAQ;KACf;CACO,CAAA;AAEV,MAAM,CAAC,MAAM,QAAQ,GAAsB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAEtE,MAAM,UAAU,kBAAkB,CAAC,OAA0B;IAC3D,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;AACtF,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAA4B;IACrD,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,YAAY;CACrB,CAAA"}
@@ -1,3 +1,4 @@
1
- import type { Phase } from '../types.js';
1
+ import type { DatabaseAdapterId, Phase } from '../types.js';
2
2
  export declare const dbInitPhase: Phase;
3
+ export declare function nativeSqlUpgradeUrl(adapter: DatabaseAdapterId): string;
3
4
  //# sourceMappingURL=db-init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"db-init.d.ts","sourceRoot":"","sources":["../../src/phases/db-init.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAIxC,eAAO,MAAM,WAAW,EAAE,KA8EzB,CAAA"}
1
+ {"version":3,"file":"db-init.d.ts","sourceRoot":"","sources":["../../src/phases/db-init.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE3D,eAAO,MAAM,WAAW,EAAE,KA0IzB,CAAA;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAEtE"}
@@ -1,60 +1,86 @@
1
- import { resolve } from 'node:path';
2
- import { drizzle } from 'drizzle-orm/node-postgres';
3
- import { migrate } from 'drizzle-orm/node-postgres/migrator';
4
- import { Client } from 'pg';
5
- import { buildPgUrl, parsePgUrl, withDatabase } from '../lib/pg-url.js';
6
- import { isValidIdentifier } from './db.js';
7
- const REQUIRED_EXTENSIONS = ['pgcrypto'];
1
+ import { baselineDir } from '../lib/baseline.js';
2
+ import { databaseAdapterDefinition } from '../lib/database/adapters.js';
3
+ import { databaseIdentifierRequirement, databaseProvisioner, isValidDatabaseIdentifier, } from '../lib/database/provisioner.js';
4
+ import { classifyDbTarget } from '../lib/database/state.js';
5
+ import { buildDbUrl, parseDbUrl } from '../lib/database/urls.js';
6
+ import { CLI_PACKAGE_VERSION } from '../lib/release-policy.js';
8
7
  export const dbInitPhase = {
9
8
  id: 'db-init',
10
- title: 'Database initialization — provision role + database, install extensions, run migrations',
9
+ title: 'Database initialization — provision user + database and apply the fresh baseline',
11
10
  defaultMode: 'confirm',
12
11
  async detect(ctx) {
13
12
  if (ctx.state.isComplete('db-init'))
14
13
  return 'done';
15
- const a = ctx.state.get().answers;
16
- if (!a.dbName || !a.dbUser || !a.dbHost || !a.dbPort)
14
+ const answers = ctx.state.get().answers;
15
+ if (!answers.dbAdapter || !answers.dbName || !answers.dbUser || !answers.dbHost) {
17
16
  return 'blocked';
17
+ }
18
18
  return 'pending';
19
19
  },
20
20
  async plan(ctx) {
21
- const a = ctx.state.get().answers;
21
+ const answers = ctx.state.get().answers;
22
22
  const notes = [];
23
- if (a.dbName)
24
- notes.push(`provision database "${a.dbName}"`);
25
- if (a.dbUser)
26
- notes.push(`provision role "${a.dbUser}" (CREATE IF NOT EXISTS)`);
23
+ if (answers.dbAdapter)
24
+ notes.push(`database adapter: ${answers.dbAdapter}`);
25
+ if (answers.dbName)
26
+ notes.push(`provision database "${answers.dbName}"`);
27
+ if (answers.dbUser)
28
+ notes.push(`provision database user "${answers.dbUser}"`);
27
29
  if (ctx.reset) {
28
30
  notes.push('--reset: existing database will be DROPPED if present');
29
31
  }
30
32
  else {
31
- notes.push('non-destructive: existing database/role will be reused');
33
+ notes.push('non-destructive: existing database/user will be reused');
34
+ notes.push('inspect the database first; stop without mutation unless it is empty');
35
+ }
36
+ if (answers.dbAdapter) {
37
+ const prerequisites = databaseAdapterDefinition(answers.dbAdapter).prerequisites;
38
+ if (prerequisites.length > 0) {
39
+ notes.push(`install prerequisites: ${prerequisites.join(', ')}`);
40
+ }
41
+ }
42
+ if (answers.dbAdapter) {
43
+ notes.push(`apply the bundled ${answers.dbAdapter} fresh-install baseline`);
32
44
  }
33
- notes.push(`install extensions: ${REQUIRED_EXTENSIONS.join(', ')}`);
34
- notes.push('run drizzle migrations from bundled @byline/cli templates');
35
45
  return { writes: [], commands: [], notes };
36
46
  },
37
47
  async apply(_plan, ctx) {
38
- const a = ctx.state.get().answers;
39
- if (!a.dbName || !a.dbUser || !a.dbHost || !a.dbPort) {
48
+ const answers = ctx.state.get().answers;
49
+ const adapter = answers.dbAdapter;
50
+ if (!adapter || !answers.dbName || !answers.dbUser || !answers.dbHost) {
40
51
  ctx.logger.error('db-init prerequisites missing — run the db phase first');
41
52
  return { state: 'blocked' };
42
53
  }
43
- if (!isValidIdentifier(a.dbName) || !isValidIdentifier(a.dbUser)) {
44
- ctx.logger.error('invalid identifier — internal state is corrupt; clear .byline-install.json');
54
+ if (!isValidDatabaseIdentifier(adapter, 'database', answers.dbName)) {
55
+ ctx.logger.error(`invalid database name in state — ${databaseIdentifierRequirement(adapter, 'database')}`);
45
56
  return { state: 'blocked' };
46
57
  }
47
- const superuserUrl = await resolveSuperuserUrl(ctx, a.dbHost, a.dbPort);
48
- if (!superuserUrl)
58
+ if (!isValidDatabaseIdentifier(adapter, 'user', answers.dbUser)) {
59
+ ctx.logger.error(`invalid database user in state — ${databaseIdentifierRequirement(adapter, 'user')}`);
49
60
  return { state: 'blocked' };
50
- const password = await resolveAppPassword(ctx);
51
- if (!password)
61
+ }
62
+ const definition = databaseAdapterDefinition(adapter);
63
+ if (definition.baseline !== 'drizzle-sql') {
64
+ ctx.logger.error(`${definition.label} does not support a Drizzle SQL baseline`);
52
65
  return { state: 'blocked' };
53
- ctx.secrets.dbPassword = password;
54
- const sup = parsePgUrl(superuserUrl);
66
+ }
67
+ const adminUrl = await resolveAdminUrl(ctx, adapter, answers.dbHost, answers.dbPort);
68
+ if (!adminUrl)
69
+ return { state: 'blocked' };
70
+ const adminConnection = parseDbUrl(adminUrl, adapter);
71
+ const applicationPort = answers.dbPort ?? definition.url.defaultPort;
72
+ const adminPort = adminConnection.port ?? definition.url.defaultPort;
73
+ if (normalizeHost(adminConnection.host) !== normalizeHost(answers.dbHost) ||
74
+ adminPort !== applicationPort) {
75
+ ctx.logger.error('administrator and application connection endpoints must use the same database host and port');
76
+ ctx.logger.info(`application endpoint: ${answers.dbHost}:${applicationPort}; administrator endpoint: ${adminConnection.host}:${adminPort}`);
77
+ ctx.logger.info('use an administrator URL for the same endpoint that will be written to the application environment');
78
+ return { state: 'blocked' };
79
+ }
80
+ const provisioner = databaseProvisioner(adapter, ctx.provisioners);
55
81
  if (ctx.reset && !ctx.resetConfirmed) {
56
82
  const ok = await ctx.prompter.confirm({
57
- message: `RESET will DROP database "${a.dbName}" if it exists. Continue?`,
83
+ message: `RESET will DROP database "${answers.dbName}" if it exists. Continue?`,
58
84
  defaultValue: false,
59
85
  });
60
86
  if (!ok) {
@@ -62,124 +88,115 @@ export const dbInitPhase = {
62
88
  return { state: 'blocked' };
63
89
  }
64
90
  }
65
- await provisionRoleAndDatabase(ctx, {
66
- sup,
67
- dbName: a.dbName,
68
- dbUser: a.dbUser,
91
+ if (!ctx.reset) {
92
+ ctx.logger.step(`inspecting database "${answers.dbName}" before any mutation`);
93
+ const targetState = classifyDbTarget(await provisioner.inspectTarget(adminUrl, answers.dbName));
94
+ if (targetState === 'byline-schema' || targetState === 'occupied-schema') {
95
+ refuseOccupiedTarget(ctx, adapter, answers.dbName, targetState);
96
+ return { state: 'blocked' };
97
+ }
98
+ }
99
+ const password = await resolveAppPassword(ctx, definition.label);
100
+ if (!password)
101
+ return { state: 'blocked' };
102
+ ctx.secrets.dbPassword = password;
103
+ await provisioner.provisionTarget({
104
+ adminUrl,
105
+ database: answers.dbName,
106
+ user: answers.dbUser,
69
107
  password,
70
108
  reset: ctx.reset,
109
+ logger: ctx.logger,
71
110
  });
72
- await installExtensions(ctx, withDatabase(sup, a.dbName));
73
- await runMigrations(ctx, {
74
- host: sup.host,
75
- port: sup.port,
76
- user: a.dbUser,
111
+ const applicationUrl = buildDbUrl(adapter, {
112
+ host: answers.dbHost,
113
+ port: applicationPort,
114
+ user: answers.dbUser,
77
115
  password,
78
- database: a.dbName,
116
+ database: answers.dbName,
117
+ });
118
+ await provisioner.applyBaseline({
119
+ applicationUrl,
120
+ migrationsFolder: baselineDir(ctx.templatesDir(), adapter),
121
+ logger: ctx.logger,
79
122
  });
80
123
  return { state: 'done' };
81
124
  },
82
125
  };
83
- async function resolveSuperuserUrl(ctx, dbHost, dbPort) {
84
- // Preferred path: same process as the `db` phase, URL still in memory.
85
- if (ctx.secrets.superuserUrl)
86
- return ctx.secrets.superuserUrl;
87
- // Fresh process (state file loaded from disk): re-prompt. The URL carries
88
- // the superuser password, so it is intentionally not persisted.
126
+ export function nativeSqlUpgradeUrl(adapter) {
127
+ return `https://github.com/Byline-CMS/bylinecms.dev/blob/v${CLI_PACKAGE_VERSION}/packages/db-${adapter}/sql/README.md`;
128
+ }
129
+ function refuseOccupiedTarget(ctx, adapter, database, state) {
130
+ if (state === 'byline-schema') {
131
+ ctx.logger.error(`refusing fresh baseline: database "${database}" already contains Byline schema objects`);
132
+ ctx.logger.info('the squashed baseline creates the target release schema from scratch; it is not an upgrade stream');
133
+ ctx.logger.info(`upgrade the existing installation with native SQL for the target release: ${nativeSqlUpgradeUrl(adapter)}`);
134
+ ctx.logger.info('only when destroying and rebuilding this Byline installation is intended, run: byline setup --force --reset --i-mean-it');
135
+ }
136
+ else {
137
+ ctx.logger.error(`refusing fresh baseline: database "${database}" contains existing tables or views`);
138
+ ctx.logger.info('the installer requires a dedicated empty database/schema and will not merge Byline into occupied application storage');
139
+ ctx.logger.info('choose a different, empty database name and run setup again');
140
+ }
141
+ }
142
+ function normalizeHost(host) {
143
+ return host.replace(/^\[|\]$/g, '').toLowerCase();
144
+ }
145
+ async function resolveAdminUrl(ctx, adapter, host, port) {
146
+ if (ctx.secrets.adminUrl) {
147
+ try {
148
+ parseDbUrl(ctx.secrets.adminUrl, adapter);
149
+ return ctx.secrets.adminUrl;
150
+ }
151
+ catch (error) {
152
+ ctx.logger.error(error.message);
153
+ return null;
154
+ }
155
+ }
156
+ const definition = databaseAdapterDefinition(adapter);
157
+ const adminUser = adapter === 'postgres' ? 'postgres' : 'root';
158
+ const fallback = buildDbUrl(adapter, {
159
+ host,
160
+ port: port ?? definition.url.defaultPort,
161
+ user: adminUser,
162
+ password: adminUser,
163
+ database: definition.defaultAdminDatabase,
164
+ });
89
165
  const url = await ctx.prompter.text({
90
- message: 'Postgres superuser connection URL (used for role/database creation)',
91
- placeholder: `postgresql://postgres:postgres@${dbHost}:${dbPort}/postgres`,
92
- defaultValue: `postgresql://postgres:postgres@${dbHost}:${dbPort}/postgres`,
166
+ message: `${definition.label} administrator connection URL (used for user/database creation)`,
167
+ placeholder: fallback,
168
+ defaultValue: fallback,
93
169
  });
94
170
  if (!url) {
95
- ctx.logger.error('superuser URL is required to provision the role and database');
171
+ ctx.logger.error('administrator URL is required to provision the user and database');
96
172
  return null;
97
173
  }
98
- ctx.secrets.superuserUrl = url;
174
+ try {
175
+ parseDbUrl(url, adapter);
176
+ }
177
+ catch (error) {
178
+ ctx.logger.error(error.message);
179
+ return null;
180
+ }
181
+ ctx.secrets.adminUrl = url;
99
182
  return url;
100
183
  }
101
- async function resolveAppPassword(ctx) {
184
+ async function resolveAppPassword(ctx, databaseLabel) {
185
+ if (ctx.secrets.dbPassword)
186
+ return ctx.secrets.dbPassword;
102
187
  const fromEnv = process.env.BYLINE_DB_PASSWORD;
103
188
  if (fromEnv) {
104
189
  if (fromEnv.length < 8) {
105
190
  ctx.logger.error('BYLINE_DB_PASSWORD must be at least 8 characters');
106
191
  return null;
107
192
  }
108
- ctx.logger.info('using app role password from BYLINE_DB_PASSWORD');
193
+ ctx.logger.info('using app database user password from BYLINE_DB_PASSWORD');
109
194
  return fromEnv;
110
195
  }
111
- const pw = await ctx.prompter.password({
112
- message: 'Choose a password for the application database role (min 8 chars)',
113
- validate: (v) => (v.length < 8 ? 'must be at least 8 characters' : undefined),
196
+ const password = await ctx.prompter.password({
197
+ message: `Choose a password for the ${databaseLabel} application user (min 8 chars)`,
198
+ validate: (value) => (value.length < 8 ? 'must be at least 8 characters' : undefined),
114
199
  });
115
- return pw || null;
116
- }
117
- async function provisionRoleAndDatabase(ctx, args) {
118
- const { sup, dbName, dbUser, password, reset } = args;
119
- const client = new Client({ connectionString: buildPgUrl(sup) });
120
- await client.connect();
121
- try {
122
- const dbUserIdent = client.escapeIdentifier(dbUser);
123
- const dbNameIdent = client.escapeIdentifier(dbName);
124
- const roleExists = await client.query('SELECT 1 FROM pg_roles WHERE rolname = $1', [dbUser]);
125
- if ((roleExists.rowCount ?? 0) === 0) {
126
- ctx.logger.step(`creating role ${dbUser}`);
127
- await client.query(`CREATE ROLE ${dbUserIdent} WITH LOGIN`);
128
- }
129
- else {
130
- ctx.logger.step(`role ${dbUser} already exists`);
131
- }
132
- await client.query(`ALTER ROLE ${dbUserIdent} WITH PASSWORD ${client.escapeLiteral(password)}`);
133
- if (reset) {
134
- ctx.logger.step(`terminating connections to ${dbName}`);
135
- await client.query(`SELECT pg_terminate_backend(pid)
136
- FROM pg_stat_activity
137
- WHERE datname = $1 AND pid <> pg_backend_pid()`, [dbName]);
138
- ctx.logger.step(`dropping database ${dbName}`);
139
- await client.query(`DROP DATABASE IF EXISTS ${dbNameIdent}`);
140
- }
141
- const dbExists = await client.query('SELECT 1 FROM pg_database WHERE datname = $1', [dbName]);
142
- if ((dbExists.rowCount ?? 0) === 0) {
143
- ctx.logger.step(`creating database ${dbName}`);
144
- await client.query(`CREATE DATABASE ${dbNameIdent} WITH OWNER ${dbUserIdent}`);
145
- }
146
- else {
147
- ctx.logger.step(`database ${dbName} already exists — reusing`);
148
- }
149
- }
150
- finally {
151
- await client.end().catch(() => { });
152
- }
153
- }
154
- async function installExtensions(ctx, conn) {
155
- const client = new Client({ connectionString: buildPgUrl(conn) });
156
- await client.connect();
157
- try {
158
- for (const ext of REQUIRED_EXTENSIONS) {
159
- const ident = client.escapeIdentifier(ext);
160
- ctx.logger.step(`CREATE EXTENSION IF NOT EXISTS ${ext}`);
161
- await client.query(`CREATE EXTENSION IF NOT EXISTS ${ident}`);
162
- }
163
- }
164
- finally {
165
- await client.end().catch(() => { });
166
- }
167
- }
168
- async function runMigrations(ctx, args) {
169
- const migrationsFolder = resolve(ctx.templatesDir(), 'migrations');
170
- ctx.logger.step(`running migrations from ${migrationsFolder}`);
171
- const client = new Client({ connectionString: buildPgUrl(args) });
172
- await client.connect();
173
- try {
174
- const db = drizzle(client);
175
- await migrate(db, { migrationsFolder });
176
- const r = await client.query(`SELECT count(*)::text AS count
177
- FROM information_schema.tables
178
- WHERE table_schema = 'public'`);
179
- ctx.logger.success(`migrations applied — ${r.rows[0]?.count} tables in public schema`);
180
- }
181
- finally {
182
- await client.end().catch(() => { });
183
- }
200
+ return password || null;
184
201
  }
185
202
  //# sourceMappingURL=db-init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"db-init.js","sourceRoot":"","sources":["../../src/phases/db-init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db-init.js","sourceRoot":"","sources":["../../src/phases/db-init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=db-init.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db-init.test.d.ts","sourceRoot":"","sources":["../../src/phases/db-init.test.ts"],"names":[],"mappings":""}