@payload-auth-link/migrate 0.3.1 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +49 -6
- package/dist/cli.js.map +1 -1
- package/dist/codemods.d.ts +17 -8
- package/dist/codemods.d.ts.map +1 -1
- package/dist/codemods.js +439 -20
- package/dist/codemods.js.map +1 -1
- package/dist/doctor/database.d.ts +5 -1
- package/dist/doctor/database.d.ts.map +1 -1
- package/dist/doctor/database.js +98 -34
- package/dist/doctor/database.js.map +1 -1
- package/dist/doctor/plugins.d.ts +15 -0
- package/dist/doctor/plugins.d.ts.map +1 -1
- package/dist/doctor/plugins.js +43 -0
- package/dist/doctor/plugins.js.map +1 -1
- package/dist/doctor/run-doctor.d.ts +11 -0
- package/dist/doctor/run-doctor.d.ts.map +1 -1
- package/dist/doctor/run-doctor.js +66 -20
- package/dist/doctor/run-doctor.js.map +1 -1
- package/dist/doctor/source-scan.d.ts +5 -0
- package/dist/doctor/source-scan.d.ts.map +1 -1
- package/dist/doctor/source-scan.js +9 -0
- package/dist/doctor/source-scan.js.map +1 -1
- package/dist/doctor/types.d.ts +12 -0
- package/dist/doctor/types.d.ts.map +1 -1
- package/dist/exporters.d.ts +7 -0
- package/dist/exporters.d.ts.map +1 -1
- package/dist/exporters.js +36 -1
- package/dist/exporters.js.map +1 -1
- package/dist/importer/apply.d.ts +5 -0
- package/dist/importer/apply.d.ts.map +1 -1
- package/dist/importer/apply.js +61 -33
- package/dist/importer/apply.js.map +1 -1
- package/dist/importer/lifecycle.d.ts +15 -6
- package/dist/importer/lifecycle.d.ts.map +1 -1
- package/dist/importer/lifecycle.js +131 -39
- package/dist/importer/lifecycle.js.map +1 -1
- package/dist/importer/run-import.d.ts +6 -0
- package/dist/importer/run-import.d.ts.map +1 -1
- package/dist/importer/run-import.js +72 -20
- package/dist/importer/run-import.js.map +1 -1
- package/dist/importer/source.d.ts +47 -4
- package/dist/importer/source.d.ts.map +1 -1
- package/dist/importer/source.js +159 -27
- package/dist/importer/source.js.map +1 -1
- package/dist/importer/types.d.ts +33 -0
- package/dist/importer/types.d.ts.map +1 -1
- package/dist/importer/types.js +48 -0
- package/dist/importer/types.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/package.json +8 -11
- package/src/cli.ts +52 -6
- package/src/codemods.ts +537 -35
- package/src/doctor/database.ts +129 -46
- package/src/doctor/plugins.ts +51 -0
- package/src/doctor/run-doctor.ts +90 -25
- package/src/doctor/source-scan.ts +10 -0
- package/src/doctor/types.ts +9 -0
- package/src/exporters.ts +46 -1
- package/src/importer/apply.ts +78 -32
- package/src/importer/lifecycle.ts +163 -43
- package/src/importer/run-import.ts +102 -19
- package/src/importer/source.ts +214 -30
- package/src/importer/types.ts +86 -0
- package/src/index.ts +25 -2
package/dist/codemods.js
CHANGED
|
@@ -1,44 +1,463 @@
|
|
|
1
|
+
import * as ts from 'typescript';
|
|
2
|
+
// --- shared parsing helpers -----------------------------------------------
|
|
3
|
+
function parse(content) {
|
|
4
|
+
return ts.createSourceFile('codemod-input.ts', content, ts.ScriptTarget.Latest, true);
|
|
5
|
+
}
|
|
6
|
+
function lineOf(source, node) {
|
|
7
|
+
return source.getLineAndCharacterOfPosition(node.getStart(source)).line + 1;
|
|
8
|
+
}
|
|
9
|
+
function applySplices(content, splices) {
|
|
10
|
+
let out = content;
|
|
11
|
+
for (const splice of [...splices].sort((a, b) => b.start - a.start)) {
|
|
12
|
+
out = out.slice(0, splice.start) + splice.text + out.slice(splice.end);
|
|
13
|
+
}
|
|
14
|
+
return out;
|
|
15
|
+
}
|
|
16
|
+
function escapeRegExp(text) {
|
|
17
|
+
return text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
18
|
+
}
|
|
1
19
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* result), because a half-rewritten call site is worse than an
|
|
7
|
-
* explicit one.
|
|
20
|
+
* Whether the node sits where `await` is legal: inside an async
|
|
21
|
+
* function-like, or at module top level (top-level await). The cheap
|
|
22
|
+
* heuristic walks to the nearest enclosing function-like and looks for
|
|
23
|
+
* the `async` keyword (#70).
|
|
8
24
|
*/
|
|
25
|
+
function awaitContext(node) {
|
|
26
|
+
let current = node.parent;
|
|
27
|
+
while (current !== undefined) {
|
|
28
|
+
if (ts.isFunctionDeclaration(current) ||
|
|
29
|
+
ts.isMethodDeclaration(current) ||
|
|
30
|
+
ts.isArrowFunction(current) ||
|
|
31
|
+
ts.isFunctionExpression(current) ||
|
|
32
|
+
ts.isGetAccessorDeclaration(current) ||
|
|
33
|
+
ts.isSetAccessorDeclaration(current)) {
|
|
34
|
+
const async = current.modifiers?.some((modifier) => modifier.kind === ts.SyntaxKind.AsyncKeyword) === true;
|
|
35
|
+
return async ? 'awaitable' : 'sync-function';
|
|
36
|
+
}
|
|
37
|
+
current = current.parent;
|
|
38
|
+
}
|
|
39
|
+
return 'awaitable';
|
|
40
|
+
}
|
|
41
|
+
/** The module specifier of a static import declaration. */
|
|
42
|
+
function moduleSpecifierOf(statement) {
|
|
43
|
+
const specifier = statement.moduleSpecifier;
|
|
44
|
+
return ts.isStringLiteral(specifier) ? specifier.text : '';
|
|
45
|
+
}
|
|
46
|
+
function soleNamedElement(statement) {
|
|
47
|
+
const clause = statement.importClause;
|
|
48
|
+
return (clause !== undefined &&
|
|
49
|
+
clause.name === undefined &&
|
|
50
|
+
clause.namedBindings !== undefined &&
|
|
51
|
+
ts.isNamedImports(clause.namedBindings) &&
|
|
52
|
+
clause.namedBindings.elements.length === 1);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Splice that removes one named import element plus an adjacent comma,
|
|
56
|
+
* keeping the rest of the clause valid.
|
|
57
|
+
*/
|
|
58
|
+
function removeElementSplice(statement, element, source) {
|
|
59
|
+
const elements = statement.importClause?.namedBindings;
|
|
60
|
+
if (elements === undefined || !ts.isNamedImports(elements)) {
|
|
61
|
+
return { start: element.getStart(source), end: element.getEnd(), text: '' };
|
|
62
|
+
}
|
|
63
|
+
const index = elements.elements.indexOf(element);
|
|
64
|
+
const next = index >= 0 ? elements.elements[index + 1] : undefined;
|
|
65
|
+
if (next !== undefined) {
|
|
66
|
+
return { start: element.getStart(source), end: next.getStart(source), text: '' };
|
|
67
|
+
}
|
|
68
|
+
const previous = index > 0 ? elements.elements[index - 1] : undefined;
|
|
69
|
+
if (previous !== undefined) {
|
|
70
|
+
return { start: previous.getEnd(), end: element.getEnd(), text: '' };
|
|
71
|
+
}
|
|
72
|
+
return { start: element.getStart(source), end: element.getEnd(), text: '' };
|
|
73
|
+
}
|
|
74
|
+
// --- getPayloadAuth (#70.1) -------------------------------------------------
|
|
75
|
+
const payloadAuthModule = /^payload-auth(?:\/[A-Za-z0-9_./-]+)?$/;
|
|
76
|
+
function hasPayloadConfigImport(source) {
|
|
77
|
+
let found = false;
|
|
78
|
+
const visit = (node) => {
|
|
79
|
+
if (ts.isImportDeclaration(node)) {
|
|
80
|
+
if (moduleSpecifierOf(node) === '@payload-config') {
|
|
81
|
+
found = true;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else if (ts.isCallExpression(node) &&
|
|
85
|
+
node.expression.kind === ts.SyntaxKind.ImportKeyword &&
|
|
86
|
+
node.arguments.length === 1) {
|
|
87
|
+
const arg = node.arguments[0];
|
|
88
|
+
if (arg !== undefined && ts.isStringLiteral(arg) && arg.text === '@payload-config') {
|
|
89
|
+
found = true;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (!found) {
|
|
93
|
+
ts.forEachChild(node, visit);
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
visit(source);
|
|
97
|
+
return found;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Every `getPayloadAuth` (or aliased) import and reference in the file,
|
|
101
|
+
* classified: a call that can be fully rewritten carries its
|
|
102
|
+
* replacement; anything else carries its manual-site reason.
|
|
103
|
+
*/
|
|
104
|
+
function analyzePayloadAuth(content) {
|
|
105
|
+
const source = parse(content);
|
|
106
|
+
const imports = [];
|
|
107
|
+
for (const statement of source.statements) {
|
|
108
|
+
if (!ts.isImportDeclaration(statement) ||
|
|
109
|
+
!payloadAuthModule.test(moduleSpecifierOf(statement))) {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
const clause = statement.importClause;
|
|
113
|
+
if (clause === undefined ||
|
|
114
|
+
clause.namedBindings === undefined ||
|
|
115
|
+
!ts.isNamedImports(clause.namedBindings)) {
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
for (const element of clause.namedBindings.elements) {
|
|
119
|
+
const exported = element.propertyName ?? element.name;
|
|
120
|
+
if (!ts.isIdentifier(exported) || exported.text !== 'getPayloadAuth') {
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
imports.push({
|
|
124
|
+
statement,
|
|
125
|
+
element,
|
|
126
|
+
local: element.name.text,
|
|
127
|
+
typeOnly: clause.isTypeOnly || element.isTypeOnly,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
const locals = new Set(imports.map((imp) => imp.local));
|
|
132
|
+
const bindings = new Set();
|
|
133
|
+
for (const imp of imports) {
|
|
134
|
+
bindings.add(imp.element.name);
|
|
135
|
+
const exported = imp.element.propertyName;
|
|
136
|
+
if (exported !== undefined && ts.isIdentifier(exported)) {
|
|
137
|
+
bindings.add(exported);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const payloadConfig = hasPayloadConfigImport(source);
|
|
141
|
+
const refs = [];
|
|
142
|
+
const visit = (node) => {
|
|
143
|
+
if (ts.isIdentifier(node) && locals.has(node.text) && !bindings.has(node)) {
|
|
144
|
+
const parent = node.parent;
|
|
145
|
+
if (ts.isCallExpression(parent) && parent.expression === node) {
|
|
146
|
+
const context = awaitContext(parent);
|
|
147
|
+
const argCount = parent.arguments.length;
|
|
148
|
+
const firstArg = parent.arguments[0];
|
|
149
|
+
if (context === 'sync-function') {
|
|
150
|
+
refs.push({
|
|
151
|
+
node,
|
|
152
|
+
kind: 'call',
|
|
153
|
+
call: parent,
|
|
154
|
+
reason: `getPayloadAuth (line ${lineOf(source, parent)}) — the enclosing function is not async: make it async and use await getPayload({ config })`,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
else if (argCount === 0) {
|
|
158
|
+
if (payloadConfig) {
|
|
159
|
+
refs.push({
|
|
160
|
+
node,
|
|
161
|
+
kind: 'call',
|
|
162
|
+
call: parent,
|
|
163
|
+
replacement: '(await getPayload({ config }))',
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
refs.push({
|
|
168
|
+
node,
|
|
169
|
+
kind: 'call',
|
|
170
|
+
call: parent,
|
|
171
|
+
// The message spells the specifier without `from '…'`:
|
|
172
|
+
// shipped string literals must not read as imports
|
|
173
|
+
// (release:check scans for undeclared ones).
|
|
174
|
+
reason: `getPayloadAuth() (line ${lineOf(source, parent)}) — the no-arg form needs this file to import the payload config alias (@payload-config); add that import and use await getPayload({ config })`,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
else if (argCount === 1 && firstArg !== undefined) {
|
|
179
|
+
refs.push({
|
|
180
|
+
node,
|
|
181
|
+
kind: 'call',
|
|
182
|
+
call: parent,
|
|
183
|
+
replacement: `(await getPayload({ config: ${firstArg.getText(source)} }))`,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
refs.push({
|
|
188
|
+
node,
|
|
189
|
+
kind: 'call',
|
|
190
|
+
call: parent,
|
|
191
|
+
reason: `getPayloadAuth (line ${lineOf(source, parent)}) — unexpected call shape (${argCount} arguments); call await getPayload({ config }) by hand`,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
else if (ts.isTypeQueryNode(parent) && parent.exprName === node) {
|
|
196
|
+
refs.push({
|
|
197
|
+
node,
|
|
198
|
+
kind: 'type',
|
|
199
|
+
reason: `getPayloadAuth type reference (line ${lineOf(source, node)}) — use payload's own types instead: import type { Payload } from 'payload'`,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
refs.push({
|
|
204
|
+
node,
|
|
205
|
+
kind: 'value',
|
|
206
|
+
reason: `getPayloadAuth value reference (line ${lineOf(source, node)}) — rewrite by hand to await getPayload({ config })`,
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
ts.forEachChild(node, visit);
|
|
211
|
+
};
|
|
212
|
+
visit(source);
|
|
213
|
+
return { source, imports, refs };
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* The get-payload-auth rewrite (issue #70): ALL references rewritable,
|
|
217
|
+
* or nothing. A single manual site keeps the whole file's
|
|
218
|
+
* getPayloadAuth state untouched — the output must never reference a
|
|
219
|
+
* symbol no import provides.
|
|
220
|
+
*/
|
|
221
|
+
function rewritePayloadAuth(content) {
|
|
222
|
+
const { source, imports, refs } = analyzePayloadAuth(content);
|
|
223
|
+
if (imports.length === 0 && refs.length === 0) {
|
|
224
|
+
return content;
|
|
225
|
+
}
|
|
226
|
+
if (refs.some((ref) => ref.reason !== undefined)) {
|
|
227
|
+
return content;
|
|
228
|
+
}
|
|
229
|
+
if (imports.some((imp) => imp.typeOnly)) {
|
|
230
|
+
return content;
|
|
231
|
+
}
|
|
232
|
+
const splices = [];
|
|
233
|
+
for (const ref of refs) {
|
|
234
|
+
if (ref.kind === 'call' && ref.call !== undefined && ref.replacement !== undefined) {
|
|
235
|
+
splices.push({
|
|
236
|
+
start: ref.call.getStart(source),
|
|
237
|
+
end: ref.call.getEnd(),
|
|
238
|
+
text: ref.replacement,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
for (const imp of imports) {
|
|
243
|
+
if (soleNamedElement(imp.statement)) {
|
|
244
|
+
splices.push({
|
|
245
|
+
start: imp.statement.getStart(source),
|
|
246
|
+
end: imp.statement.getEnd(),
|
|
247
|
+
text: "import { getPayload } from 'payload'",
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
splices.push(removeElementSplice(imp.statement, imp.element, source));
|
|
252
|
+
splices.push({
|
|
253
|
+
start: imp.statement.getStart(source),
|
|
254
|
+
end: imp.statement.getStart(source),
|
|
255
|
+
text: "import { getPayload } from 'payload'\n",
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return applySplices(content, splices);
|
|
260
|
+
}
|
|
261
|
+
// --- <expr>.betterAuth.api.getSession (#70.2) -------------------------------
|
|
262
|
+
/** The receiver text when the callee is exactly `<expr>.betterAuth.api.getSession`. */
|
|
263
|
+
function betterAuthSessionReceiver(call, source) {
|
|
264
|
+
const callee = call.expression;
|
|
265
|
+
if (!ts.isPropertyAccessExpression(callee) || callee.name.text !== 'getSession') {
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
268
|
+
const api = callee.expression;
|
|
269
|
+
if (!ts.isPropertyAccessExpression(api) || api.name.text !== 'api') {
|
|
270
|
+
return null;
|
|
271
|
+
}
|
|
272
|
+
const betterAuth = api.expression;
|
|
273
|
+
if (!ts.isPropertyAccessExpression(betterAuth) || betterAuth.name.text !== 'betterAuth') {
|
|
274
|
+
return null;
|
|
275
|
+
}
|
|
276
|
+
// Aliased bindings (`const auth = payload.betterAuth`) are never
|
|
277
|
+
// rewritten — the rule matches only direct `.betterAuth.api` chains;
|
|
278
|
+
// findManualSites reports the surviving accessor.
|
|
279
|
+
return betterAuth.expression.getText(source);
|
|
280
|
+
}
|
|
281
|
+
/** The getSession argument text per #70: unwrap a lone `headers` object. */
|
|
282
|
+
function sessionArgsText(call, source) {
|
|
283
|
+
const arg = call.arguments[0];
|
|
284
|
+
if (call.arguments.length >= 1 &&
|
|
285
|
+
arg !== undefined &&
|
|
286
|
+
ts.isObjectLiteralExpression(arg) &&
|
|
287
|
+
arg.properties.length === 1) {
|
|
288
|
+
const prop = arg.properties[0];
|
|
289
|
+
if (prop !== undefined) {
|
|
290
|
+
if (ts.isPropertyAssignment(prop) && prop.name.getText(source) === 'headers') {
|
|
291
|
+
return prop.initializer.getText(source);
|
|
292
|
+
}
|
|
293
|
+
if (ts.isShorthandPropertyAssignment(prop) && prop.name.text === 'headers') {
|
|
294
|
+
return prop.name.getText(source);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
return call.arguments.map((entry) => entry.getText(source)).join(', ');
|
|
299
|
+
}
|
|
300
|
+
function rewriteBetterAuthGetSession(content) {
|
|
301
|
+
const source = parse(content);
|
|
302
|
+
const splices = [];
|
|
303
|
+
const visit = (node) => {
|
|
304
|
+
if (ts.isCallExpression(node)) {
|
|
305
|
+
const receiver = betterAuthSessionReceiver(node, source);
|
|
306
|
+
if (receiver !== null && awaitContext(node) !== 'sync-function') {
|
|
307
|
+
splices.push({
|
|
308
|
+
start: node.getStart(source),
|
|
309
|
+
end: node.getEnd(),
|
|
310
|
+
text: `(await authLinkServer(${receiver}).getSession(${sessionArgsText(node, source)}))`,
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
ts.forEachChild(node, visit);
|
|
315
|
+
};
|
|
316
|
+
visit(source);
|
|
317
|
+
return applySplices(content, splices);
|
|
318
|
+
}
|
|
319
|
+
// --- toNextJsHandler (#70.3) ------------------------------------------------
|
|
320
|
+
const nextJsHandlerOutput = 'export const GET = createRouteHandlers.GET\nexport const POST = createRouteHandlers.POST';
|
|
321
|
+
function collectNextJsHandlerImports(source) {
|
|
322
|
+
const imports = [];
|
|
323
|
+
for (const statement of source.statements) {
|
|
324
|
+
if (!ts.isImportDeclaration(statement) ||
|
|
325
|
+
moduleSpecifierOf(statement) !== 'better-auth/next-js') {
|
|
326
|
+
continue;
|
|
327
|
+
}
|
|
328
|
+
const clause = statement.importClause;
|
|
329
|
+
if (clause === undefined ||
|
|
330
|
+
clause.namedBindings === undefined ||
|
|
331
|
+
!ts.isNamedImports(clause.namedBindings)) {
|
|
332
|
+
continue;
|
|
333
|
+
}
|
|
334
|
+
for (const element of clause.namedBindings.elements) {
|
|
335
|
+
const imported = (element.propertyName ?? element.name).text;
|
|
336
|
+
if (imported !== 'toNextJsHandler') {
|
|
337
|
+
continue;
|
|
338
|
+
}
|
|
339
|
+
imports.push({ statement, element, local: element.name.text });
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
return imports;
|
|
343
|
+
}
|
|
344
|
+
function rewriteNextJsHandler(content) {
|
|
345
|
+
const source = parse(content);
|
|
346
|
+
const imports = collectNextJsHandlerImports(source);
|
|
347
|
+
if (imports.length === 0) {
|
|
348
|
+
return content;
|
|
349
|
+
}
|
|
350
|
+
// The export-assignment shape stays textual (same output as #53),
|
|
351
|
+
// now matching the aliased local name too.
|
|
352
|
+
let current = content;
|
|
353
|
+
for (const imp of imports) {
|
|
354
|
+
const pattern = new RegExp(`export\\s*\\{\\s*(\\w+)\\s+as\\s+GET\\s*,\\s*(\\w+)\\s+as\\s+POST\\s*\\}\\s*=\\s*${escapeRegExp(imp.local)}\\s*\\(\\s*payload\\.betterAuth\\s*\\)`, 'g');
|
|
355
|
+
current = current.replace(pattern, nextJsHandlerOutput);
|
|
356
|
+
}
|
|
357
|
+
// The import rewrite runs on the rewritten content.
|
|
358
|
+
const after = parse(current);
|
|
359
|
+
const splices = [];
|
|
360
|
+
for (const imp of collectNextJsHandlerImports(after)) {
|
|
361
|
+
if (soleNamedElement(imp.statement)) {
|
|
362
|
+
splices.push({
|
|
363
|
+
start: imp.statement.getStart(after),
|
|
364
|
+
end: imp.statement.getEnd(),
|
|
365
|
+
text: "import { createRouteHandlers } from '@payload-auth-link/next'",
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
splices.push(removeElementSplice(imp.statement, imp.element, after));
|
|
370
|
+
splices.push({
|
|
371
|
+
start: imp.statement.getStart(after),
|
|
372
|
+
end: imp.statement.getStart(after),
|
|
373
|
+
text: "import { createRouteHandlers } from '@payload-auth-link/next'\n",
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
return applySplices(current, splices);
|
|
378
|
+
}
|
|
379
|
+
// --- rules -------------------------------------------------------------------
|
|
9
380
|
export const codemodRules = [
|
|
10
381
|
{
|
|
11
382
|
id: 'get-payload-auth',
|
|
12
|
-
description: 'getPayloadAuth() -> getPayload({ config })',
|
|
13
|
-
apply:
|
|
14
|
-
.replace(/import\s*\{\s*getPayloadAuth\s*(?:,[^}]*)?\}\s*from\s*['"]payload-auth['"];?/g, "import { getPayload } from 'payload'")
|
|
15
|
-
.replace(/\bgetPayloadAuth\(\s*\)/g, 'await getPayload({ config })'),
|
|
383
|
+
description: 'getPayloadAuth() -> getPayload({ config }), import -> payload',
|
|
384
|
+
apply: rewritePayloadAuth,
|
|
16
385
|
},
|
|
17
386
|
{
|
|
18
387
|
id: 'better-auth-get-session',
|
|
19
388
|
description: 'payload.betterAuth.api.getSession({ headers }) -> authLinkServer(payload).getSession(headers)',
|
|
20
|
-
apply:
|
|
389
|
+
apply: rewriteBetterAuthGetSession,
|
|
21
390
|
},
|
|
22
391
|
{
|
|
23
392
|
id: 'to-next-js-handler',
|
|
24
393
|
description: 'toNextJsHandler(payload.betterAuth) -> createRouteHandlers from @payload-auth-link/next',
|
|
25
|
-
apply:
|
|
26
|
-
.replace(/import\s*\{\s*toNextJsHandler\s*\}\s*from\s*['"]better-auth\/next-js['"];?/g, "import { createRouteHandlers } from '@payload-auth-link/next'")
|
|
27
|
-
.replace(/export\s*\{\s*(\w+)\s+as\s+GET\s*,\s*(\w+)\s+as\s+POST\s*\}\s*=\s*toNextJsHandler\(\s*payload\.betterAuth\s*\)/g, 'export const GET = createRouteHandlers.GET\nexport const POST = createRouteHandlers.POST'),
|
|
394
|
+
apply: rewriteNextJsHandler,
|
|
28
395
|
},
|
|
29
396
|
];
|
|
30
397
|
/**
|
|
31
|
-
* Report call sites the rules cannot fully rewrite
|
|
32
|
-
*
|
|
398
|
+
* Report call sites the rules cannot fully rewrite (issue #70.4):
|
|
399
|
+
* EVERY remaining `getPayloadAuth` reference (calls, type references,
|
|
400
|
+
* the import itself), every surviving `payload.betterAuth` accessor
|
|
401
|
+
* (including `.betterAuth.api.<method>` and `$context`), and every
|
|
402
|
+
* `internalAdapter`. Nothing is silently ignored — the doctor counts
|
|
403
|
+
* these references, so the codemod must account for them.
|
|
33
404
|
*/
|
|
34
405
|
export function findManualSites(content) {
|
|
406
|
+
const source = parse(content);
|
|
35
407
|
const manual = [];
|
|
36
|
-
|
|
37
|
-
|
|
408
|
+
const reportedLines = new Set();
|
|
409
|
+
const { imports, refs } = analyzePayloadAuth(content);
|
|
410
|
+
for (const ref of refs) {
|
|
411
|
+
if (ref.reason !== undefined) {
|
|
412
|
+
manual.push(ref.reason);
|
|
413
|
+
reportedLines.add(lineOf(source, ref.node));
|
|
414
|
+
}
|
|
38
415
|
}
|
|
39
|
-
|
|
40
|
-
manual.push(
|
|
416
|
+
for (const imp of imports) {
|
|
417
|
+
manual.push(`getPayloadAuth import (line ${lineOf(source, imp.statement)}) — replace with import { getPayload } from 'payload'`);
|
|
418
|
+
reportedLines.add(lineOf(source, imp.statement));
|
|
41
419
|
}
|
|
420
|
+
const seenInternalsLines = new Set();
|
|
421
|
+
const visit = (node) => {
|
|
422
|
+
// A getPayloadAuth reference the import analysis did not cover (a
|
|
423
|
+
// local binding, no payload-auth import) is still reported.
|
|
424
|
+
if (ts.isIdentifier(node) &&
|
|
425
|
+
node.text === 'getPayloadAuth' &&
|
|
426
|
+
!reportedLines.has(lineOf(source, node))) {
|
|
427
|
+
manual.push(`getPayloadAuth reference (line ${lineOf(source, node)}) — rewrite by hand to await getPayload({ config })`);
|
|
428
|
+
reportedLines.add(lineOf(source, node));
|
|
429
|
+
}
|
|
430
|
+
if (ts.isPropertyAccessExpression(node)) {
|
|
431
|
+
const line = lineOf(source, node);
|
|
432
|
+
if (node.name.text === 'betterAuth') {
|
|
433
|
+
const parent = node.parent;
|
|
434
|
+
if (ts.isPropertyAccessExpression(parent) && parent.name.text === 'api') {
|
|
435
|
+
const method = parent.parent;
|
|
436
|
+
if (ts.isPropertyAccessExpression(method) &&
|
|
437
|
+
method.name.text === 'getSession' &&
|
|
438
|
+
ts.isCallExpression(method.parent) &&
|
|
439
|
+
awaitContext(method.parent) === 'sync-function') {
|
|
440
|
+
manual.push(`getSession (line ${line}) — the enclosing function is not async: make it async and use await authLinkServer(...).getSession(...)`);
|
|
441
|
+
}
|
|
442
|
+
else {
|
|
443
|
+
manual.push(`payload.betterAuth.api.<method> (line ${line}) — see the authLinkServer session API (#54)`);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
else {
|
|
447
|
+
manual.push(`payload.betterAuth accessor (line ${line}) — see the authLinkServer session API (#54)`);
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
else if (node.name.text === '$context') {
|
|
451
|
+
seenInternalsLines.add(line);
|
|
452
|
+
manual.push(`$context internals (line ${line}) — see the supported server session API (#54)`);
|
|
453
|
+
}
|
|
454
|
+
else if (node.name.text === 'internalAdapter' && !seenInternalsLines.has(line)) {
|
|
455
|
+
manual.push(`internalAdapter (line ${line}) — Better Auth internals; see the supported server session API (#54)`);
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
ts.forEachChild(node, visit);
|
|
459
|
+
};
|
|
460
|
+
visit(source);
|
|
42
461
|
return manual;
|
|
43
462
|
}
|
|
44
463
|
/** Apply every rule to one file; reports what fired and what needs a human. */
|
package/dist/codemods.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codemods.js","sourceRoot":"","sources":["../src/codemods.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAoBH,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD;QACE,EAAE,EAAE,kBAAkB;QACtB,WAAW,EAAE,4CAA4C;QACzD,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CACjB,OAAO;aACJ,OAAO,CACN,+EAA+E,EAC/E,sCAAsC,CACvC;aACA,OAAO,CAAC,0BAA0B,EAAE,8BAA8B,CAAC;KACzE;IACD;QACE,EAAE,EAAE,yBAAyB;QAC7B,WAAW,EACT,+FAA+F;QACjG,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CACjB,OAAO,CAAC,OAAO,CACb,kEAAkE,EAClE,qDAAqD,CACtD;KACJ;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,WAAW,EACT,yFAAyF;QAC3F,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CACjB,OAAO;aACJ,OAAO,CACN,6EAA6E,EAC7E,+DAA+D,CAChE;aACA,OAAO,CACN,iHAAiH,EACjH,0FAA0F,CAC3F;KACN;CACF,CAAA;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,iDAAiD,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACpE,MAAM,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAA;IAC3F,CAAC;IACD,IAAI,0CAA0C,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAA;IAChF,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAe;IACzD,IAAI,OAAO,GAAG,OAAO,CAAA;IACrB,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAChC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACrB,OAAO,GAAG,IAAI,CAAA;QAChB,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;IACvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;AAChF,CAAC"}
|
|
1
|
+
{"version":3,"file":"codemods.js","sourceRoot":"","sources":["../src/codemods.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import type { DatabaseFinding } from './types.js';
|
|
2
|
-
export
|
|
2
|
+
export type IntrospectOptions = {
|
|
3
|
+
/** Model → source table map (`--source-map`); defaults to the default layout. */
|
|
4
|
+
readonly sourceTables?: Readonly<Record<string, string | null>> | undefined;
|
|
5
|
+
};
|
|
6
|
+
export declare function introspectDatabase(connectionString: string, options?: IntrospectOptions): Promise<DatabaseFinding>;
|
|
3
7
|
//# sourceMappingURL=database.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/doctor/database.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/doctor/database.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAqDjD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,iFAAiF;IACjF,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAA;CAC5E,CAAA;AAED,wBAAsB,kBAAkB,CACtC,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,eAAe,CAAC,CAiJ1B"}
|