@kilterset/auth0-actions-testing
Version:
Test and develop Auth0 Actions or Okta CIC Actions locally.
38 lines (28 loc) • 919 B
text/typescript
import fs from "fs/promises";
import * as ts from "typescript";
import { ANALYSERS } from "./";
export async function analyseScript(
path: string,
{ target = ts.ScriptTarget.ES2016 } = {}
) {
const sourceString = (await fs.readFile(path)).toString();
const sourceFile = ts.createSourceFile(path, sourceString, target);
const results: Record<keyof typeof ANALYSERS, string[]> = Object.keys(
ANALYSERS
).reduce((collection, name) => {
collection[name as keyof typeof ANALYSERS] = [];
return collection;
}, {} as Record<keyof typeof ANALYSERS, string[]>);
const analysis = Object.entries(ANALYSERS);
visit(sourceFile);
function visit(node: ts.Node) {
for (const [key, visit] of analysis) {
const result = visit(node);
if (result) {
results[key as keyof typeof ANALYSERS].push(result);
}
}
ts.forEachChild(node, visit);
}
return results;
}