@soulbatical/tetra-core 0.1.59 → 0.1.61
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routeAudit.d.ts","sourceRoot":"","sources":["../../src/middleware/routeAudit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAiBvC,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAEpC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;CACrC;AAED,UAAU,SAAS;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"routeAudit.d.ts","sourceRoot":"","sources":["../../src/middleware/routeAudit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAiBvC,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAEpC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;CACrC;AAED,UAAU,SAAS;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAiLD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,iBAAsB,GAAG,SAAS,EAAE,CAyEtF"}
|
|
@@ -38,51 +38,123 @@ const AUTH_MIDDLEWARE_NAMES = [
|
|
|
38
38
|
*/
|
|
39
39
|
function extractRoutes(app) {
|
|
40
40
|
const routes = [];
|
|
41
|
-
function walkStack(stack, basePath) {
|
|
41
|
+
function walkStack(stack, basePath, inheritedMiddleware) {
|
|
42
42
|
if (!stack)
|
|
43
43
|
return;
|
|
44
|
+
const groups = [];
|
|
45
|
+
let currentGroup = null;
|
|
44
46
|
for (const layer of stack) {
|
|
47
|
+
// For grouping: determine mount prefix
|
|
48
|
+
let prefix;
|
|
45
49
|
if (layer.route) {
|
|
46
|
-
// Direct route —
|
|
47
|
-
|
|
50
|
+
// Direct route — use basePath (route path is added later)
|
|
51
|
+
prefix = basePath;
|
|
52
|
+
}
|
|
53
|
+
else if (layer.handle?.stack) {
|
|
54
|
+
// Nested router — extract the mount prefix
|
|
55
|
+
prefix = extractLayerPrefix(layer, basePath);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// Standalone middleware — extract its mount prefix
|
|
59
|
+
prefix = extractLayerPrefix(layer, basePath);
|
|
60
|
+
}
|
|
61
|
+
// Start a new group if prefix changes
|
|
62
|
+
if (!currentGroup || prefix !== currentGroup.prefix) {
|
|
63
|
+
currentGroup = { prefix, middlewareNames: [...inheritedMiddleware], routers: [], directRoutes: [] };
|
|
64
|
+
groups.push(currentGroup);
|
|
65
|
+
}
|
|
66
|
+
if (layer.route) {
|
|
67
|
+
currentGroup.directRoutes.push(layer);
|
|
68
|
+
}
|
|
69
|
+
else if (layer.handle?.stack) {
|
|
70
|
+
currentGroup.routers.push(layer);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
// Standalone middleware — track name
|
|
74
|
+
const name = layer.handle?.name || layer.name || '';
|
|
75
|
+
if (name) {
|
|
76
|
+
currentGroup.middlewareNames.push(name);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Process each group
|
|
81
|
+
for (const group of groups) {
|
|
82
|
+
// Direct routes — route.path already includes the full path on top-level
|
|
83
|
+
for (const layer of group.directRoutes) {
|
|
84
|
+
const routeSubPath = layer.route.path || '';
|
|
85
|
+
// Avoid double-prefixing: if route path already starts with the prefix, use it as-is
|
|
86
|
+
const routePath = routeSubPath.startsWith(group.prefix) ? routeSubPath : group.prefix + routeSubPath;
|
|
48
87
|
const methods = layer.route.methods
|
|
49
88
|
? Object.keys(layer.route.methods).filter((m) => layer.route.methods[m])
|
|
50
89
|
: ['ALL'];
|
|
51
|
-
const
|
|
90
|
+
const routeMiddleware = (layer.route.stack || [])
|
|
52
91
|
.map((s) => s.handle?.name || s.name || 'anonymous')
|
|
53
92
|
.filter((n) => n !== 'anonymous' && n !== '<anonymous>');
|
|
93
|
+
const allMiddleware = [...group.middlewareNames, ...routeMiddleware];
|
|
54
94
|
for (const method of methods) {
|
|
55
95
|
routes.push({
|
|
56
96
|
method: method.toUpperCase(),
|
|
57
97
|
path: routePath,
|
|
58
|
-
middlewareNames,
|
|
98
|
+
middlewareNames: allMiddleware,
|
|
59
99
|
});
|
|
60
100
|
}
|
|
61
101
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
walkStack(layer.handle.stack, basePath + prefix);
|
|
102
|
+
// Nested routers — recurse with group middleware
|
|
103
|
+
for (const layer of group.routers) {
|
|
104
|
+
walkStack(layer.handle.stack, group.prefix, group.middlewareNames);
|
|
66
105
|
}
|
|
67
106
|
}
|
|
68
107
|
}
|
|
69
108
|
/**
|
|
70
|
-
* Extract the path prefix from
|
|
109
|
+
* Extract the mount path prefix from a router layer.
|
|
110
|
+
* Express 4: layer.regexp contains the prefix pattern.
|
|
111
|
+
* Express 5: layer.matchers[0] is a function — call it with probe paths.
|
|
71
112
|
*/
|
|
72
|
-
function
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
.
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
113
|
+
function extractLayerPrefix(layer, basePath) {
|
|
114
|
+
// Express 4: regexp-based
|
|
115
|
+
if (layer.regexp) {
|
|
116
|
+
const match = layer.regexp.source
|
|
117
|
+
.replace('\\/?', '')
|
|
118
|
+
.replace('(?=\\/|$)', '')
|
|
119
|
+
.replace(/^\^/, '')
|
|
120
|
+
.replace(/\\(.)/g, '$1');
|
|
121
|
+
if (match && match !== '(?:)' && match !== '' && match !== '/') {
|
|
122
|
+
return basePath + match;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// Express 5: probe the matcher function with common API paths
|
|
126
|
+
const matcher = layer.matchers?.[0];
|
|
127
|
+
if (typeof matcher === 'function') {
|
|
128
|
+
const segments = [
|
|
129
|
+
'api', 'public', 'admin', 'auth', 'tracks', 'planner', 'calendar',
|
|
130
|
+
'users', 'forms', 'templates', 'tasks', 'documents', 'feedback',
|
|
131
|
+
'coach', 'permissions', 'onboarding-flows', 'invites', 'cron',
|
|
132
|
+
'notifications', 'settings', 'scheduler', 'messages', 'notes',
|
|
133
|
+
];
|
|
134
|
+
// Try /segment and /api/segment patterns
|
|
135
|
+
const probes = [
|
|
136
|
+
...segments.map((s) => `/${s}`),
|
|
137
|
+
...segments.map((s) => `/api/${s}`),
|
|
138
|
+
...segments.flatMap((s) => segments.map((s2) => `/api/${s}/${s2}`)),
|
|
139
|
+
];
|
|
140
|
+
for (const probe of probes) {
|
|
141
|
+
try {
|
|
142
|
+
const result = matcher(probe);
|
|
143
|
+
if (result && typeof result === 'object' && result.path) {
|
|
144
|
+
return result.path;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
// Ignore matcher errors
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return basePath;
|
|
81
153
|
}
|
|
82
154
|
// Express 5: app.router.stack | Express 4: app._router.stack
|
|
83
155
|
const router = app.router || app._router;
|
|
84
156
|
if (router?.stack) {
|
|
85
|
-
walkStack(router.stack, '');
|
|
157
|
+
walkStack(router.stack, '', []);
|
|
86
158
|
}
|
|
87
159
|
return routes;
|
|
88
160
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routeAudit.js","sourceRoot":"","sources":["../../src/middleware/routeAudit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,MAAM,GAAG,YAAY,CAAC,sBAAsB,CAAC,CAAC;AAEpD,kDAAkD;AAClD,MAAM,qBAAqB,GAAG;IAC5B,mBAAmB;IACnB,sBAAsB;IACtB,aAAa;IACb,iBAAiB;IACjB,0BAA0B;IAC1B,mBAAmB;IACnB,mBAAmB,EAAS,iDAAiD;IAC7E,uBAAuB;CACxB,CAAC;AAmCF;;;GAGG;AACH,SAAS,aAAa,CAAC,GAAY;IACjC,MAAM,MAAM,GAAgB,EAAE,CAAC;IAE/B,SAAS,SAAS,CAAC,KAAY,EAAE,QAAgB;
|
|
1
|
+
{"version":3,"file":"routeAudit.js","sourceRoot":"","sources":["../../src/middleware/routeAudit.ts"],"names":[],"mappings":"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"}
|