@dcoder-x/plugin-shared 0.1.7 → 0.1.8
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.
|
@@ -6,6 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.RouteExtractor = void 0;
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const parser_1 = require("@babel/parser");
|
|
10
|
+
const traverse_1 = __importDefault(require("@babel/traverse"));
|
|
11
|
+
// @babel/traverse ships as CJS but may be loaded by an ESM host (e.g. Vite).
|
|
12
|
+
// The CJS-in-ESM import wraps exports in a namespace object, so `.default`
|
|
13
|
+
// may be the module object rather than the function. This guard handles both.
|
|
14
|
+
const traverse = typeof traverse_1.default === 'function' ? traverse_1.default : traverse_1.default.default;
|
|
9
15
|
class RouteExtractor {
|
|
10
16
|
constructor(dir) {
|
|
11
17
|
this.dir = dir;
|
|
@@ -114,21 +120,19 @@ class RouteExtractor {
|
|
|
114
120
|
async extractReactRouterRoutes(srcDir) {
|
|
115
121
|
if (!fs_1.default.existsSync(srcDir))
|
|
116
122
|
return [];
|
|
117
|
-
const { parse } = await import('@babel/parser');
|
|
118
|
-
const traverse = (await import('@babel/traverse')).default;
|
|
119
123
|
const results = [];
|
|
120
124
|
const routerFiles = this.findFilesContaining(srcDir, /createBrowserRouter|<Route/);
|
|
121
125
|
for (const filePath of routerFiles) {
|
|
122
126
|
const source = fs_1.default.readFileSync(filePath, 'utf-8');
|
|
123
127
|
let ast;
|
|
124
128
|
try {
|
|
125
|
-
ast = parse(source, { sourceType: 'module', plugins: ['typescript', 'jsx'] });
|
|
129
|
+
ast = (0, parser_1.parse)(source, { sourceType: 'module', plugins: ['typescript', 'jsx'] });
|
|
126
130
|
}
|
|
127
131
|
catch {
|
|
128
132
|
continue;
|
|
129
133
|
}
|
|
130
134
|
traverse(ast, {
|
|
131
|
-
JSXOpeningElement(nodePath) {
|
|
135
|
+
JSXOpeningElement: (nodePath) => {
|
|
132
136
|
const name = nodePath.node.name?.name;
|
|
133
137
|
if (name !== 'Route')
|
|
134
138
|
return;
|