@rudderjs/router 0.0.3 → 0.0.4

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.
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Register the route:list command with the rudder CLI.
3
+ */
4
+ export declare function registerRouteListCommand(rudder: {
5
+ command(name: string, handler: (args: string[]) => void | Promise<void>): {
6
+ description(text: string): unknown;
7
+ };
8
+ }): void;
9
+ //# sourceMappingURL=route-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-list.d.ts","sourceRoot":"","sources":["../../src/commands/route-list.ts"],"names":[],"mappings":"AAwGA;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE;IAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG;QAAE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;CAAE,GAC3H,IAAI,CA0BN"}
@@ -0,0 +1,110 @@
1
+ import path from 'node:path';
2
+ import fs from 'node:fs/promises';
3
+ // ─── Route Collection ─────────────────────────────────────
4
+ async function loadApiRoutes() {
5
+ try {
6
+ const { router } = await import('@rudderjs/router');
7
+ return router.list();
8
+ }
9
+ catch {
10
+ return [];
11
+ }
12
+ }
13
+ async function scanVikeRoutes() {
14
+ const routes = [];
15
+ const pagesDir = path.join(process.cwd(), 'pages');
16
+ const walk = async (dir, base = '') => {
17
+ const entries = await fs.readdir(dir, { withFileTypes: true });
18
+ const hasPage = entries.some(e => e.isFile() && e.name.startsWith('+Page.'));
19
+ if (hasPage) {
20
+ const route = base === '' ? '/' : base;
21
+ const relDir = path.relative(pagesDir, dir);
22
+ routes.push({ route, dir: relDir });
23
+ }
24
+ for (const entry of entries) {
25
+ if (!entry.isDirectory() || entry.name.startsWith('_'))
26
+ continue;
27
+ const segment = entry.name;
28
+ const routeSegment = segment.startsWith('@') ? `:${segment.slice(1)}` : segment;
29
+ const nextBase = segment === 'index' ? '' : `${base}/${routeSegment}`;
30
+ await walk(path.join(dir, segment), nextBase);
31
+ }
32
+ };
33
+ try {
34
+ await walk(pagesDir);
35
+ }
36
+ catch { /* no pages dir */ }
37
+ return routes;
38
+ }
39
+ // ─── Formatting ───────────────────────────────────────────
40
+ function methodColor(method) {
41
+ const colors = {
42
+ GET: '\x1b[32m', POST: '\x1b[33m', PUT: '\x1b[34m',
43
+ PATCH: '\x1b[35m', DELETE: '\x1b[31m', ALL: '\x1b[36m',
44
+ };
45
+ return `${colors[method] ?? '\x1b[37m'}${method.padEnd(7)}\x1b[0m`;
46
+ }
47
+ function middlewareLabel(mw) {
48
+ const names = mw
49
+ .map(fn => (typeof fn === 'function' && fn.name) ? fn.name : null)
50
+ .filter(Boolean);
51
+ if (names.length > 0)
52
+ return names.join(', ');
53
+ if (mw.length > 0)
54
+ return `${mw.length}×`;
55
+ return '—';
56
+ }
57
+ function printRoutes(apiRoutes, vikeRoutes) {
58
+ if (apiRoutes.length === 0 && vikeRoutes.length === 0) {
59
+ console.log('No routes registered.');
60
+ return;
61
+ }
62
+ const allPaths = [...apiRoutes.map(r => r.path), ...vikeRoutes.map(r => r.route)];
63
+ const pathWidth = Math.min(Math.max(...allPaths.map(p => p.length), 4), 60);
64
+ const mwWidth = 12;
65
+ if (apiRoutes.length > 0) {
66
+ console.log('\n \x1b[1mAPI Routes\x1b[0m');
67
+ console.log(` ${'METHOD'.padEnd(9)} ${'PATH'.padEnd(pathWidth)} MIDDLEWARE`);
68
+ console.log(` ${'─'.repeat(9)} ${'─'.repeat(pathWidth)} ${'─'.repeat(mwWidth)}`);
69
+ for (const route of apiRoutes) {
70
+ console.log(` ${methodColor(route.method)} ${route.path.padEnd(pathWidth)} ${middlewareLabel(route.middleware)}`);
71
+ }
72
+ }
73
+ if (vikeRoutes.length > 0) {
74
+ console.log('\n \x1b[1mPage Routes\x1b[0m \x1b[2m(Vike filesystem routing)\x1b[0m');
75
+ console.log(` ${'GET'.padEnd(9)} ${'PATH'.padEnd(pathWidth)} SOURCE`);
76
+ console.log(` ${'─'.repeat(9)} ${'─'.repeat(pathWidth)} ${'─'.repeat(mwWidth)}`);
77
+ for (const { route, dir } of vikeRoutes) {
78
+ console.log(` \x1b[32mGET \x1b[0m ${route.padEnd(pathWidth)} pages/${dir}`);
79
+ }
80
+ }
81
+ console.log();
82
+ }
83
+ // ─── Command Registration ─────────────────────────────────
84
+ /**
85
+ * Register the route:list command with the rudder CLI.
86
+ */
87
+ export function registerRouteListCommand(rudder) {
88
+ rudder.command('route:list', async (args) => {
89
+ const jsonFlag = args.includes('--json');
90
+ const [apiRoutes, vikeRoutes] = await Promise.all([loadApiRoutes(), scanVikeRoutes()]);
91
+ if (jsonFlag) {
92
+ const output = {
93
+ api: apiRoutes.map(r => ({
94
+ method: r.method,
95
+ path: r.path,
96
+ middleware: r.middleware.map(fn => (typeof fn === 'function' && fn.name) ? fn.name : String(fn)),
97
+ })),
98
+ pages: vikeRoutes.map(r => ({
99
+ method: 'GET',
100
+ path: r.route,
101
+ source: `pages/${r.dir}`,
102
+ })),
103
+ };
104
+ console.log(JSON.stringify(output, null, 2));
105
+ return;
106
+ }
107
+ printRoutes(apiRoutes, vikeRoutes);
108
+ }).description('List all registered routes');
109
+ }
110
+ //# sourceMappingURL=route-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-list.js","sourceRoot":"","sources":["../../src/commands/route-list.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rudderjs/router",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -18,11 +18,15 @@
18
18
  "import": "./dist/index.js",
19
19
  "default": "./dist/index.js",
20
20
  "types": "./dist/index.d.ts"
21
+ },
22
+ "./commands/route-list": {
23
+ "import": "./dist/commands/route-list.js",
24
+ "types": "./dist/commands/route-list.d.ts"
21
25
  }
22
26
  },
23
27
  "dependencies": {
24
28
  "reflect-metadata": "^0.2.2",
25
- "@rudderjs/contracts": "0.0.3"
29
+ "@rudderjs/contracts": "0.0.4"
26
30
  },
27
31
  "devDependencies": {
28
32
  "@types/node": "^20.0.0",