| #!/usr/bin/env node |
|
|
| import ts from "typescript"; |
| import { runCallsiteGuard } from "./lib/callsite-guard.mjs"; |
| import { runAsScript, toLine, unwrapExpression } from "./lib/ts-guard-utils.mjs"; |
|
|
| const sourceRoots = ["src", "extensions"]; |
|
|
| function isDeprecatedRegisterHttpHandlerCall(expression) { |
| const callee = unwrapExpression(expression); |
| return ts.isPropertyAccessExpression(callee) && callee.name.text === "registerHttpHandler"; |
| } |
|
|
| export function findDeprecatedRegisterHttpHandlerLines(content, fileName = "source.ts") { |
| const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.Latest, true); |
| const lines = []; |
| const visit = (node) => { |
| if (ts.isCallExpression(node) && isDeprecatedRegisterHttpHandlerCall(node.expression)) { |
| lines.push(toLine(sourceFile, node.expression)); |
| } |
| ts.forEachChild(node, visit); |
| }; |
| visit(sourceFile); |
| return lines; |
| } |
|
|
| export async function main() { |
| await runCallsiteGuard({ |
| importMetaUrl: import.meta.url, |
| sourceRoots, |
| findCallLines: findDeprecatedRegisterHttpHandlerLines, |
| header: "Found deprecated plugin API call registerHttpHandler(...):", |
| footer: |
| "Use registerHttpRoute({ path, auth, match, handler }) and registerPluginHttpRoute for dynamic webhook paths.", |
| }); |
| } |
|
|
| runAsScript(import.meta.url, main); |
|
|