strapi-typed-client 1.2.2 → 1.2.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.
Files changed (49) hide show
  1. package/dist/cli/commands/generate.js +1 -1
  2. package/dist/cli/commands/generate.js.map +1 -1
  3. package/dist/cli/index.d.ts +0 -1
  4. package/dist/cli/index.d.ts.map +1 -1
  5. package/dist/cli/index.js +0 -1
  6. package/dist/cli/index.js.map +1 -1
  7. package/dist/core/endpoint-converter.d.ts +2 -2
  8. package/dist/core/endpoint-converter.d.ts.map +1 -1
  9. package/dist/core/schema-transformer.js +1 -0
  10. package/dist/core/schema-transformer.js.map +1 -1
  11. package/dist/generator/auth-api-generator.d.ts +1 -1
  12. package/dist/generator/auth-api-generator.d.ts.map +1 -1
  13. package/dist/generator/auth-api-generator.js +2 -3
  14. package/dist/generator/auth-api-generator.js.map +1 -1
  15. package/dist/generator/client-generator.d.ts +1 -3
  16. package/dist/generator/client-generator.d.ts.map +1 -1
  17. package/dist/generator/client-generator.js +1 -17
  18. package/dist/generator/client-generator.js.map +1 -1
  19. package/dist/generator/custom-api-generator.d.ts +2 -2
  20. package/dist/generator/custom-api-generator.d.ts.map +1 -1
  21. package/dist/generator/index.d.ts +1 -2
  22. package/dist/generator/index.d.ts.map +1 -1
  23. package/dist/generator/index.js +2 -4
  24. package/dist/generator/index.js.map +1 -1
  25. package/dist/generator/types-generator.d.ts.map +1 -1
  26. package/dist/generator/types-generator.js +2 -0
  27. package/dist/generator/types-generator.js.map +1 -1
  28. package/dist/schema-types.d.ts +1 -0
  29. package/dist/schema-types.d.ts.map +1 -1
  30. package/dist/shared/custom-types.d.ts +17 -0
  31. package/dist/shared/custom-types.d.ts.map +1 -0
  32. package/dist/shared/custom-types.js +2 -0
  33. package/dist/shared/custom-types.js.map +1 -0
  34. package/dist/{parser/routes-parser.d.ts → shared/route-types.d.ts} +1 -9
  35. package/dist/shared/route-types.d.ts.map +1 -0
  36. package/dist/shared/route-types.js +2 -0
  37. package/dist/shared/route-types.js.map +1 -0
  38. package/package.json +1 -1
  39. package/dist/parser/custom-types-parser.d.ts +0 -39
  40. package/dist/parser/custom-types-parser.d.ts.map +0 -1
  41. package/dist/parser/custom-types-parser.js +0 -206
  42. package/dist/parser/custom-types-parser.js.map +0 -1
  43. package/dist/parser/index.d.ts +0 -23
  44. package/dist/parser/index.d.ts.map +0 -1
  45. package/dist/parser/index.js +0 -462
  46. package/dist/parser/index.js.map +0 -1
  47. package/dist/parser/routes-parser.d.ts.map +0 -1
  48. package/dist/parser/routes-parser.js +0 -216
  49. package/dist/parser/routes-parser.js.map +0 -1
@@ -1,216 +0,0 @@
1
- import * as ts from 'typescript';
2
- import * as fs from 'fs';
3
- import * as path from 'path';
4
- export class RoutesParser {
5
- parse(routesDir) {
6
- const result = {
7
- byController: new Map(),
8
- all: [],
9
- };
10
- // Check if routes directory exists
11
- if (!fs.existsSync(routesDir)) {
12
- console.log('⚠️ Routes directory not found, skipping custom routes parsing');
13
- return result;
14
- }
15
- // Parse TypeScript files from API routes
16
- const tsFiles = fs.readdirSync(routesDir).filter(f => f.endsWith('.ts'));
17
- for (const file of tsFiles) {
18
- const filePath = path.join(routesDir, file);
19
- const routes = this.parseFile(filePath);
20
- for (const route of routes) {
21
- result.all.push(route);
22
- if (!result.byController.has(route.controller)) {
23
- result.byController.set(route.controller, []);
24
- }
25
- result.byController.get(route.controller).push(route);
26
- }
27
- }
28
- // Parse JavaScript files from plugin routes
29
- const pluginsDir = path.join(routesDir, 'plugins');
30
- if (fs.existsSync(pluginsDir)) {
31
- const jsFiles = fs
32
- .readdirSync(pluginsDir)
33
- .filter(f => f.endsWith('.js'));
34
- for (const file of jsFiles) {
35
- const filePath = path.join(pluginsDir, file);
36
- const routes = this.parseJavaScriptFile(filePath);
37
- for (const route of routes) {
38
- // Set pluginName from handler prefix (e.g., 'plugin::users-permissions.role.find')
39
- // or default to 'users-permissions' for files in the plugins directory
40
- if (!route.pluginName) {
41
- const handlerMatch = route.handler.match(/^plugin::([^.]+)\./);
42
- route.pluginName = handlerMatch
43
- ? handlerMatch[1]
44
- : 'users-permissions';
45
- }
46
- result.all.push(route);
47
- if (!result.byController.has(route.controller)) {
48
- result.byController.set(route.controller, []);
49
- }
50
- result.byController.get(route.controller).push(route);
51
- }
52
- }
53
- }
54
- return result;
55
- }
56
- parseFile(filePath) {
57
- const sourceCode = fs.readFileSync(filePath, 'utf-8');
58
- const sourceFile = ts.createSourceFile(filePath, sourceCode, ts.ScriptTarget.Latest, true);
59
- const routes = [];
60
- const visit = (node) => {
61
- // Look for: export default { routes: [...] }
62
- if (ts.isExportAssignment(node) &&
63
- ts.isObjectLiteralExpression(node.expression)) {
64
- const routesProperty = node.expression.properties.find(p => ts.isPropertyAssignment(p) &&
65
- ts.isIdentifier(p.name) &&
66
- p.name.text === 'routes');
67
- if (routesProperty &&
68
- ts.isArrayLiteralExpression(routesProperty.initializer)) {
69
- for (const element of routesProperty.initializer.elements) {
70
- if (ts.isObjectLiteralExpression(element)) {
71
- const route = this.parseRouteObject(element);
72
- if (route) {
73
- routes.push(route);
74
- }
75
- }
76
- }
77
- }
78
- }
79
- ts.forEachChild(node, visit);
80
- };
81
- visit(sourceFile);
82
- return routes;
83
- }
84
- parseRouteObject(obj) {
85
- let method;
86
- let pathValue;
87
- let handler;
88
- let prefix;
89
- for (const prop of obj.properties) {
90
- if (!ts.isPropertyAssignment(prop))
91
- continue;
92
- if (!ts.isIdentifier(prop.name))
93
- continue;
94
- const propName = prop.name.text;
95
- let value;
96
- if (ts.isStringLiteral(prop.initializer)) {
97
- value = prop.initializer.text;
98
- }
99
- if (propName === 'method' && value) {
100
- method = value;
101
- }
102
- else if (propName === 'path' && value) {
103
- pathValue = value;
104
- }
105
- else if (propName === 'handler' && value) {
106
- handler = value;
107
- }
108
- else if (propName === 'config' &&
109
- ts.isObjectLiteralExpression(prop.initializer)) {
110
- // Extract config.prefix
111
- for (const configProp of prop.initializer.properties) {
112
- if (ts.isPropertyAssignment(configProp) &&
113
- ts.isIdentifier(configProp.name) &&
114
- configProp.name.text === 'prefix' &&
115
- ts.isStringLiteral(configProp.initializer)) {
116
- prefix = configProp.initializer.text;
117
- }
118
- }
119
- }
120
- }
121
- if (!method || !pathValue || !handler) {
122
- return null;
123
- }
124
- // Parse handler: strip "api::xxx." or "plugin::xxx." prefix if present
125
- let normalizedHandler = handler;
126
- if (normalizedHandler.includes('::')) {
127
- const afterPrefix = normalizedHandler.split('::')[1];
128
- const prefixParts = afterPrefix.split('.');
129
- normalizedHandler = prefixParts.slice(1).join('.') || prefixParts[0];
130
- }
131
- const [controller, action] = normalizedHandler.split('.');
132
- if (!controller || !action) {
133
- return null;
134
- }
135
- // Extract path params: '/items/:id/action' → ['id']
136
- const params = this.extractPathParams(pathValue);
137
- return {
138
- method: method,
139
- path: pathValue,
140
- handler,
141
- controller,
142
- action,
143
- params,
144
- ...(prefix !== undefined && { prefix }),
145
- };
146
- }
147
- parseJavaScriptFile(filePath) {
148
- const sourceCode = fs.readFileSync(filePath, 'utf-8');
149
- const sourceFile = ts.createSourceFile(filePath, sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.JS);
150
- const routes = [];
151
- const visit = (node) => {
152
- // Look for: module.exports = (strapi) => { return [...] } or module.exports = (strapi) => [...]
153
- if (ts.isExpressionStatement(node)) {
154
- const expr = node.expression;
155
- if (ts.isBinaryExpression(expr) &&
156
- expr.operatorToken.kind === ts.SyntaxKind.EqualsToken) {
157
- // Check if left side is module.exports
158
- const left = expr.left;
159
- if (ts.isPropertyAccessExpression(left) &&
160
- ts.isIdentifier(left.expression) &&
161
- left.expression.text === 'module' &&
162
- left.name.text === 'exports') {
163
- // Right side can be an arrow function or a plain array
164
- const right = expr.right;
165
- if (ts.isArrayLiteralExpression(right)) {
166
- // Plain array: module.exports = [...]
167
- this.parseRoutesArray(right, routes);
168
- }
169
- else if (ts.isArrowFunction(right)) {
170
- // Find the return statement or direct array expression
171
- const body = right.body;
172
- if (ts.isBlock(body)) {
173
- // Function with block: (strapi) => { return [...] }
174
- body.statements.forEach(stmt => {
175
- if (ts.isReturnStatement(stmt) &&
176
- stmt.expression) {
177
- if (ts.isArrayLiteralExpression(stmt.expression)) {
178
- this.parseRoutesArray(stmt.expression, routes);
179
- }
180
- }
181
- });
182
- }
183
- else if (ts.isArrayLiteralExpression(body)) {
184
- // Direct array: (strapi) => [...]
185
- this.parseRoutesArray(body, routes);
186
- }
187
- }
188
- }
189
- }
190
- }
191
- ts.forEachChild(node, visit);
192
- };
193
- visit(sourceFile);
194
- return routes;
195
- }
196
- parseRoutesArray(arrayExpr, routes) {
197
- for (const element of arrayExpr.elements) {
198
- if (ts.isObjectLiteralExpression(element)) {
199
- const route = this.parseRouteObject(element);
200
- if (route) {
201
- routes.push(route);
202
- }
203
- }
204
- }
205
- }
206
- extractPathParams(pathValue) {
207
- const params = [];
208
- const regex = /:([a-zA-Z_][a-zA-Z0-9_]*)/g;
209
- let match;
210
- while ((match = regex.exec(pathValue)) !== null) {
211
- params.push(match[1]);
212
- }
213
- return params;
214
- }
215
- }
216
- //# sourceMappingURL=routes-parser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routes-parser.js","sourceRoot":"","sources":["../../src/parser/routes-parser.ts"],"names":[],"mappings":"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"}