mobx-tanstack-query-api 0.0.76 → 0.0.78

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.
@@ -5,6 +5,7 @@ export type CodegenDataUtils = {
5
5
  getInlineParseContent: (requestParams: AnyObject) => string;
6
6
  formatModelName: (modelName: string) => string;
7
7
  };
8
+ type FilterEndpointsFn = (endpoint: AnyObject) => boolean;
8
9
  export type CodegenProcess = AnyObject;
9
10
  export interface ImportFileParams {
10
11
  path: string;
@@ -25,7 +26,7 @@ export interface GenerateQueryApiParams {
25
26
  /**
26
27
  * Group endpoints and collect it into object
27
28
  */
28
- groupBy?: ((route: AnyObject) => string) | `path-segment` | `path-segment-${number}` | `tag` | `tag-${number}`;
29
+ groupBy?: ((endpoint: AnyObject) => string) | `path-segment` | `path-segment-${number}` | `tag` | `tag-${number}`;
29
30
  /**
30
31
  * Collect all exports into single namespace
31
32
  *
@@ -66,7 +67,7 @@ export interface GenerateQueryApiParams {
66
67
  };
67
68
  requestOptions?: AnyObject;
68
69
  otherCodegenParams?: AnyObject;
69
- filterRoutes?: (route: AnyObject) => boolean;
70
+ filterEndpoints?: FilterEndpointsFn | RegExp | RegExp[];
70
71
  filterGroups?: (groupName: string) => boolean;
71
72
  libImports?: {
72
73
  'mobx-tanstack-query-api'?: string;
@@ -78,4 +79,5 @@ export interface GenerateQueryApiParams {
78
79
  }
79
80
  export type AllImportFileParams = Record<KeyOfByValue<Required<GenerateQueryApiParams>, 'builtin' | ImportFileParams>, ImportFileParams>;
80
81
  export declare const generateApi: (params: GenerateQueryApiParams | GenerateQueryApiParams[]) => Promise<void>;
82
+ export {};
81
83
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/codegen/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/codegen/index.ts"],"names":[],"mappings":"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"}
package/codegen/index.js CHANGED
@@ -130,15 +130,33 @@ export const generateApi = async (params) => {
130
130
  const codegenFs = codegenProcess.fileSystem;
131
131
  codegenFs.cleanDir(params.output);
132
132
  codegenFs.createDir(params.output);
133
- let allRoutes = Object.values(generated.configuration.routes)
133
+ const allRoutes = Object.values(generated.configuration.routes)
134
134
  .flat()
135
135
  .flatMap((routeGroup) => 'routes' in routeGroup ? routeGroup.routes : routeGroup);
136
- allRoutes = params.filterRoutes
137
- ? allRoutes.filter(params.filterRoutes)
138
- : allRoutes;
136
+ let filterEndpoints;
137
+ if (params.filterEndpoints) {
138
+ if (typeof params.filterEndpoints === 'function') {
139
+ filterEndpoints = params.filterEndpoints;
140
+ }
141
+ else {
142
+ const regexps = Array.isArray(params.filterEndpoints)
143
+ ? params.filterEndpoints
144
+ : [params.filterEndpoints];
145
+ filterEndpoints = (route) => regexps.some((regexp) => {
146
+ if (!route.raw) {
147
+ return false;
148
+ }
149
+ return regexp.test(route.raw.operationId);
150
+ });
151
+ }
152
+ }
153
+ else {
154
+ filterEndpoints = () => true;
155
+ }
139
156
  const reservedDataContractNamesMap = new Map();
140
157
  const collectedExportFiles = [];
141
158
  const groupsMap = new Map();
159
+ const nonEmptyGroups = new Set();
142
160
  const tagsSet = new Set();
143
161
  if (params.groupBy == null) {
144
162
  collectedExportFiles.push('endpoints');
@@ -166,6 +184,9 @@ export const generateApi = async (params) => {
166
184
  reservedDataContractNames.forEach((name) => {
167
185
  reservedDataContractNamesMap.set(name, (reservedDataContractNamesMap.get(name) ?? 0) + 1);
168
186
  });
187
+ if (!filterEndpoints(route)) {
188
+ continue;
189
+ }
169
190
  const fileName = `${_.kebabCase(route.routeName.usage)}.ts`;
170
191
  fileNamesWithRequestInfo.push(fileName);
171
192
  codegenFs.createFile({
@@ -221,6 +242,7 @@ export const generateApi = async (params) => {
221
242
  const fileNamesWithRequestInfo = [];
222
243
  codegenFs.createDir(path.resolve(params.output, _.kebabCase(groupName)));
223
244
  codegenFs.createDir(path.resolve(params.output, _.kebabCase(groupName), 'endpoints'));
245
+ let hasFilteredRoutes = false;
224
246
  for await (const route of routes) {
225
247
  const { content: requestInfoPerFileContent, reservedDataContractNames, } = await endpointPerFileTmpl({
226
248
  ...generated,
@@ -236,12 +258,16 @@ export const generateApi = async (params) => {
236
258
  groupNames: [],
237
259
  },
238
260
  });
239
- if (Array.isArray(route.raw.tags)) {
240
- route.raw.tags.forEach((tag) => tagsSet.add(tag));
241
- }
242
261
  reservedDataContractNames.forEach((name) => {
243
262
  reservedDataContractNamesMap.set(name, (reservedDataContractNamesMap.get(name) ?? 0) + 1);
244
263
  });
264
+ if (!filterEndpoints(route)) {
265
+ continue;
266
+ }
267
+ hasFilteredRoutes = true;
268
+ if (Array.isArray(route.raw.tags)) {
269
+ route.raw.tags.forEach((tag) => tagsSet.add(tag));
270
+ }
245
271
  const fileName = `${_.kebabCase(route.routeName.usage)}.ts`;
246
272
  fileNamesWithRequestInfo.push(fileName);
247
273
  codegenFs.createFile({
@@ -251,36 +277,42 @@ export const generateApi = async (params) => {
251
277
  content: requestInfoPerFileContent,
252
278
  });
253
279
  }
254
- const exportGroupName = params.formatExportGroupName
255
- ? params.formatExportGroupName(_.camelCase(groupName), utils)
256
- : _.camelCase(groupName);
257
- codegenFs.createFile({
258
- path: path.resolve(params.output, _.kebabCase(groupName)),
259
- fileName: 'index.ts',
260
- withPrefix: false,
261
- content: `${LINTERS_IGNORE}
280
+ if (hasFilteredRoutes) {
281
+ nonEmptyGroups.add(groupName);
282
+ const exportGroupName = params.formatExportGroupName
283
+ ? params.formatExportGroupName(_.camelCase(groupName), utils)
284
+ : _.camelCase(groupName);
285
+ codegenFs.createFile({
286
+ path: path.resolve(params.output, _.kebabCase(groupName)),
287
+ fileName: 'index.ts',
288
+ withPrefix: false,
289
+ content: `${LINTERS_IGNORE}
262
290
  export * as ${exportGroupName} from './endpoints';
263
291
  `,
264
- });
265
- codegenFs.createFile({
266
- path: path.resolve(params.output, _.kebabCase(groupName), 'endpoints'),
267
- fileName: 'index.ts',
268
- withPrefix: false,
269
- content: await indexTsForEndpointPerFileTmpl({
270
- ...generated,
271
- apiParams: params,
272
- codegenProcess,
273
- generatedRequestFileNames: fileNamesWithRequestInfo,
274
- }),
275
- });
276
- collectedExportFiles.push(_.kebabCase(groupName));
292
+ });
293
+ codegenFs.createFile({
294
+ path: path.resolve(params.output, _.kebabCase(groupName), 'endpoints'),
295
+ fileName: 'index.ts',
296
+ withPrefix: false,
297
+ content: await indexTsForEndpointPerFileTmpl({
298
+ ...generated,
299
+ apiParams: params,
300
+ codegenProcess,
301
+ generatedRequestFileNames: fileNamesWithRequestInfo,
302
+ }),
303
+ });
304
+ collectedExportFiles.push(_.kebabCase(groupName));
305
+ }
306
+ else {
307
+ codegenFs.removeDir(path.resolve(params.output, _.kebabCase(groupName)));
308
+ }
277
309
  }
278
310
  // #endregion
279
311
  }
280
- const metaInfo = (namespace ?? groupsMap.size > 0)
312
+ const metaInfo = (namespace ?? nonEmptyGroups.size > 0)
281
313
  ? {
282
314
  namespace,
283
- groupNames: [...groupsMap.keys()],
315
+ groupNames: [...nonEmptyGroups.values()],
284
316
  tags: [...tagsSet.values()],
285
317
  }
286
318
  : null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mobx-tanstack-query-api",
3
- "version": "0.0.76",
3
+ "version": "0.0.78",
4
4
  "keywords": [],
5
5
  "author": "js2me",
6
6
  "license": "MIT",
@@ -23,7 +23,7 @@
23
23
  "@types/lodash": "^4.17.16",
24
24
  "@types/lodash-es": "^4.17.12",
25
25
  "http-status-code-types": "^0.0.2",
26
- "mobx-tanstack-query": "^5.3.0",
26
+ "mobx-tanstack-query": "^5.3.1",
27
27
  "swagger-typescript-api": "13.2.1",
28
28
  "yummies": "^3.2.9"
29
29
  },