@payload-auth-link/migrate 0.3.1 → 0.4.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 (69) hide show
  1. package/README.md +6 -3
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +49 -6
  4. package/dist/cli.js.map +1 -1
  5. package/dist/codemods.d.ts +17 -8
  6. package/dist/codemods.d.ts.map +1 -1
  7. package/dist/codemods.js +439 -20
  8. package/dist/codemods.js.map +1 -1
  9. package/dist/doctor/database.d.ts +5 -1
  10. package/dist/doctor/database.d.ts.map +1 -1
  11. package/dist/doctor/database.js +98 -34
  12. package/dist/doctor/database.js.map +1 -1
  13. package/dist/doctor/plugins.d.ts +15 -0
  14. package/dist/doctor/plugins.d.ts.map +1 -1
  15. package/dist/doctor/plugins.js +43 -0
  16. package/dist/doctor/plugins.js.map +1 -1
  17. package/dist/doctor/run-doctor.d.ts +11 -0
  18. package/dist/doctor/run-doctor.d.ts.map +1 -1
  19. package/dist/doctor/run-doctor.js +66 -20
  20. package/dist/doctor/run-doctor.js.map +1 -1
  21. package/dist/doctor/source-scan.d.ts +5 -0
  22. package/dist/doctor/source-scan.d.ts.map +1 -1
  23. package/dist/doctor/source-scan.js +9 -0
  24. package/dist/doctor/source-scan.js.map +1 -1
  25. package/dist/doctor/types.d.ts +12 -0
  26. package/dist/doctor/types.d.ts.map +1 -1
  27. package/dist/exporters.d.ts +7 -0
  28. package/dist/exporters.d.ts.map +1 -1
  29. package/dist/exporters.js +36 -1
  30. package/dist/exporters.js.map +1 -1
  31. package/dist/importer/apply.d.ts +5 -0
  32. package/dist/importer/apply.d.ts.map +1 -1
  33. package/dist/importer/apply.js +61 -33
  34. package/dist/importer/apply.js.map +1 -1
  35. package/dist/importer/lifecycle.d.ts +15 -6
  36. package/dist/importer/lifecycle.d.ts.map +1 -1
  37. package/dist/importer/lifecycle.js +131 -39
  38. package/dist/importer/lifecycle.js.map +1 -1
  39. package/dist/importer/run-import.d.ts +6 -0
  40. package/dist/importer/run-import.d.ts.map +1 -1
  41. package/dist/importer/run-import.js +72 -20
  42. package/dist/importer/run-import.js.map +1 -1
  43. package/dist/importer/source.d.ts +47 -4
  44. package/dist/importer/source.d.ts.map +1 -1
  45. package/dist/importer/source.js +159 -27
  46. package/dist/importer/source.js.map +1 -1
  47. package/dist/importer/types.d.ts +33 -0
  48. package/dist/importer/types.d.ts.map +1 -1
  49. package/dist/importer/types.js +48 -0
  50. package/dist/importer/types.js.map +1 -1
  51. package/dist/index.d.ts +5 -3
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +5 -3
  54. package/dist/index.js.map +1 -1
  55. package/package.json +8 -11
  56. package/src/cli.ts +52 -6
  57. package/src/codemods.ts +537 -35
  58. package/src/doctor/database.ts +129 -46
  59. package/src/doctor/plugins.ts +51 -0
  60. package/src/doctor/run-doctor.ts +90 -25
  61. package/src/doctor/source-scan.ts +10 -0
  62. package/src/doctor/types.ts +9 -0
  63. package/src/exporters.ts +46 -1
  64. package/src/importer/apply.ts +78 -32
  65. package/src/importer/lifecycle.ts +163 -43
  66. package/src/importer/run-import.ts +102 -19
  67. package/src/importer/source.ts +214 -30
  68. package/src/importer/types.ts +86 -0
  69. package/src/index.ts +25 -2
@@ -1,28 +1,21 @@
1
1
  import { Client } from 'pg';
2
+ import { resolveSourceTables, sourceModelNames, } from '../importer/types.js';
2
3
  /**
3
4
  * Read-only database introspection (issue #52): row counts for the
4
5
  * payload-auth layout's auth tables, unverified users (who will not
5
6
  * JIT-link), and orphans. Only an honest SELECT — the doctor never
6
7
  * writes.
8
+ *
9
+ * Map-aware (issue #68): the ten source models are counted through the
10
+ * `--source-map` (defaulting to payload-auth's layout), and a mapped
11
+ * table that is absent comes back in `missingTables` for the caller to
12
+ * block on — a missing table is never silently reported as 0 rows.
13
+ * Satellite tables beyond the map (two-factor, passkey, sso, …) stay
14
+ * informational: apps drop plugins, and only the mapped models gate.
7
15
  */
8
- /**
9
- * The payload-auth 1.9.x Postgres layout (snake_case columns; Payload's
10
- * drizzle adapter stores hasMany selects as child tables like
11
- * `users_role`). Tables that don't exist are simply absent from the
12
- * report — apps customize slugs and drop plugins.
13
- */
16
+ /** Satellite/extra tables reported when present, never gating. */
14
17
  const knownTables = [
15
- 'users',
16
- 'accounts',
17
- 'sessions',
18
- 'verifications',
19
- 'api_keys',
20
- 'organizations',
21
- 'members',
22
- 'invitations',
23
- 'jwks',
24
18
  'admin_invitations',
25
- 'users_role',
26
19
  'two_factors',
27
20
  'passkeys',
28
21
  'oauth_applications',
@@ -48,60 +41,131 @@ async function columnsOf(client, table) {
48
41
  WHERE table_schema = 'public' AND table_name = $1`, [table]);
49
42
  return new Set(result.rows.map((row) => String(row.column_name)));
50
43
  }
51
- export async function introspectDatabase(connectionString) {
44
+ export async function introspectDatabase(connectionString, options = {}) {
45
+ const tables = resolveSourceTables(options.sourceTables);
52
46
  const client = new Client({ connectionString });
53
47
  await client.connect();
54
48
  try {
55
- const tables = [];
49
+ const counted = [];
50
+ const missing = [];
51
+ // The mapped models count, and a missing mapped table is reported
52
+ // for the caller to block on (issue #68).
53
+ for (const model of sourceModelNames) {
54
+ const table = tables[model];
55
+ if (table === null) {
56
+ continue;
57
+ }
58
+ if (!(await tableExists(client, table))) {
59
+ missing.push({ model, table });
60
+ continue;
61
+ }
62
+ const result = await client.query(`SELECT count(*)::int AS n FROM ${table}`);
63
+ const first = result.rows[0];
64
+ counted.push({ name: table, rows: first?.n ?? 0 });
65
+ }
66
+ // Satellite tables: informational when present.
56
67
  for (const table of knownTables) {
57
68
  if (!(await tableExists(client, table))) {
58
69
  continue;
59
70
  }
60
- const counted = await client.query(`SELECT count(*)::int AS n FROM ${table}`);
61
- const first = counted.rows[0];
62
- tables.push({ name: table, rows: first?.n ?? 0 });
71
+ const result = await client.query(`SELECT count(*)::int AS n FROM ${table}`);
72
+ const first = result.rows[0];
73
+ counted.push({ name: table, rows: first?.n ?? 0 });
63
74
  }
64
75
  let unverifiedUsers = null;
65
- if (await tableExists(client, 'users')) {
66
- const columns = await columnsOf(client, 'users');
76
+ const usersTable = tables['users'];
77
+ if (usersTable !== null && (await tableExists(client, usersTable))) {
78
+ const columns = await columnsOf(client, usersTable);
67
79
  if (columns.has('email_verified')) {
68
- const counted = await client.query('SELECT count(*)::int AS n FROM users WHERE email_verified = false');
69
- const first = counted.rows[0];
80
+ const result = await client.query(`SELECT count(*)::int AS n FROM ${usersTable} WHERE email_verified = false`);
81
+ const first = result.rows[0];
70
82
  unverifiedUsers = first?.n ?? null;
71
83
  }
72
84
  }
73
85
  const orphans = [];
86
+ const skippedChecks = [];
74
87
  const orphanChecks = [
75
- { kind: 'accounts-without-user', table: 'accounts', column: 'user_id', target: 'users' },
88
+ {
89
+ kind: 'accounts-without-user',
90
+ table: tables['accounts'],
91
+ column: 'user_id',
92
+ target: usersTable,
93
+ },
76
94
  {
77
95
  kind: 'members-without-org',
78
- table: 'members',
96
+ table: tables['members'],
79
97
  column: 'organization_id',
80
- target: 'organizations',
98
+ target: tables['organizations'],
99
+ },
100
+ {
101
+ kind: 'members-without-user',
102
+ table: tables['members'],
103
+ column: 'user_id',
104
+ target: usersTable,
81
105
  },
82
- { kind: 'members-without-user', table: 'members', column: 'user_id', target: 'users' },
83
106
  {
84
107
  kind: 'invitations-without-org',
85
- table: 'invitations',
108
+ table: tables['invitations'],
86
109
  column: 'organization_id',
87
- target: 'organizations',
110
+ target: tables['organizations'],
88
111
  },
89
112
  ];
90
113
  for (const check of orphanChecks) {
114
+ if (check.table === null || check.target === null) {
115
+ skippedChecks.push(`${check.kind}: skipped — a mapped model is null-mapped (not installed)`);
116
+ continue;
117
+ }
91
118
  if ((await tableExists(client, check.table)) &&
92
119
  (await tableExists(client, check.target)) &&
93
120
  (await columnsOf(client, check.table)).has(check.column)) {
94
- const counted = await client.query(`SELECT count(*)::int AS n FROM ${check.table}
121
+ const result = await client.query(`SELECT count(*)::int AS n FROM ${check.table}
95
122
  WHERE ${check.column} IS NOT NULL
96
123
  AND NOT EXISTS (SELECT 1 FROM ${check.target} t WHERE t.id = ${check.table}.${check.column})`);
97
- const first = counted.rows[0];
124
+ const first = result.rows[0];
98
125
  const count = first?.n ?? 0;
99
126
  if (count > 0) {
100
127
  orphans.push({ kind: check.kind, count });
101
128
  }
102
129
  }
130
+ else {
131
+ skippedChecks.push(`${check.kind}: skipped — a table or column involved is absent`);
132
+ }
133
+ }
134
+ // api keys: the owner column is named per layout — probe it
135
+ // (issue #68: `reference_id` on current layouts, `user_id` on 1.6).
136
+ const apiKeysTable = tables['api_keys'];
137
+ if (apiKeysTable === null) {
138
+ skippedChecks.push('api-keys-without-user: skipped — the model is null-mapped');
139
+ }
140
+ else if (!(await tableExists(client, apiKeysTable))) {
141
+ if (!missing.some((entry) => entry.model === 'api_keys')) {
142
+ skippedChecks.push(`api-keys-without-user: skipped — table '${apiKeysTable}' is absent`);
143
+ }
144
+ }
145
+ else {
146
+ const columns = await columnsOf(client, apiKeysTable);
147
+ const column = columns.has('reference_id')
148
+ ? 'reference_id'
149
+ : columns.has('user_id')
150
+ ? 'user_id'
151
+ : null;
152
+ if (column === null || usersTable === null) {
153
+ skippedChecks.push(`api-keys-without-user: skipped — neither 'reference_id' nor 'user_id' exists on '${apiKeysTable}'`);
154
+ }
155
+ else {
156
+ // Text casts on both sides: the owner column may be varchar
157
+ // (reference_id) or integer (1.6-era user_id).
158
+ const result = await client.query(`SELECT count(*)::int AS n FROM ${apiKeysTable}
159
+ WHERE ${column} IS NOT NULL
160
+ AND NOT EXISTS (SELECT 1 FROM ${usersTable} t WHERE t.id::text = ${apiKeysTable}.${column}::text)`);
161
+ const first = result.rows[0];
162
+ const count = first?.n ?? 0;
163
+ if (count > 0) {
164
+ orphans.push({ kind: 'api-keys-without-user', count });
165
+ }
166
+ }
103
167
  }
104
- return { tables, unverifiedUsers, orphans };
168
+ return { tables: counted, unverifiedUsers, orphans, missingTables: missing, skippedChecks };
105
169
  }
106
170
  finally {
107
171
  await client.end();
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/doctor/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/doctor/database.ts"],"names":[],"mappings":"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"}
@@ -9,4 +9,19 @@ export declare function pluginsFromCollectionSlugs(slugs: readonly string[]): st
9
9
  * beyond loading its config module.
10
10
  */
11
11
  export declare function pluginsFromConfigSource(configSource: string): string[];
12
+ /** One plugin factory call found in a source file. */
13
+ export type PluginSourceHit = {
14
+ /** The Better Auth plugin id (or payload-auth-era name). */
15
+ readonly id: string;
16
+ /** The file it was found in, relative to the scanned root. */
17
+ readonly file: string;
18
+ };
19
+ /**
20
+ * Plugin factory calls across the WHOLE source tree (issue #71), not
21
+ * just the config file: a mid-upgrade app calls `admin(...)` or
22
+ * `oidcProvider(...)` in helpers too, and a schema-adding plugin that
23
+ * hides in a non-config file changes what the migration must carry.
24
+ * Same walk/skip rules as the source scan.
25
+ */
26
+ export declare function pluginsFromSourceTree(srcDir: string): readonly PluginSourceHit[];
12
27
  //# sourceMappingURL=plugins.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/doctor/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AA2E/C,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,aAAa,EAAE,CA8DvE;AA+BD,oEAAoE;AACpE,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAS7E;AAsBD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAStE"}
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/doctor/plugins.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AA4E/C,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,aAAa,EAAE,CA8DvE;AA+BD,oEAAoE;AACpE,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAS7E;AA8BD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAStE;AAED,sDAAsD;AACtD,MAAM,MAAM,eAAe,GAAG;IAC5B,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,eAAe,EAAE,CAuBhF"}
@@ -1,3 +1,6 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { relative } from 'node:path';
3
+ import { listSourceFiles } from './source-scan.js';
1
4
  /**
2
5
  * Better Auth plugin classification (issue #52): for each plugin the
3
6
  * app's `betterAuthOptions.plugins` declares, the doctor says whether
@@ -179,9 +182,17 @@ const callNameToPlugin = {
179
182
  nextCookies: 'next-cookies',
180
183
  tanstackStartCookies: 'tanstack-start-cookies',
181
184
  oidcProvider: 'oidcProvider',
185
+ mcp: 'mcp',
182
186
  passkey: 'passkey',
183
187
  apiKey: 'api-key',
184
188
  sso: 'sso',
189
+ multiSession: 'multi-session',
190
+ bearer: 'bearer',
191
+ oneTimeToken: 'one-time-token',
192
+ siwe: 'siwe',
193
+ expo: 'expo',
194
+ deviceAuthorization: 'device-authorization',
195
+ subscriptions: 'subscriptions',
185
196
  };
186
197
  /**
187
198
  * Plugin ids found by scanning the config source for plugin factory
@@ -199,4 +210,36 @@ export function pluginsFromConfigSource(configSource) {
199
210
  }
200
211
  return [...ids].sort();
201
212
  }
213
+ /**
214
+ * Plugin factory calls across the WHOLE source tree (issue #71), not
215
+ * just the config file: a mid-upgrade app calls `admin(...)` or
216
+ * `oidcProvider(...)` in helpers too, and a schema-adding plugin that
217
+ * hides in a non-config file changes what the migration must carry.
218
+ * Same walk/skip rules as the source scan.
219
+ */
220
+ export function pluginsFromSourceTree(srcDir) {
221
+ const hits = [];
222
+ const seen = new Set();
223
+ for (const file of listSourceFiles(srcDir)) {
224
+ let content;
225
+ try {
226
+ content = readFileSync(file, 'utf8');
227
+ }
228
+ catch {
229
+ continue;
230
+ }
231
+ for (const [call, id] of Object.entries(callNameToPlugin)) {
232
+ const pattern = new RegExp(`\\b${call}\\s*\\(`);
233
+ if (pattern.test(content)) {
234
+ const rel = relative(srcDir, file);
235
+ const key = `${id}\n${rel}`;
236
+ if (!seen.has(key)) {
237
+ seen.add(key);
238
+ hits.push({ id, file: rel });
239
+ }
240
+ }
241
+ }
242
+ }
243
+ return hits;
244
+ }
202
245
  //# sourceMappingURL=plugins.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/doctor/plugins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/doctor/plugins.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,12 @@ import type { BehaviourChange, DoctorReport } from './types.js';
6
6
  * Auth plugins, scans the source tree for call sites that must
7
7
  * migrate, and (with a database URL) reports row counts, unverified
8
8
  * users, and orphans. It never writes.
9
+ *
10
+ * Never crashes (issue #71): a config that cannot even be IMPORTED
11
+ * (the mid-upgrade state — better-auth 1.7 installed while the config
12
+ * still calls `oidcProvider`) is a `config-unloadable` blocker, not a
13
+ * crash. The static scans (config text, source tree, database) still
14
+ * run and still catch what the load cannot.
9
15
  */
10
16
  export type DoctorOptions = {
11
17
  /** Absolute or cwd-relative path to the app's payload config. */
@@ -14,6 +20,11 @@ export type DoctorOptions = {
14
20
  readonly srcDir?: string | undefined;
15
21
  /** Postgres connection string. Defaults to `DATABASE_URL`. */
16
22
  readonly databaseUrl?: string | undefined;
23
+ /**
24
+ * The `--source-map` JSON (issue #68): model → source table name, or
25
+ * `null` for "model not installed". Shapes the database section.
26
+ */
27
+ readonly sourceMapJson?: string | undefined;
17
28
  /** Config loader, injectable for tests. Defaults to dynamic import. */
18
29
  readonly loadModule?: ((path: string) => Promise<unknown>) | undefined;
19
30
  };
@@ -1 +1 @@
1
- {"version":3,"file":"run-doctor.d.ts","sourceRoot":"","sources":["../../src/doctor/run-doctor.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAe,YAAY,EAAE,MAAM,YAAY,CAAA;AAE5E;;;;;;;GAOG;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,iEAAiE;IACjE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,oEAAoE;IACpE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,8DAA8D;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzC,uEAAuE;IACvE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAA;CACvE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,eAAe,EAqBtD,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG;IACtD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACvC,GAAG,IAAI,CAmBP;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAYpF;AAED,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAK1E;AAED,4CAA4C;AAC5C,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,CAQzD;AAcD,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAyI7E"}
1
+ {"version":3,"file":"run-doctor.d.ts","sourceRoot":"","sources":["../../src/doctor/run-doctor.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,eAAe,EAAe,YAAY,EAAiB,MAAM,YAAY,CAAA;AAE3F;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,iEAAiE;IACjE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,oEAAoE;IACpE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,8DAA8D;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzC;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3C,uEAAuE;IACvE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAA;CACvE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,eAAe,EAqBtD,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG;IACtD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACvC,GAAG,IAAI,CAmBP;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAYpF;AAED,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAK1E;AAED,4CAA4C;AAC5C,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,CAQzD;AAcD,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAyL7E"}
@@ -4,9 +4,10 @@ import { dirname, resolve } from 'node:path';
4
4
  import { pathToFileURL } from 'node:url';
5
5
  import { checkVersions } from './bands.js';
6
6
  import { introspectDatabase } from './database.js';
7
- import { classifyPlugins, pluginsFromCollectionSlugs, pluginsFromConfigSource } from './plugins.js';
7
+ import { classifyPlugins, pluginsFromCollectionSlugs, pluginsFromConfigSource, pluginsFromSourceTree, } from './plugins.js';
8
8
  import { scanSource } from './source-scan.js';
9
9
  import { analyzeUsersCollection, findUsersCollection } from './users.js';
10
+ import { parseSourceMapJson, resolveSourceTables } from '../importer/types.js';
10
11
  /**
11
12
  * Behaviour changes in payload-auth-link 0.7.0 that a payload-auth app
12
13
  * feels on day one. Static by nature; kept next to the doctor so the
@@ -107,7 +108,6 @@ async function defaultLoadModule(path) {
107
108
  export async function runDoctor(options) {
108
109
  const configPath = resolve(options.configPath);
109
110
  const loadModule = options.loadModule ?? defaultLoadModule;
110
- const config = await loadModule(configPath);
111
111
  const configDir = dirname(configPath);
112
112
  const srcDir = options.srcDir === undefined ? configDir : resolve(options.srcDir);
113
113
  const versions = checkVersions(pathToFileURL(configPath).href);
@@ -127,8 +127,23 @@ export async function runDoctor(options) {
127
127
  });
128
128
  }
129
129
  }
130
- const plugin = findPayloadAuthPlugin(config);
131
- if (plugin === null) {
130
+ // Issue #71: the load can fail on the mid-upgrade state (better-auth
131
+ // 1.7 installed while the config still calls `oidcProvider`). That is
132
+ // a blocker — never a crash — and the static scans below still run.
133
+ let config = null;
134
+ let configLoaded = true;
135
+ try {
136
+ config = await loadModule(configPath);
137
+ }
138
+ catch (error) {
139
+ configLoaded = false;
140
+ blockers.push({
141
+ code: 'config-unloadable',
142
+ detail: `the config module could not be loaded: ${error instanceof Error ? error.message : String(error)} — fix the load error before migrating; the report below still reflects the static scans`,
143
+ });
144
+ }
145
+ const plugin = configLoaded ? findPayloadAuthPlugin(config) : null;
146
+ if (configLoaded && plugin === null) {
132
147
  warnings.push({
133
148
  code: 'payload-auth-not-detected',
134
149
  detail: 'no payload-auth plugin found in the config; if this app runs payload-auth elsewhere, point --config at that config',
@@ -141,8 +156,10 @@ export async function runDoctor(options) {
141
156
  });
142
157
  }
143
158
  // payload-auth keeps the builder's options in its closure, so the
144
- // plugin set comes from what the built config proves: the collections
145
- // payload-auth created and the plugin calls in the config source.
159
+ // plugin set comes from what the sources prove: the collections
160
+ // payload-auth built, the plugin calls in the config source, AND the
161
+ // plugin calls anywhere under --src (issue #71 — schema-adding
162
+ // plugins hide in helper files too).
146
163
  let configSource;
147
164
  try {
148
165
  configSource = readFileSync(configPath, 'utf8');
@@ -150,14 +167,25 @@ export async function runDoctor(options) {
150
167
  catch {
151
168
  configSource = '';
152
169
  }
170
+ const sourceTreeHits = pluginsFromSourceTree(srcDir);
171
+ const filesById = new Map();
172
+ for (const hit of sourceTreeHits) {
173
+ const list = filesById.get(hit.id) ?? [];
174
+ list.push(hit.file);
175
+ filesById.set(hit.id, list);
176
+ }
153
177
  const pluginIds = [
154
178
  ...new Set([
155
- ...betterAuthPluginIds(plugin?.pluginOptions ?? {}),
156
- ...pluginsFromCollectionSlugs(collectionSlugs(config)),
179
+ ...(configLoaded ? betterAuthPluginIds(plugin?.pluginOptions ?? {}) : []),
180
+ ...(configLoaded ? pluginsFromCollectionSlugs(collectionSlugs(config)) : []),
157
181
  ...pluginsFromConfigSource(configSource),
182
+ ...sourceTreeHits.map((hit) => hit.id),
158
183
  ]),
159
184
  ];
160
- const pluginFindings = classifyPlugins(pluginIds);
185
+ const pluginFindings = classifyPlugins(pluginIds).map((finding) => {
186
+ const files = filesById.get(finding.id);
187
+ return files === undefined ? finding : { ...finding, files };
188
+ });
161
189
  for (const finding of pluginFindings) {
162
190
  if (finding.status === 'removed-upstream') {
163
191
  blockers.push({
@@ -169,16 +197,20 @@ export async function runDoctor(options) {
169
197
  warnings.push({ code: 'ba-plugin-unvalidated', detail: `${finding.id}: ${finding.detail}` });
170
198
  }
171
199
  }
172
- const usersSlug = usersSlugOf(plugin?.pluginOptions ?? {});
173
- const { finding: users, issues: userIssues } = analyzeUsersCollection(findUsersCollection(config, usersSlug), 'roles');
174
- for (const issue of userIssues) {
175
- if (issue.code === 'injected-field-collision' ||
176
- issue.code === 'roles-field-not-select' ||
177
- issue.code === 'users-collection-missing') {
178
- blockers.push(issue);
179
- }
180
- else {
181
- warnings.push(issue);
200
+ let users = null;
201
+ if (configLoaded) {
202
+ const usersSlug = usersSlugOf(plugin?.pluginOptions ?? {});
203
+ const { finding, issues: userIssues } = analyzeUsersCollection(findUsersCollection(config, usersSlug), 'roles');
204
+ users = finding;
205
+ for (const issue of userIssues) {
206
+ if (issue.code === 'injected-field-collision' ||
207
+ issue.code === 'roles-field-not-select' ||
208
+ issue.code === 'users-collection-missing') {
209
+ blockers.push(issue);
210
+ }
211
+ else {
212
+ warnings.push(issue);
213
+ }
182
214
  }
183
215
  }
184
216
  const source = scanSource(srcDir);
@@ -194,7 +226,10 @@ export async function runDoctor(options) {
194
226
  let database = null;
195
227
  if (databaseUrl !== undefined && databaseUrl !== '') {
196
228
  try {
197
- const found = await introspectDatabase(databaseUrl);
229
+ const sourceTables = options.sourceMapJson === undefined
230
+ ? undefined
231
+ : resolveSourceTables(parseSourceMapJson(options.sourceMapJson));
232
+ const found = await introspectDatabase(databaseUrl, { sourceTables });
198
233
  database = found;
199
234
  if (found.unverifiedUsers !== null && found.unverifiedUsers > 0) {
200
235
  warnings.push({
@@ -202,12 +237,23 @@ export async function runDoctor(options) {
202
237
  detail: `${found.unverifiedUsers} user(s) have emailVerified = false: they will not JIT-link on a provider sign-in; they need a verified email (or a role manager's manual link) after migration`,
203
238
  });
204
239
  }
240
+ // Fail closed on the source layout (issue #68): a mapped model
241
+ // whose table is absent blocks until --source-map explains it.
242
+ for (const table of found.missingTables ?? []) {
243
+ blockers.push({
244
+ code: 'source-table-missing',
245
+ detail: `model '${table.model}' expects source table '${table.table}', which does not exist — if your layout renamed it, pass --source-map '{"${table.model}":"<table>"}', or map it null to record it as not installed`,
246
+ });
247
+ }
205
248
  for (const orphan of found.orphans) {
206
249
  blockers.push({
207
250
  code: 'orphan-rows',
208
251
  detail: `${orphan.count} orphaned row(s) of kind '${orphan.kind}': the importer refuses unmappable references rather than silently skipping them`,
209
252
  });
210
253
  }
254
+ for (const skip of found.skippedChecks ?? []) {
255
+ warnings.push({ code: 'orphan-check-skipped', detail: skip });
256
+ }
211
257
  }
212
258
  catch (error) {
213
259
  warnings.push({
@@ -1 +1 @@
1
- {"version":3,"file":"run-doctor.js","sourceRoot":"","sources":["../../src/doctor/run-doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AACnG,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAuBxE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA+B;IAC1D;QACE,KAAK,EAAE,+DAA+D;QACtE,MAAM,EACJ,2SAA2S;KAC9S;IACD;QACE,KAAK,EAAE,0CAA0C;QACjD,MAAM,EACJ,2JAA2J;KAC9J;IACD;QACE,KAAK,EAAE,oCAAoC;QAC3C,MAAM,EACJ,sKAAsK;KACzK;IACD;QACE,KAAK,EAAE,qCAAqC;QAC5C,MAAM,EACJ,+MAA+M;KAClN;CACF,CAAA;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAe;IAGnD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;QAC1E,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,CAAA;IAC9B,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,eAAe,IAAI,MAAM,EAAE,CAAC;YAC9D,MAAM,OAAO,GAAa,MAAqC,CAAC,aAAa,CAAA;YAC7E,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,CAAA;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,aAAsC;IACxE,MAAM,SAAS,GAAY,aAAa,CAAC,iBAAiB,CAAA;IAC1D,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9D,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YAC1E,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACrB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,WAAW,CAAC,aAAsC;IAChE,MAAM,KAAK,GAAY,aAAa,CAAC,KAAK,CAAA;IAC1C,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE;QAC3E,CAAC,CAAC,KAAK,CAAC,IAAI;QACZ,CAAC,CAAC,OAAO,CAAA;AACb,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,eAAe,CAAC,MAAe;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5D,OAAO,EAAE,CAAA;IACX,CAAC;IACD,OAAO,MAAM,CAAC,WAAW;SACtB,MAAM,CAAC,QAAQ,CAAC;SAChB,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;SACpC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAA;AAC/D,CAAC;AAED,0EAA0E;AAC1E,KAAK,UAAU,iBAAiB,CAAC,IAAY;IAC3C,MAAM,GAAG,GAAY,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAA;IAC3D,IAAI,MAAM,GAAY,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;IAC3E,uEAAuE;IACvE,oEAAoE;IACpE,IAAI,OAAQ,MAAgD,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;QAClF,MAAM,GAAG,MAAM,MAAM,CAAA;IACvB,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAsB;IACpD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,iBAAiB,CAAA;IAC1D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAA;IAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IACrC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAEjF,MAAM,QAAQ,GAAG,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAA;IAC9D,MAAM,QAAQ,GAAkB,EAAE,CAAA;IAClC,MAAM,QAAQ,GAAkB,EAAE,CAAA;IAClC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,cAAc;gBACnC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE;aAC7C,CAAC,CAAA;QACJ,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACxC,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,kBAAkB;gBACvC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE;aAC7C,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAC5C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,2BAA2B;YACjC,MAAM,EACJ,oHAAoH;SACvH,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,wBAAwB;YAC9B,MAAM,EACJ,4MAA4M;SAC/M,CAAC,CAAA;IACJ,CAAC;IAED,kEAAkE;IAClE,sEAAsE;IACtE,kEAAkE;IAClE,IAAI,YAAoB,CAAA;IACxB,IAAI,CAAC;QACH,YAAY,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,YAAY,GAAG,EAAE,CAAA;IACnB,CAAC;IACD,MAAM,SAAS,GAAG;QAChB,GAAG,IAAI,GAAG,CAAC;YACT,GAAG,mBAAmB,CAAC,MAAM,EAAE,aAAa,IAAI,EAAE,CAAC;YACnD,GAAG,0BAA0B,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACtD,GAAG,uBAAuB,CAAC,YAAY,CAAC;SACzC,CAAC;KACH,CAAA;IACD,MAAM,cAAc,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;IACjD,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;YAC1C,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,4BAA4B;gBAClC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE;aAC3C,CAAC,CAAA;QACJ,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,KAAK,aAAa,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC7E,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAC9F,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,aAAa,IAAI,EAAE,CAAC,CAAA;IAC1D,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,sBAAsB,CACnE,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,EACtC,OAAO,CACR,CAAA;IACD,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,IACE,KAAK,CAAC,IAAI,KAAK,0BAA0B;YACzC,KAAK,CAAC,IAAI,KAAK,wBAAwB;YACvC,KAAK,CAAC,IAAI,KAAK,0BAA0B,EACzC,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IACjC,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,uCAAuC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qIAAqI;aACpO,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAA;IACnE,IAAI,QAAQ,GAA6B,IAAI,CAAA;IAC7C,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAA;YACnD,QAAQ,GAAG,KAAK,CAAA;YAChB,IAAI,KAAK,CAAC,eAAe,KAAK,IAAI,IAAI,KAAK,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;gBAChE,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,kBAAkB;oBACxB,MAAM,EAAE,GAAG,KAAK,CAAC,eAAe,iKAAiK;iBAClM,CAAC,CAAA;YACJ,CAAC;YACD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,aAAa;oBACnB,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,6BAA6B,MAAM,CAAC,IAAI,kFAAkF;iBAClJ,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,sBAAsB;gBAC5B,MAAM,EAAE,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aACpG,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,wBAAwB;YAC9B,MAAM,EACJ,uHAAuH;SAC1H,CAAC,CAAA;IACJ,CAAC;IAED,OAAO;QACL,QAAQ;QACR,OAAO,EAAE,cAAc;QACvB,KAAK;QACL,MAAM;QACN,QAAQ;QACR,gBAAgB;QAChB,QAAQ;QACR,QAAQ;KACT,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"run-doctor.js","sourceRoot":"","sources":["../../src/doctor/run-doctor.ts"],"names":[],"mappings":"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"}
@@ -6,5 +6,10 @@ import type { SourceFinding } from './types.js';
6
6
  * access-control drift — until `reqUser: 'document'` lands (#57).
7
7
  */
8
8
  export declare const projectedUserFields: ReadonlySet<string>;
9
+ /**
10
+ * Every scannable file under `dir` — the walk/skip rules the source
11
+ * scan uses, shared with the plugin factory scan (issue #71).
12
+ */
13
+ export declare function listSourceFiles(dir: string): readonly string[];
9
14
  export declare function scanSource(srcDir: string): SourceFinding[];
10
15
  //# sourceMappingURL=source-scan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"source-scan.d.ts","sourceRoot":"","sources":["../../src/doctor/source-scan.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AA+B/C;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CASlD,CAAA;AA4BF,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,CAuE1D"}
1
+ {"version":3,"file":"source-scan.d.ts","sourceRoot":"","sources":["../../src/doctor/source-scan.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AA+B/C;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CASlD,CAAA;AA4BF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAI9D;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,CAuE1D"}
@@ -69,6 +69,15 @@ function walk(dir, into) {
69
69
  }
70
70
  }
71
71
  }
72
+ /**
73
+ * Every scannable file under `dir` — the walk/skip rules the source
74
+ * scan uses, shared with the plugin factory scan (issue #71).
75
+ */
76
+ export function listSourceFiles(dir) {
77
+ const files = [];
78
+ walk(dir, files);
79
+ return files;
80
+ }
72
81
  export function scanSource(srcDir) {
73
82
  const files = [];
74
83
  walk(srcDir, files);
@@ -1 +1 @@
1
- {"version":3,"file":"source-scan.js","sourceRoot":"","sources":["../../src/doctor/source-scan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"source-scan.js","sourceRoot":"","sources":["../../src/doctor/source-scan.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,8 @@ export type PluginFinding = {
26
26
  readonly id: string;
27
27
  readonly status: 'supported' | 'auto-declarable' | 'unprobed' | 'unsupported' | 'removed-upstream';
28
28
  readonly detail: string;
29
+ /** Files under `--src` whose source names this plugin (issue #71). */
30
+ readonly files?: readonly string[];
29
31
  };
30
32
  /** The users collection, as the migration will meet it. */
31
33
  export type UsersFinding = {
@@ -66,6 +68,16 @@ export type DatabaseFinding = {
66
68
  readonly kind: string;
67
69
  readonly count: number;
68
70
  }[];
71
+ /**
72
+ * Mapped source models whose table is absent (issue #68) — blockers
73
+ * unless `--source-map` records the model as not installed.
74
+ */
75
+ readonly missingTables?: readonly {
76
+ readonly model: string;
77
+ readonly table: string;
78
+ }[];
79
+ /** Orphan checks that could not run, with the reason (issue #68). */
80
+ readonly skippedChecks?: readonly string[];
69
81
  };
70
82
  /** Default-behaviour changes in payload-auth-link 0.7.0 that bite. */
71
83
  export type BehaviourChange = {