@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,4 +1,5 @@
1
1
  import { existsSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { defaultTargetSlugs, resolveSourceTables, sourceModelNames, } from './types.js';
2
3
  /**
3
4
  * Manifest lifecycle (issue #50): `verify` checks both sides, `rollback`
4
5
  * undoes exactly what the manifest records, and `finalize` marks the
@@ -22,26 +23,25 @@ export function writeManifest(manifest, path) {
22
23
  writeFileSync(path, `${JSON.stringify(manifest, null, 2)}\n`);
23
24
  }
24
25
  /**
25
- * Verify (issue #50): per-model counts match, every source user has
26
- * exactly one target row, every credential account resolves to its
27
- * user, every API key carries its hash with a resolvable owner, and
28
- * every member/invitation references an existing org and user. Exits
29
- * non-zero on any mismatch (the caller maps `ok` to the exit code).
26
+ * Verify (issues #50, #68, #69): fail closed on the source layout
27
+ * (the probe runs first), per-model counts match EXACTLY (zero never
28
+ * skips; every mapped model is either counted or explicitly
29
+ * null-mapped), every source user has exactly one target row, every
30
+ * imported user resolves through exactly one `better-auth` identity
31
+ * pointing at their ba-users id, every credential account resolves to
32
+ * its user, every API key carries its hash with a resolvable owner,
33
+ * and every member/invitation references an existing org and user.
34
+ * Exits non-zero on any mismatch (the caller maps `ok` to the exit
35
+ * code).
30
36
  */
31
37
  export async function verifyImport(options) {
32
38
  const { payload, sourceConnectionString } = options;
33
39
  const slugs = {
34
- ...{
35
- user: 'ba-users',
36
- account: 'ba-accounts',
37
- session: 'ba-sessions',
38
- apikey: 'ba-apikey',
39
- organization: 'ba-organization',
40
- member: 'ba-member',
41
- invitation: 'ba-invitation',
42
- },
40
+ ...defaultTargetSlugs,
43
41
  ...(options.slugs ?? {}),
44
42
  };
43
+ const sourceTables = resolveSourceTables(options.sourceTables);
44
+ const sessions = options.sessions ?? 'carry';
45
45
  const issues = [];
46
46
  const checks = [];
47
47
  const check = (name, passed, detail) => {
@@ -55,36 +55,66 @@ export async function verifyImport(options) {
55
55
  return counted.totalDocs;
56
56
  };
57
57
  // Source side, read directly.
58
- const { openSource, readSourceUsers, countTables } = await import('./source.js');
58
+ const { openSource, probeSourceLayout, readSourceUsers, countTables } = await import('./source.js');
59
59
  const client = await openSource(sourceConnectionString);
60
60
  try {
61
- const sourceCounts = await countTables(client, [
62
- 'users',
63
- 'accounts',
64
- 'sessions',
65
- 'verifications',
66
- 'api_keys',
67
- 'jwks',
68
- 'organizations',
69
- 'members',
70
- 'invitations',
71
- ]);
72
- const users = await readSourceUsers(client);
73
- // 1. per-model counts match (sessions only when carried).
61
+ // Fail closed (issue #68): a missing mapped table or column aborts
62
+ // the check with an actionable report instead of reading zeros.
63
+ const probe = await probeSourceLayout(client, sourceTables);
64
+ if (probe.length > 0) {
65
+ for (const issue of probe) {
66
+ issues.push({ code: 'source-table-missing', detail: issue.reason });
67
+ }
68
+ return { ok: false, issues, checks };
69
+ }
70
+ const sourceCounts = await countTables(client, sourceModelNames.map((model) => sourceTables[model]).filter((t) => t !== null));
71
+ const users = await readSourceUsers(client, sourceTables);
72
+ // 1. per-model counts match EXACTLY (issue #68) — zero never skips.
73
+ // A null-mapped model is recorded as skipped-by-config, visibly.
74
74
  const countPairs = [
75
- ['users', String(slugs['user']), sourceCounts['users'] ?? 0],
76
- ['accounts', String(slugs['account']), sourceCounts['accounts'] ?? 0],
77
- ['api keys', String(slugs['apikey']), sourceCounts['api_keys'] ?? 0],
78
- ['organizations', String(slugs['organization']), sourceCounts['organizations'] ?? 0],
79
- ['members', String(slugs['member']), sourceCounts['members'] ?? 0],
80
- ['invitations', String(slugs['invitation']), sourceCounts['invitations'] ?? 0],
75
+ { label: 'users', table: sourceTables['users'], collection: String(slugs['user']) },
76
+ { label: 'accounts', table: sourceTables['accounts'], collection: String(slugs['account']) },
77
+ {
78
+ label: 'sessions',
79
+ table: sessions === 'carry' ? sourceTables['sessions'] : null,
80
+ collection: String(slugs['session']),
81
+ },
82
+ {
83
+ label: 'verifications',
84
+ table: sourceTables['verifications'],
85
+ collection: String(slugs['verification']),
86
+ },
87
+ { label: 'api keys', table: sourceTables['api_keys'], collection: String(slugs['apikey']) },
88
+ { label: 'jwks', table: sourceTables['jwks'], collection: String(slugs['jwks']) },
89
+ {
90
+ label: 'organizations',
91
+ table: sourceTables['organizations'],
92
+ collection: String(slugs['organization']),
93
+ },
94
+ { label: 'members', table: sourceTables['members'], collection: String(slugs['member']) },
95
+ {
96
+ label: 'invitations',
97
+ table: sourceTables['invitations'],
98
+ collection: String(slugs['invitation']),
99
+ },
81
100
  ];
82
- for (const [label, collection, expected] of countPairs) {
83
- if (expected === 0) {
101
+ for (const pair of countPairs) {
102
+ if (pair.table === null) {
103
+ checks.push({
104
+ name: `count ${pair.label} (skipped: null-mapped — not installed on the source)`,
105
+ passed: true,
106
+ });
84
107
  continue;
85
108
  }
86
- const actual = await targetCounts(collection);
87
- check(`count ${label}`, actual >= expected, `expected >= ${expected} ${label} in ${collection}, found ${actual}`);
109
+ const expected = sourceCounts[pair.table] ?? 0;
110
+ const actual = await targetCounts(pair.collection);
111
+ check(`count ${pair.label}`, actual === expected, `expected exactly ${expected} ${pair.label} in ${pair.collection}, found ${actual}`);
112
+ }
113
+ if (sessions === 'drop') {
114
+ checks.push({
115
+ name: 'count sessions (skipped: the import dropped them)',
116
+ passed: true,
117
+ });
88
118
  }
89
119
  // 2. every source user has exactly one target row and its host doc.
90
120
  let userMatches = 0;
@@ -106,6 +136,67 @@ export async function verifyImport(options) {
106
136
  }
107
137
  check('each source user has exactly one target row', userIssues === 0, `${userIssues} user(s) without exactly one ${String(slugs['user'])} row`);
108
138
  void userMatches;
139
+ // 2b. every imported user resolves through EXACTLY ONE better-auth
140
+ // identity pointing at their ba-users id (issue #69) — that is the
141
+ // lookup findByProviderIdentity issues on the next provider
142
+ // sign-in. The host docs also carry the stored roles (issue #68's
143
+ // users_role accounting) whenever the host declares the field.
144
+ let identityIssues = 0;
145
+ let roleMismatchDocs = 0;
146
+ let hostDocsWithRoles = 0;
147
+ for (const user of users) {
148
+ const hostId = Number(user.id);
149
+ if (!Number.isSafeInteger(hostId)) {
150
+ identityIssues += 1;
151
+ continue;
152
+ }
153
+ let doc;
154
+ try {
155
+ doc = await payload.findByID({
156
+ collection: 'users',
157
+ id: hostId,
158
+ depth: 0,
159
+ overrideAccess: true,
160
+ });
161
+ }
162
+ catch {
163
+ identityIssues += 1;
164
+ continue;
165
+ }
166
+ if (typeof doc !== 'object' || doc === null) {
167
+ identityIssues += 1;
168
+ continue;
169
+ }
170
+ const record = doc;
171
+ const identities = Array.isArray(record['identities'])
172
+ ? record['identities']
173
+ : [];
174
+ const resolving = identities.filter((entry) => typeof entry === 'object' &&
175
+ entry !== null &&
176
+ entry['providerId'] === 'better-auth' &&
177
+ String(entry['providerUserId']) === String(user.id));
178
+ if (identities.length !== 1 || resolving.length !== 1) {
179
+ identityIssues += 1;
180
+ }
181
+ const roles = record['roles'];
182
+ if (Array.isArray(roles)) {
183
+ hostDocsWithRoles += 1;
184
+ const stored = new Set(roles.map((role) => String(role)));
185
+ if (!user.roles.every((role) => stored.has(role))) {
186
+ roleMismatchDocs += 1;
187
+ }
188
+ }
189
+ }
190
+ check('every imported user resolves through one better-auth identity', identityIssues === 0, `${identityIssues} user(s) without exactly one better-auth identity resolving to their ba-users id`);
191
+ if (hostDocsWithRoles > 0) {
192
+ check('source roles carried onto the host docs', roleMismatchDocs === 0, `${roleMismatchDocs} host doc(s) missing stored role values`);
193
+ }
194
+ else if (sourceTables['users_role'] !== null && users.some((user) => user.roles.length > 0)) {
195
+ checks.push({
196
+ name: 'source roles carried onto the host docs (skipped: the host users carry no roles field)',
197
+ passed: true,
198
+ });
199
+ }
109
200
  // 3. every credential account resolves to its user.
110
201
  const accounts = await payload.find({
111
202
  collection: String(slugs['account']),
@@ -140,7 +231,8 @@ export async function verifyImport(options) {
140
231
  }
141
232
  }
142
233
  check('every account resolves to its user (credential hashes intact)', orphanAccounts === 0, `${orphanAccounts} account(s) with a missing user or empty credential hash`);
143
- check('credential accounts carry hashes', sourceCounts.accounts === 0 || credentialAccounts > 0, 'no credential account carries a password hash');
234
+ const sourceAccountsCount = sourceTables['accounts'] === null ? 0 : (sourceCounts[sourceTables['accounts']] ?? 0);
235
+ check('credential accounts carry hashes', sourceAccountsCount === 0 || credentialAccounts > 0, 'no credential account carries a password hash');
144
236
  // 4. API keys: hash present, owner resolves, rate-limit state kept.
145
237
  const keys = await payload.find({
146
238
  collection: String(slugs['apikey']),
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/importer/lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/importer/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,12 @@ export type ImportCommandOptions = {
17
17
  readonly sessions: 'carry' | 'drop';
18
18
  readonly manifestPath?: string | undefined;
19
19
  readonly slugsJson?: string | undefined;
20
+ /**
21
+ * The `--source-map` JSON (issue #68): model → source table name, or
22
+ * `null` for "model not installed". Missing mapped tables abort the
23
+ * run before anything is written without it.
24
+ */
25
+ readonly sourceMapJson?: string | undefined;
20
26
  readonly json?: boolean;
21
27
  readonly log?: (message: string) => void;
22
28
  readonly loadPayload?: (configPath: string) => Promise<import('payload').Payload>;
@@ -1 +1 @@
1
- {"version":3,"file":"run-import.d.ts","sourceRoot":"","sources":["../../src/importer/run-import.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,YAAY,EAElB,MAAM,YAAY,CAAA;AAEnB;;;;;;;;;GASG;AAEH,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAA;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,SAAS,EAAE,OAAO,CAAC,CAAA;CAClF,CAAA;AA8DD,8EAA8E;AAC9E,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC;IAC/E,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,IAAI,EAAE,UAAU,CAAA;IAChB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;CAC9B,CAAC,CA0ED;AAED,4BAA4B;AAC5B,wBAAsB,SAAS,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC,CAiBpF;AAED,8BAA8B;AAC9B,wBAAsB,WAAW,CAC/B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAahD;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CACzB,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,cAAc,GAAG,KAAK,CAAC,GAC1D,OAAO,CAAC,cAAc,CAAC,CAYzB"}
1
+ {"version":3,"file":"run-import.d.ts","sourceRoot":"","sources":["../../src/importer/run-import.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAA;AAUvB,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,YAAY,EAGlB,MAAM,YAAY,CAAA;AAEnB;;;;;;;;;GASG;AAEH,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAA;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,SAAS,EAAE,OAAO,CAAC,CAAA;CAClF,CAAA;AAkFD,8EAA8E;AAC9E,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC;IAC/E,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,IAAI,EAAE,UAAU,CAAA;IAChB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;CAC9B,CAAC,CAgGD;AAED,4BAA4B;AAC5B,wBAAsB,SAAS,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC,CAwCpF;AAED,8BAA8B;AAC9B,wBAAsB,WAAW,CAC/B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAahD;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CACzB,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,cAAc,GAAG,KAAK,CAAC,GAC1D,OAAO,CAAC,cAAc,CAAC,CAYzB"}
@@ -2,8 +2,8 @@ import { isRecord } from '@payload-auth-link/core';
2
2
  import { pathToFileURL } from 'node:url';
3
3
  import { applyImport, summarizePlanRows } from './apply.js';
4
4
  import { defaultManifestPath, finalizeManifest, readManifest, rollbackImport, verifyImport, } from './lifecycle.js';
5
- import { countTables, findOrphans, openSource, unverifiedEmails } from './source.js';
6
- import { defaultTargetSlugs, } from './types.js';
5
+ import { countTables, findOrphans, openSource, probeSourceLayout, readSourceUsers, unverifiedEmails, } from './source.js';
6
+ import { defaultTargetSlugs, parseSourceMapJson, presentTables, resolveSourceTables, } from './types.js';
7
7
  const log_ = (options) => options.log ?? (() => { });
8
8
  async function loadPayloadInstance(configPath) {
9
9
  // Lazy: `doctor` never needs Payload, and a cold CLI should not pay
@@ -26,30 +26,41 @@ function slugsOf(options) {
26
26
  }
27
27
  return { ...defaultTargetSlugs, ...parsed };
28
28
  }
29
+ /** The resolved source layout (`--source-map` over the default layout). */
30
+ function sourceTablesOf(options) {
31
+ return resolveSourceTables(options.sourceMapJson === undefined ? undefined : parseSourceMapJson(options.sourceMapJson));
32
+ }
33
+ /**
34
+ * Fail-closed probe (issue #68): runs FIRST, before any plan, read, or
35
+ * Payload boot. Findings come back as unmappable rows — the caller's
36
+ * exit-1 path — so nothing is silently read as empty.
37
+ */
38
+ async function probeOrFail(options, log) {
39
+ const client = await openSource(options.databaseUrl);
40
+ try {
41
+ const issues = await probeSourceLayout(client, sourceTablesOf(options));
42
+ for (const issue of issues) {
43
+ log(` X ${issue.model}: ${issue.reason}`);
44
+ }
45
+ return issues;
46
+ }
47
+ finally {
48
+ await client.end();
49
+ }
50
+ }
29
51
  /** Plan-only pass: counts, orphans, unverified users, warnings. */
30
- async function buildPlan(options) {
52
+ async function buildPlan(options, sourceTables) {
31
53
  const client = await openSource(options.databaseUrl);
32
54
  try {
33
- const sourceCounts = await countTables(client, [
34
- 'users',
35
- 'accounts',
36
- 'sessions',
37
- 'verifications',
38
- 'api_keys',
39
- 'jwks',
40
- 'organizations',
41
- 'members',
42
- 'invitations',
43
- 'users_role',
44
- ]);
45
- const orphans = await findOrphans(client);
55
+ const sourceCounts = await countTables(client, presentTables(sourceTables));
56
+ const { orphans, skipped } = await findOrphans(client, sourceTables);
46
57
  return {
47
58
  sourceCounts,
48
59
  plan: {
49
60
  rows: [],
50
61
  unmappable: orphans,
51
62
  sessions: options.sessions,
52
- warnings: [],
63
+ warnings: skipped.map((reason) => `orphan check ${reason}`),
53
64
  },
54
65
  };
55
66
  }
@@ -61,12 +72,31 @@ async function buildPlan(options) {
61
72
  export async function runFromPayloadAuth(options) {
62
73
  const log = log_(options);
63
74
  const slugs = slugsOf(options);
64
- const { plan: basePlan, sourceCounts } = await buildPlan(options);
75
+ const sourceTables = sourceTablesOf(options);
76
+ // The probe runs before anything else (issue #68): a missing mapped
77
+ // table or column aborts here — exit 1, nothing planned or written.
78
+ const probeIssues = await probeOrFail(options, log);
79
+ if (probeIssues.length > 0) {
80
+ return {
81
+ exitCode: 1,
82
+ plan: {
83
+ rows: [],
84
+ unmappable: probeIssues.map((issue) => ({
85
+ model: issue.model,
86
+ key: issue.key,
87
+ reason: issue.reason,
88
+ })),
89
+ sessions: options.sessions,
90
+ warnings: [],
91
+ },
92
+ unverified: [],
93
+ };
94
+ }
95
+ const { plan: basePlan, sourceCounts } = await buildPlan(options, sourceTables);
65
96
  const unverified = await (async () => {
66
97
  const client = await openSource(options.databaseUrl);
67
98
  try {
68
- const { readSourceUsers } = await import('./source.js');
69
- return unverifiedEmails(await readSourceUsers(client));
99
+ return unverifiedEmails(await readSourceUsers(client, sourceTables));
70
100
  }
71
101
  finally {
72
102
  await client.end();
@@ -100,6 +130,7 @@ export async function runFromPayloadAuth(options) {
100
130
  sourceCounts,
101
131
  sourceDatabase: options.databaseUrl.replace(/\/\/[^@]*@/, '//***@'),
102
132
  slugs,
133
+ sourceTables,
103
134
  log,
104
135
  });
105
136
  const plan = {
@@ -130,11 +161,32 @@ export async function runFromPayloadAuth(options) {
130
161
  /** The `verify` command. */
131
162
  export async function runVerify(options) {
132
163
  const log = log_(options);
164
+ // The probe runs first (issue #68): a missing mapped table fails the
165
+ // check with a blocker — before any Payload boot or read.
166
+ const probeIssues = await probeOrFail(options, log);
167
+ if (probeIssues.length > 0) {
168
+ const result = {
169
+ ok: false,
170
+ issues: probeIssues.map((issue) => ({
171
+ code: 'source-table-missing',
172
+ detail: issue.reason,
173
+ })),
174
+ checks: [],
175
+ };
176
+ if (!options.json) {
177
+ for (const issue of result.issues) {
178
+ log(` [${issue.code}] ${issue.detail}`);
179
+ }
180
+ }
181
+ return result;
182
+ }
133
183
  const payload = await (options.loadPayload ?? loadPayloadInstance)(options.configPath);
134
184
  const result = await verifyImport({
135
185
  payload,
136
186
  sourceConnectionString: options.databaseUrl,
137
187
  slugs: slugsOf(options),
188
+ sourceTables: sourceTablesOf(options),
189
+ sessions: options.sessions,
138
190
  });
139
191
  if (!options.json) {
140
192
  for (const check of result.checks) {
@@ -1 +1 @@
1
- {"version":3,"file":"run-import.js","sourceRoot":"","sources":["../../src/importer/run-import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC3D,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,YAAY,GAEb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AACpF,OAAO,EACL,kBAAkB,GAKnB,MAAM,YAAY,CAAA;AAyBnB,MAAM,IAAI,GAAG,CAAC,OAA0C,EAA+B,EAAE,CACvF,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;AAE3B,KAAK,UAAU,mBAAmB,CAAC,UAAkB;IACnD,oEAAoE;IACpE,gDAAgD;IAChD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAA;IAC9C,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAyB,CAAA;IAClF,IAAI,MAAM,GAAY,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;IAC3E,IAAI,OAAQ,MAAgD,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;QAClF,MAAM,GAAG,MAAM,MAAM,CAAA;IACvB,CAAC;IACD,OAAO,UAAU,CAAC,EAAE,MAAM,EAAE,MAAoD,EAAE,CAAC,CAAA;AACrF,CAAC;AAED,SAAS,OAAO,CAAC,OAA6B;IAC5C,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAClC,CAAC;IACD,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACrD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAA;IAC9E,CAAC;IACD,OAAO,EAAE,GAAG,kBAAkB,EAAE,GAAI,MAAiC,EAAE,CAAA;AACzE,CAAC;AAED,mEAAmE;AACnE,KAAK,UAAU,SAAS,CAAC,OAA6B;IAIpD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IACpD,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE;YAC7C,OAAO;YACP,UAAU;YACV,UAAU;YACV,eAAe;YACf,UAAU;YACV,MAAM;YACN,eAAe;YACf,SAAS;YACT,aAAa;YACb,YAAY;SACb,CAAC,CAAA;QACF,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAA;QACzC,OAAO;YACL,YAAY;YACZ,IAAI,EAAE;gBACJ,IAAI,EAAE,EAAE;gBACR,UAAU,EAAE,OAAO;gBACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,QAAQ,EAAE,EAAE;aACb;SACF,CAAA;IACH,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,GAAG,EAAE,CAAA;IACpB,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAA6B;IAMpE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAA;IACzB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9B,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAA;IAEjE,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;QACnC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QACpD,IAAI,CAAC;YACH,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YACvD,OAAO,gBAAgB,CAAC,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC,CAAA;QACxD,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,GAAG,EAAE,CAAA;QACpB,CAAC;IACH,CAAC,CAAC,EAAE,CAAA;IAEJ,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,gEAAgE;QAChE,MAAM,IAAI,GAAe;YACvB,GAAG,QAAQ;YACX,QAAQ,EAAE;gBACR,GAAG,QAAQ,CAAC,QAAQ;gBACpB,GAAG,UAAU,CAAC,MAAM,4DAA4D;aACjF;SACF,CAAA;QACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,GAAG,CAAC,qDAAqD,CAAC,CAAA;YAC1D,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;QAC1C,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;IAC1C,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,mBAAmB,CAAA;IAChE,MAAM,gBAAgB,GAAG,YAAY,CAAC,YAAY,CAAC,CAAA;IAEnD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,mBAAmB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACtF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;QAC/B,OAAO;QACP,sBAAsB,EAAE,OAAO,CAAC,WAAW;QAC3C,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,gBAAgB;QAC1B,YAAY;QACZ,YAAY;QACZ,cAAc,EAAE,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC;QACnE,KAAK;QACL,GAAG;KACJ,CAAC,CAAA;IACF,MAAM,IAAI,GAAe;QACvB,GAAG,MAAM,CAAC,IAAI;QACd,QAAQ,EAAE;YACR,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ;YACvB,GAAG,UAAU,CAAC,MAAM,4DAA4D;SACjF;KACF,CAAA;IAED,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,GAAG,CACD,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3J,CAAA;QACH,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,GAAG,CAAC,OAAO,OAAO,EAAE,CAAC,CAAA;QACvB,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,GAAG,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;QACpD,CAAC;IACH,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM;QACN,IAAI;QACJ,UAAU;KACX,CAAA;AACH,CAAC;AAED,4BAA4B;AAC5B,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAA6B;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAA;IACzB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,mBAAmB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACtF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;QAChC,OAAO;QACP,sBAAsB,EAAE,OAAO,CAAC,WAAW;QAC3C,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;KACxB,CAAC,CAAA;IACF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QACzD,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,8BAA8B;AAC9B,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAA6B;IAE7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAA;IACzB,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,mBAAmB,CAAA;IAChE,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,CAAA;IAC3C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,kBAAkB,YAAY,wBAAwB,CAAC,CAAA;IACzE,CAAC;IACD,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;IAC/E,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,mBAAmB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACtF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAA;IAC/D,OAAO,MAAM,CAAA;AACf,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,WAAW,CACzB,OAA2D;IAE3D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAA;IACzB,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,mBAAmB,CAAA;IAChE,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,CAAA;IAC3C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,YAAY,qBAAqB,CAAC,CAAC,CAAA;IACvF,CAAC;IACD,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IAC1D,GAAG,CACD,8BAA8B,YAAY,8GAA8G,CACzJ,CAAA;IACD,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;AACnC,CAAC"}
1
+ {"version":3,"file":"run-import.js","sourceRoot":"","sources":["../../src/importer/run-import.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,16 @@
1
1
  import { Client } from 'pg';
2
- import type { Unmappable } from './types.js';
2
+ import { type ResolvedSourceTables, type SourceModel, type Unmappable } from './types.js';
3
3
  /**
4
4
  * Read side (issue #50): the payload-auth layout, straight from
5
5
  * Postgres. Rows are read with plain SELECTs — the source tables are
6
6
  * never modified until `finalize` (which only marks the manifest; the
7
7
  * drop itself stays the operator's step).
8
+ *
9
+ * Fail closed (issue #68): nothing here tolerates a missing table.
10
+ * `probeSourceLayout` is the gate — the run commands call it first and
11
+ * abort on any finding — so every read below assumes the mapped tables
12
+ * exist and throws if they don't. A customized layout renames tables
13
+ * with `--source-map`, never with silent skips.
8
14
  */
9
15
  /** One payload-auth source user with its role rows and accounts. */
10
16
  export type SourceUser = {
@@ -32,18 +38,55 @@ export type SourceAccount = {
32
38
  readonly refreshTokenExpiresAt: Date | null;
33
39
  };
34
40
  export type SourceRow = Record<string, unknown>;
41
+ /** One fail-closed finding: a mapped model's table or column is absent. */
42
+ export type SourceLayoutIssue = {
43
+ readonly model: SourceModel;
44
+ /** The table (or `table.column`) the probe looked for. */
45
+ readonly key: string;
46
+ /** Human reason, naming the table and the `--source-map` escape hatch. */
47
+ readonly reason: string;
48
+ };
35
49
  export declare function openSource(connectionString: string): Promise<Client>;
50
+ /**
51
+ * Fail-closed probe (issue #68): every mapped model's table must
52
+ * exist (a `null` mapping records "not installed" and is skipped),
53
+ * and every column the reads dereference must be present. The run
54
+ * commands call this FIRST and abort on any finding — nothing is
55
+ * read, planned, or written past a failed probe.
56
+ */
57
+ export declare function probeSourceLayout(client: Client, tables: ResolvedSourceTables): Promise<readonly SourceLayoutIssue[]>;
58
+ /**
59
+ * Row counts for the given (mapped, existing) tables. A missing table
60
+ * throws — the probe owns the structured "missing table" report, so a
61
+ * throw here means the probe was skipped.
62
+ */
36
63
  export declare function countTables(client: Client, tables: readonly string[]): Promise<Record<string, number>>;
37
64
  /** Every source user, with role rows and accounts attached. */
38
- export declare function readSourceUsers(client: Client): Promise<SourceUser[]>;
39
- /** Rows of one flat plugin table (sessions, verifications, apiKeys, jwks, …). */
65
+ export declare function readSourceUsers(client: Client, tables?: ResolvedSourceTables): Promise<SourceUser[]>;
66
+ /**
67
+ * Rows of one flat plugin table (sessions, verifications, apiKeys, jwks, …).
68
+ * A missing table throws — a `null` mapping keeps the caller from ever
69
+ * asking for it, and an unmapped missing table aborts at the probe.
70
+ */
40
71
  export declare function readFlatRows(client: Client, table: string, columns: readonly string[]): Promise<SourceRow[]>;
72
+ /** What the orphan sweep found, and which checks could not run (and why). */
73
+ export type OrphanScan = {
74
+ readonly orphans: readonly Unmappable[];
75
+ /** Checks skipped with a reason — reported, never silent (issue #68). */
76
+ readonly skipped: readonly string[];
77
+ };
41
78
  /**
42
79
  * Members and invitations reference organizations and users by numeric
43
80
  * id; the importer remaps to the target's baIds. Orphaned references
44
81
  * are unmappable — they abort the run rather than skip silently.
82
+ *
83
+ * Every check is table-mapped (issue #68). The api-key check probes
84
+ * its columns: better-auth names the owner reference `reference_id`
85
+ * (1.7 / payload-auth layouts) or `user_id` (1.6-era layouts); when
86
+ * neither exists the check is reported as skipped-with-reason instead
87
+ * of passing silently.
45
88
  */
46
- export declare function findOrphans(client: Client): Promise<readonly Unmappable[]>;
89
+ export declare function findOrphans(client: Client, tables?: ResolvedSourceTables): Promise<OrphanScan>;
47
90
  /** Users whose email never verified — reported, never granted `linkable`. */
48
91
  export declare function unverifiedEmails(users: readonly SourceUser[]): readonly string[];
49
92
  //# sourceMappingURL=source.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/importer/source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C;;;;;GAKG;AAEH,oEAAoE;AACpE,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAA;IACxB,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAA;CAC5C,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,oBAAoB,EAAE,IAAI,GAAG,IAAI,CAAA;IAC1C,QAAQ,CAAC,qBAAqB,EAAE,IAAI,GAAG,IAAI,CAAA;CAC5C,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE/C,wBAAsB,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI1E;AAoBD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,MAAM,EAAE,GACxB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAWjC;AAUD,+DAA+D;AAC/D,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAsD3E;AAED,iFAAiF;AACjF,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,OAAO,CAAC,SAAS,EAAE,CAAC,CAMtB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CA2ChF;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,MAAM,EAAE,CAEhF"}
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/importer/source.ts"],"names":[],"mappings":"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"}