strapi-typed-client 1.4.1 → 1.5.0

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.
package/README.md CHANGED
@@ -50,6 +50,8 @@ articles[0].category.name // fully typed
50
50
 
51
51
  - Clean, flat TypeScript interfaces from your Strapi schema
52
52
  - Typed API client — `find`, `findOne`, `create`, `update`, `delete`
53
+ - Built-in upload plugin support — `client.upload.upload/find/findOne/destroy`
54
+ - Typed errors with `isStrapiErrorOf` for discriminated narrowing
53
55
  - Automatic type inference for `populate` — no manual casting
54
56
  - Nested populate with unlimited depth
55
57
  - Separate Input types for create/update (relations as IDs)
@@ -3,11 +3,15 @@ import type { ParsedEndpoint, ExtraControllerType } from '../shared/endpoint-typ
3
3
  export declare class ClientGenerator {
4
4
  private authApiGenerator;
5
5
  private customApiGenerator;
6
+ private pluginApiGenerator;
6
7
  constructor();
7
8
  generate(schema: ParsedSchema, endpoints?: ParsedEndpoint[], extraTypes?: ExtraControllerType[], schemaHash?: string): string;
8
9
  private generateImports;
9
10
  private addUtilityTypes;
11
+ private addStrapiValidationIssueInterface;
12
+ private addStrapiErrorTypes;
10
13
  private addStrapiErrorClass;
14
+ private addStrapiErrorTypeGuards;
11
15
  private addStrapiConnectionErrorClass;
12
16
  private generateBaseAPIClass;
13
17
  private addGetPopulatedType;
@@ -15,6 +19,14 @@ export declare class ClientGenerator {
15
19
  private generateSingleTypeAPI;
16
20
  private generateCustomAPIClasses;
17
21
  private buildTypeParams;
22
+ /**
23
+ * Compute which entries of `PLUGIN_REGISTRY` should be active for the
24
+ * current generation. An entry is skipped if the user has a custom
25
+ * standalone controller that resolves to the same property name —
26
+ * avoiding both class-name and StrapiClient property collisions. A
27
+ * single warning per skipped entry is logged.
28
+ */
29
+ private computeActivePlugins;
18
30
  private generateStrapiClient;
19
31
  /**
20
32
  * Resolve the class + property name for a standalone controller (one that
@@ -1 +1 @@
1
- {"version":3,"file":"client-generator.d.ts","sourceRoot":"","sources":["../../src/generator/client-generator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAK9D,OAAO,KAAK,EACR,cAAc,EACd,mBAAmB,EACtB,MAAM,6BAA6B,CAAA;AA4BpC,qBAAa,eAAe;IACxB,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,kBAAkB,CAAoB;;IAO9C,QAAQ,CACJ,MAAM,EAAE,YAAY,EACpB,SAAS,CAAC,EAAE,cAAc,EAAE,EAC5B,UAAU,CAAC,EAAE,mBAAmB,EAAE,EAClC,UAAU,GAAE,MAAW,GACxB,MAAM;IAoET,OAAO,CAAC,eAAe;IAuEvB,OAAO,CAAC,eAAe;IAgLvB,OAAO,CAAC,mBAAmB;IAuD3B,OAAO,CAAC,6BAA6B;IA6CrC,OAAO,CAAC,oBAAoB;IAqK5B,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,qBAAqB;IAwJ7B,OAAO,CAAC,qBAAqB;IA+D7B,OAAO,CAAC,wBAAwB;IAkEhC,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,oBAAoB;IAqJ5B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,2BAA2B;IA2BnC,OAAO,CAAC,oBAAoB;CA4B/B"}
1
+ {"version":3,"file":"client-generator.d.ts","sourceRoot":"","sources":["../../src/generator/client-generator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAQ9D,OAAO,KAAK,EACR,cAAc,EACd,mBAAmB,EACtB,MAAM,6BAA6B,CAAA;AA4BpC,qBAAa,eAAe;IACxB,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,kBAAkB,CAAoB;;IAQ9C,QAAQ,CACJ,MAAM,EAAE,YAAY,EACpB,SAAS,CAAC,EAAE,cAAc,EAAE,EAC5B,UAAU,CAAC,EAAE,mBAAmB,EAAE,EAClC,UAAU,GAAE,MAAW,GACxB,MAAM;IA8ET,OAAO,CAAC,eAAe;IAuEvB,OAAO,CAAC,eAAe;IAyOvB,OAAO,CAAC,iCAAiC;IA0BzC,OAAO,CAAC,mBAAmB;IAiD3B,OAAO,CAAC,mBAAmB;IAwF3B,OAAO,CAAC,wBAAwB;IA2BhC,OAAO,CAAC,6BAA6B;IA6CrC,OAAO,CAAC,oBAAoB;IAwK5B,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,qBAAqB;IAwJ7B,OAAO,CAAC,qBAAqB;IA+D7B,OAAO,CAAC,wBAAwB;IAkEhC,OAAO,CAAC,eAAe;IAavB;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,oBAAoB;IA2K5B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,2BAA2B;IA2BnC,OAAO,CAAC,oBAAoB;CA4B/B"}
@@ -4,6 +4,9 @@ import { createRequire } from 'module';
4
4
  import { Project } from 'ts-morph';
5
5
  import { AuthApiGenerator } from './auth-api-generator.js';
6
6
  import { CustomApiGenerator } from './custom-api-generator.js';
7
+ import { PluginApiGenerator } from './plugin-api-generator.js';
8
+ import { PLUGIN_REGISTRY } from './plugin-registry.js';
9
+ import { STRAPI_ERROR_REGISTRY } from './strapi-error-registry.js';
7
10
  import { toCamelCase, toPascalCase } from '../shared/index.js';
8
11
  import { convertEndpointsToRoutes, convertEndpointsToCustomTypes, } from '../core/endpoint-converter.js';
9
12
  /**
@@ -27,9 +30,11 @@ const STRINGIFY_QUERY_SOURCE = loadStringifyQuerySource();
27
30
  export class ClientGenerator {
28
31
  authApiGenerator;
29
32
  customApiGenerator;
33
+ pluginApiGenerator;
30
34
  constructor() {
31
35
  this.authApiGenerator = new AuthApiGenerator();
32
36
  this.customApiGenerator = new CustomApiGenerator();
37
+ this.pluginApiGenerator = new PluginApiGenerator();
33
38
  }
34
39
  generate(schema, endpoints, extraTypes, schemaHash = '') {
35
40
  const project = new Project({ useInMemoryFileSystem: true });
@@ -74,8 +79,13 @@ export class ClientGenerator {
74
79
  const authRoutes = parsedRoutes?.byController.get('auth') || [];
75
80
  const userRoutes = parsedRoutes?.byController.get('user') || [];
76
81
  sf.addStatements(this.authApiGenerator.generateAuthApiClass(authRoutes, userRoutes));
82
+ // Plugin API classes (registry-driven: upload, etc.) — filter out
83
+ // entries colliding with a user-defined standalone controller so
84
+ // that the user's custom code wins and we don't emit duplicates.
85
+ const activePlugins = this.computeActivePlugins(schema, parsedRoutes);
86
+ sf.addStatements(this.pluginApiGenerator.generateAllPluginClasses(activePlugins));
77
87
  // Main StrapiClient class
78
- sf.addStatements(this.generateStrapiClient(schema, parsedRoutes));
88
+ sf.addStatements(this.generateStrapiClient(schema, parsedRoutes, activePlugins));
79
89
  return sf.getFullText();
80
90
  }
81
91
  generateImports(schema) {
@@ -141,10 +151,16 @@ import type { ${filterImports.join(', ')} } from './types.js'`;
141
151
  },
142
152
  ],
143
153
  });
154
+ // StrapiValidationIssue + error name/details types (registry-driven)
155
+ this.addStrapiValidationIssueInterface(sf);
156
+ this.addStrapiErrorTypes(sf);
144
157
  // StrapiError class
145
158
  this.addStrapiErrorClass(sf);
146
159
  // StrapiConnectionError class
147
160
  this.addStrapiConnectionErrorClass(sf);
161
+ // Type guards for StrapiError narrowing (must come AFTER the class
162
+ // declaration so the guards can reference StrapiError).
163
+ this.addStrapiErrorTypeGuards(sf);
148
164
  // BaseAPI class (complex — static block)
149
165
  sf.addStatements(this.generateBaseAPIClass());
150
166
  // StrapiSortOption type alias
@@ -201,6 +217,54 @@ import type { ${filterImports.join(', ')} } from './types.js'`;
201
217
  },
202
218
  ],
203
219
  });
220
+ // UploadQueryParams interface — the upload plugin predates Strapi v5's
221
+ // document model and uses flat `start`/`limit` for pagination instead
222
+ // of `pagination[page]`/`pagination[pageSize]`. `filters` and `sort`
223
+ // do follow the v5 conventions.
224
+ sf.addInterface({
225
+ name: 'UploadQueryParams',
226
+ isExported: true,
227
+ docs: [
228
+ "Query params for the upload plugin's content-API.\n\n" +
229
+ 'NOTE: Strapi v5 upload plugin uses flat `start`/`limit` for\n' +
230
+ 'pagination — `pagination[page]`/`pagination[pageSize]` are\n' +
231
+ 'silently ignored. `filters` and `sort` follow the standard\n' +
232
+ 'Strapi v5 syntax.',
233
+ ],
234
+ properties: [
235
+ {
236
+ name: 'filters',
237
+ type: 'Record<string, any>',
238
+ hasQuestionToken: true,
239
+ },
240
+ {
241
+ name: 'sort',
242
+ type: 'StrapiSortOption<MediaFile> | StrapiSortOption<MediaFile>[]',
243
+ hasQuestionToken: true,
244
+ },
245
+ {
246
+ name: 'fields',
247
+ type: "(Exclude<keyof MediaFile & string, '__typename'>)[]",
248
+ hasQuestionToken: true,
249
+ },
250
+ {
251
+ name: 'start',
252
+ type: 'number',
253
+ hasQuestionToken: true,
254
+ docs: [
255
+ 'Offset (0-based). Upload plugin uses flat `start`, not `pagination[start]`.',
256
+ ],
257
+ },
258
+ {
259
+ name: 'limit',
260
+ type: 'number',
261
+ hasQuestionToken: true,
262
+ docs: [
263
+ 'Page size. Upload plugin uses flat `limit`, not `pagination[pageSize]`.',
264
+ ],
265
+ },
266
+ ],
267
+ });
204
268
  // NextOptions interface
205
269
  sf.addInterface({
206
270
  name: 'NextOptions',
@@ -291,11 +355,93 @@ import type { ${filterImports.join(', ')} } from './types.js'`;
291
355
  type: `[TFields] extends [never] ? TFull : Pick<TBase, Extract<TFields | 'id' | 'documentId', keyof TBase>> & Omit<TFull, keyof TBase>`,
292
356
  });
293
357
  }
358
+ addStrapiValidationIssueInterface(sf) {
359
+ sf.addInterface({
360
+ name: 'StrapiValidationIssue',
361
+ isExported: true,
362
+ docs: [
363
+ 'A single validation issue inside a `ValidationError`.\n' +
364
+ 'Mirrors the Yup-style errors Strapi propagates from schema validation.',
365
+ ],
366
+ properties: [
367
+ {
368
+ name: 'path',
369
+ type: 'string[]',
370
+ docs: [
371
+ 'Field path to the offending value (e.g. ["author", "email"]).',
372
+ ],
373
+ },
374
+ { name: 'message', type: 'string' },
375
+ {
376
+ name: 'name',
377
+ type: 'string',
378
+ docs: ['The Yup validator name (e.g. "required").'],
379
+ },
380
+ ],
381
+ });
382
+ }
383
+ addStrapiErrorTypes(sf) {
384
+ const names = STRAPI_ERROR_REGISTRY.map(c => `'${c.errorName}'`);
385
+ const namedUnion = names.join(' | ');
386
+ sf.addTypeAlias({
387
+ name: 'StrapiErrorName',
388
+ isExported: true,
389
+ docs: [
390
+ 'Known Strapi v5 error names. Other strings are still accepted at\n' +
391
+ 'runtime via the `(string & {})` fallback so plugin or future-version\n' +
392
+ 'errors are not lost.',
393
+ ],
394
+ type: `${namedUnion} | (string & {})`,
395
+ });
396
+ const mapEntries = STRAPI_ERROR_REGISTRY.map(c => ` ${c.errorName}: ${c.detailsType}`).join('\n');
397
+ sf.addTypeAlias({
398
+ name: 'StrapiErrorDetailsMap',
399
+ isExported: true,
400
+ docs: [
401
+ 'Maps each known `StrapiErrorName` to the shape of its `details`\n' +
402
+ 'payload. Used by `isStrapiErrorOf` to narrow `details` after the\n' +
403
+ 'discriminator check. Wrapped in `Partial` because Strapi may\n' +
404
+ 'omit `details` even when the error name is known.',
405
+ ],
406
+ type: `Partial<{\n${mapEntries}\n}>`,
407
+ });
408
+ sf.addInterface({
409
+ name: 'UnknownStrapiErrorDetails',
410
+ isExported: true,
411
+ docs: [
412
+ 'Fallback shape when `errorName` is not in `StrapiErrorDetailsMap`\n' +
413
+ '(e.g. 3rd-party plugin errors or Strapi versions newer than this client).',
414
+ ],
415
+ properties: [
416
+ { name: 'errorName', type: 'string' },
417
+ {
418
+ name: 'details',
419
+ type: 'Record<string, unknown>',
420
+ hasQuestionToken: true,
421
+ },
422
+ ],
423
+ });
424
+ }
294
425
  addStrapiErrorClass(sf) {
295
426
  sf.addClass({
296
427
  name: 'StrapiError',
297
428
  isExported: true,
298
- docs: ['Custom error class for Strapi API errors'],
429
+ docs: [
430
+ 'Error thrown for non-2xx responses from Strapi.\n\n' +
431
+ 'Use `isStrapiErrorOf(err, "ValidationError")` (or any other\n' +
432
+ 'name) to narrow `details` to its typed shape.\n\n' +
433
+ '@example\n' +
434
+ '```ts\n' +
435
+ "try { await strapi.articles.create({ title: '' }) }\n" +
436
+ 'catch (e) {\n' +
437
+ " if (isStrapiErrorOf(e, 'ValidationError')) {\n" +
438
+ ' for (const issue of e.details?.errors ?? []) {\n' +
439
+ " console.log(issue.path.join('.'), issue.message)\n" +
440
+ ' }\n' +
441
+ ' }\n' +
442
+ '}\n' +
443
+ '```',
444
+ ],
299
445
  extends: 'Error',
300
446
  properties: [
301
447
  {
@@ -313,11 +459,23 @@ import type { ${filterImports.join(', ')} } from './types.js'`;
313
459
  type: 'string',
314
460
  docs: ['HTTP status text'],
315
461
  },
462
+ {
463
+ name: 'errorName',
464
+ type: 'StrapiErrorName',
465
+ docs: [
466
+ 'Strapi-side error name (e.g. "ValidationError", "PolicyError").\n' +
467
+ 'Use as discriminator with `isStrapiErrorOf`. `Error.name` itself\n' +
468
+ 'remains "StrapiError" so Sentry/sourcemap contracts are unchanged.',
469
+ ],
470
+ },
316
471
  {
317
472
  name: 'details',
318
- type: 'any',
473
+ type: 'unknown',
319
474
  hasQuestionToken: true,
320
- docs: ['Additional error details from Strapi'],
475
+ docs: [
476
+ 'Additional error details from Strapi. Typed as `unknown` —\n' +
477
+ 'narrow via `isStrapiErrorOf` for typed access.',
478
+ ],
321
479
  },
322
480
  ],
323
481
  ctors: [
@@ -329,9 +487,14 @@ import type { ${filterImports.join(', ')} } from './types.js'`;
329
487
  { name: 'statusText', type: 'string' },
330
488
  {
331
489
  name: 'details',
332
- type: 'any',
490
+ type: 'unknown',
333
491
  hasQuestionToken: true,
334
492
  },
493
+ {
494
+ name: 'errorName',
495
+ type: 'StrapiErrorName',
496
+ initializer: "'UnknownError'",
497
+ },
335
498
  ],
336
499
  statements: [
337
500
  'super(message)',
@@ -339,12 +502,39 @@ import type { ${filterImports.join(', ')} } from './types.js'`;
339
502
  'this.userMessage = userMessage',
340
503
  'this.status = status',
341
504
  'this.statusText = statusText',
505
+ 'this.errorName = errorName',
342
506
  'this.details = details',
343
507
  ],
344
508
  },
345
509
  ],
346
510
  });
347
511
  }
512
+ addStrapiErrorTypeGuards(sf) {
513
+ sf.addStatements(`
514
+ /**
515
+ * Type guard: is the value a StrapiError instance?
516
+ */
517
+ export function isStrapiError(err: unknown): err is StrapiError {
518
+ return err instanceof StrapiError
519
+ }
520
+
521
+ /**
522
+ * Type guard that narrows both \`errorName\` and \`details\` for a specific
523
+ * Strapi error type.
524
+ *
525
+ * @example
526
+ * if (isStrapiErrorOf(err, 'ValidationError')) {
527
+ * err.details?.errors?.[0]?.path // string[] | undefined
528
+ * }
529
+ */
530
+ export function isStrapiErrorOf<N extends keyof StrapiErrorDetailsMap>(
531
+ err: unknown,
532
+ name: N,
533
+ ): err is StrapiError & { errorName: N; details: StrapiErrorDetailsMap[N] } {
534
+ return isStrapiError(err) && err.errorName === name
535
+ }
536
+ `);
537
+ }
348
538
  addStrapiConnectionErrorClass(sf) {
349
539
  sf.addClass({
350
540
  name: 'StrapiConnectionError',
@@ -519,7 +709,9 @@ class BaseAPI {
519
709
  \`Strapi returned HTML instead of JSON. Your baseURL may point to the wrong server. URL: \${url}\`,
520
710
  'Unexpected HTML response from server',
521
711
  response.status,
522
- response.statusText
712
+ response.statusText,
713
+ undefined,
714
+ 'UnknownError'
523
715
  )
524
716
  }
525
717
 
@@ -532,7 +724,8 @@ class BaseAPI {
532
724
  userMessage,
533
725
  response.status,
534
726
  response.statusText,
535
- errorData.error?.details
727
+ errorData.error?.details,
728
+ errorData.error?.name ?? 'UnknownError'
536
729
  )
537
730
  }
538
731
 
@@ -831,7 +1024,26 @@ ${customMethods}
831
1024
  }
832
1025
  return `<${contentType.cleanName}, ${contentType.cleanName}Input, ${contentType.cleanName}Filters>`;
833
1026
  }
834
- generateStrapiClient(schema, parsedRoutes) {
1027
+ /**
1028
+ * Compute which entries of `PLUGIN_REGISTRY` should be active for the
1029
+ * current generation. An entry is skipped if the user has a custom
1030
+ * standalone controller that resolves to the same property name —
1031
+ * avoiding both class-name and StrapiClient property collisions. A
1032
+ * single warning per skipped entry is logged.
1033
+ */
1034
+ computeActivePlugins(schema, parsedRoutes) {
1035
+ return PLUGIN_REGISTRY.filter(contract => {
1036
+ const collidesWithUserController = parsedRoutes?.byController.has(contract.clientProperty) &&
1037
+ !schema.contentTypes.some(ct => ct.singularName === contract.clientProperty);
1038
+ if (collidesWithUserController) {
1039
+ console.warn(`[strapi-types] Custom '${contract.clientProperty}' controller detected — ` +
1040
+ `skipping built-in ${contract.className} to avoid name collision.`);
1041
+ return false;
1042
+ }
1043
+ return true;
1044
+ });
1045
+ }
1046
+ generateStrapiClient(schema, parsedRoutes, activePlugins = PLUGIN_REGISTRY) {
835
1047
  // Build property declarations
836
1048
  const propertyDeclarations = schema.contentTypes
837
1049
  .map(contentType => {
@@ -887,13 +1099,28 @@ ${customMethods}
887
1099
  .join('\n');
888
1100
  // Build standalone API initializations
889
1101
  const standaloneInits = this.buildStandaloneInits(schema, parsedRoutes);
1102
+ // Plugin APIs from PLUGIN_REGISTRY — `activePlugins` is precomputed
1103
+ // by the caller (see computeActivePlugins) so the same filter is
1104
+ // applied to both class emission and StrapiClient wiring.
1105
+ const pluginDeclarations = activePlugins
1106
+ .map(c => ` ${c.clientProperty}: ${c.className}`)
1107
+ .join('\n');
1108
+ const pluginInits = activePlugins
1109
+ .map(c => ` this.${c.clientProperty} = new ${c.className}(this.config)`)
1110
+ .join('\n');
1111
+ const pluginDeclarationsBlock = pluginDeclarations
1112
+ ? `\n // Plugin APIs (registry-driven)\n${pluginDeclarations}\n`
1113
+ : '';
1114
+ const pluginInitsBlock = pluginInits
1115
+ ? `\n // Initialize plugin APIs\n${pluginInits}\n`
1116
+ : '';
890
1117
  return `// Main Strapi client
891
1118
  export class StrapiClient {
892
1119
  private config: StrapiClientConfig
893
1120
 
894
1121
  // Auth API for users-permissions plugin
895
1122
  authentication: AuthAPI
896
-
1123
+ ${pluginDeclarationsBlock}
897
1124
  ${propertyDeclarations}
898
1125
  ${standaloneDeclarations}
899
1126
  constructor(config: StrapiClientConfig) {
@@ -901,7 +1128,7 @@ ${standaloneDeclarations}
901
1128
 
902
1129
  // Initialize Auth API
903
1130
  this.authentication = new AuthAPI(this.config)
904
-
1131
+ ${pluginInitsBlock}
905
1132
  ${propertyInits}
906
1133
  ${standaloneInits}
907
1134
  // Auto-validate schema in development mode
@@ -1 +1 @@
1
- {"version":3,"file":"client-generator.js","sourceRoot":"","sources":["../../src/generator/client-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client-generator.js","sourceRoot":"","sources":["../../src/generator/client-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { PluginContract } from './plugin-registry.js';
2
+ /**
3
+ * Generates standalone API classes for Strapi plugins listed in
4
+ * `PLUGIN_REGISTRY`. Each contract becomes a `class XxxAPI extends BaseAPI`
5
+ * with one method per endpoint.
6
+ *
7
+ * Pattern parallels `AuthApiGenerator` — the output is plain TypeScript
8
+ * source assembled via template literals. Body/URL/options shapes are
9
+ * derived declaratively from each `PluginEndpoint`.
10
+ */
11
+ export declare class PluginApiGenerator {
12
+ /**
13
+ * Generate the block of plugin API classes for the supplied contracts.
14
+ * Defaults to all entries in `PLUGIN_REGISTRY`. Caller passes a filtered
15
+ * list to skip contracts whose `clientProperty` collides with a
16
+ * user-defined standalone controller.
17
+ */
18
+ generateAllPluginClasses(contracts?: PluginContract[]): string;
19
+ private generatePluginClass;
20
+ private generateMethod;
21
+ private buildParameters;
22
+ private buildUrlLines;
23
+ private buildRequestOptions;
24
+ private buildDocComment;
25
+ }
26
+ //# sourceMappingURL=plugin-api-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-api-generator.d.ts","sourceRoot":"","sources":["../../src/generator/plugin-api-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,cAAc,EAEjB,MAAM,sBAAsB,CAAA;AAE7B;;;;;;;;GAQG;AACH,qBAAa,kBAAkB;IAC3B;;;;;OAKG;IACH,wBAAwB,CACpB,SAAS,GAAE,cAAc,EAAoB,GAC9C,MAAM;IAMT,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,eAAe;CAO1B"}
@@ -0,0 +1,106 @@
1
+ import { PLUGIN_REGISTRY, } from './plugin-registry.js';
2
+ /**
3
+ * Generates standalone API classes for Strapi plugins listed in
4
+ * `PLUGIN_REGISTRY`. Each contract becomes a `class XxxAPI extends BaseAPI`
5
+ * with one method per endpoint.
6
+ *
7
+ * Pattern parallels `AuthApiGenerator` — the output is plain TypeScript
8
+ * source assembled via template literals. Body/URL/options shapes are
9
+ * derived declaratively from each `PluginEndpoint`.
10
+ */
11
+ export class PluginApiGenerator {
12
+ /**
13
+ * Generate the block of plugin API classes for the supplied contracts.
14
+ * Defaults to all entries in `PLUGIN_REGISTRY`. Caller passes a filtered
15
+ * list to skip contracts whose `clientProperty` collides with a
16
+ * user-defined standalone controller.
17
+ */
18
+ generateAllPluginClasses(contracts = PLUGIN_REGISTRY) {
19
+ return contracts
20
+ .map(contract => this.generatePluginClass(contract))
21
+ .join('\n\n');
22
+ }
23
+ generatePluginClass(contract) {
24
+ const methods = contract.endpoints
25
+ .map(ep => this.generateMethod(ep, contract.errorPrefix))
26
+ .join('\n\n');
27
+ return `// API for "${contract.pluginName}" plugin
28
+ class ${contract.className} extends BaseAPI {
29
+ constructor(config: StrapiClientConfig) {
30
+ super(config)
31
+ }
32
+
33
+ ${methods}
34
+ }`;
35
+ }
36
+ generateMethod(ep, errorPrefix) {
37
+ const params = this.buildParameters(ep);
38
+ const urlLines = this.buildUrlLines(ep);
39
+ const reqOptions = this.buildRequestOptions(ep);
40
+ const docComment = this.buildDocComment(ep);
41
+ const indentedUrl = urlLines.map(line => ` ${line}`).join('\n');
42
+ return `${docComment}
43
+ async ${ep.methodName}(${params}): Promise<${ep.responseType}> {
44
+ ${indentedUrl}
45
+ return this.request<${ep.responseType}>(url, ${reqOptions}, nextOptions, '${errorPrefix}')
46
+ }`;
47
+ }
48
+ buildParameters(ep) {
49
+ const parts = [];
50
+ if (ep.paramTypes) {
51
+ for (const [name, type] of Object.entries(ep.paramTypes)) {
52
+ parts.push(`${name}: ${type}`);
53
+ }
54
+ }
55
+ if (ep.bodyType) {
56
+ parts.push(`body: ${ep.bodyType}`);
57
+ }
58
+ if (ep.queryType) {
59
+ parts.push(`params?: ${ep.queryType}`);
60
+ }
61
+ parts.push('nextOptions?: NextOptions');
62
+ return parts.join(', ');
63
+ }
64
+ buildUrlLines(ep) {
65
+ let path = ep.path;
66
+ if (ep.paramTypes) {
67
+ for (const name of Object.keys(ep.paramTypes)) {
68
+ path = path.split(`:${name}`).join(`\${${name}}`);
69
+ }
70
+ }
71
+ if (ep.queryType) {
72
+ return [
73
+ 'const query = this.buildQueryString(params)',
74
+ `const url = \`\${this.config.baseURL}/api${path}\${query}\``,
75
+ ];
76
+ }
77
+ return [`const url = \`\${this.config.baseURL}/api${path}\``];
78
+ }
79
+ buildRequestOptions(ep) {
80
+ const opts = [];
81
+ if (ep.method !== 'GET') {
82
+ opts.push(`method: '${ep.method}'`);
83
+ }
84
+ if (ep.bodyType) {
85
+ // FormData passes through as-is so the browser sets multipart
86
+ // boundary; everything else gets JSON-serialized.
87
+ if (ep.bodyType === 'FormData') {
88
+ opts.push('body');
89
+ }
90
+ else {
91
+ opts.push('body: JSON.stringify(body)');
92
+ }
93
+ }
94
+ if (opts.length === 0)
95
+ return '{}';
96
+ return `{ ${opts.join(', ')} }`;
97
+ }
98
+ buildDocComment(ep) {
99
+ const route = `${ep.method} /api${ep.path}`;
100
+ if (!ep.description) {
101
+ return ` /** ${route} */`;
102
+ }
103
+ return ` /**\n * ${ep.description}\n *\n * ${route}\n */`;
104
+ }
105
+ }
106
+ //# sourceMappingURL=plugin-api-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-api-generator.js","sourceRoot":"","sources":["../../src/generator/plugin-api-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Declarative registry of Strapi plugin content-API contracts.
3
+ *
4
+ * Each entry describes a plugin and the endpoints it exposes. The
5
+ * `PluginApiGenerator` consumes this registry to emit typed standalone API
6
+ * classes on `StrapiClient` (e.g. `client.upload`).
7
+ *
8
+ * To add support for a new CRUD-style plugin, append a `PluginContract` here.
9
+ * No other code changes are required — generation, property declaration, and
10
+ * init wiring all flow from this registry.
11
+ *
12
+ * Auth (users-permissions) is intentionally NOT in the registry: it has
13
+ * non-CRUD endpoints (OAuth callback, forgot/reset/change password,
14
+ * me/updateMe with populate inference) that don't fit the declarative shape.
15
+ * It stays in `auth-api-generator.ts`.
16
+ */
17
+ export interface PluginEndpoint {
18
+ /** Method name on the generated API class (e.g. 'findOne'). */
19
+ methodName: string;
20
+ /** HTTP method. */
21
+ method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
22
+ /**
23
+ * Path relative to /api, may contain `:paramName` segments.
24
+ * Example: '/upload/files/:id'.
25
+ */
26
+ path: string;
27
+ /** TypeScript type expression for the body parameter, if any. */
28
+ bodyType?: string;
29
+ /** TypeScript type expression for the query params, if any. */
30
+ queryType?: string;
31
+ /** Path-parameter types, keyed by param name as it appears in `path`. */
32
+ paramTypes?: Record<string, string>;
33
+ /** TypeScript type expression for the response. */
34
+ responseType: string;
35
+ /** Optional one-line description used as a JSDoc comment on the method. */
36
+ description?: string;
37
+ }
38
+ export interface PluginContract {
39
+ /** Strapi plugin name (informational, not used for routing). */
40
+ pluginName: string;
41
+ /** Property name on `StrapiClient` (e.g. 'upload' → `client.upload`). */
42
+ clientProperty: string;
43
+ /** Class name for the generated API class (e.g. 'UploadAPI'). */
44
+ className: string;
45
+ /** errorPrefix passed to `BaseAPI.request()`. */
46
+ errorPrefix: string;
47
+ /** Endpoints this plugin exposes. */
48
+ endpoints: PluginEndpoint[];
49
+ }
50
+ export declare const PLUGIN_REGISTRY: PluginContract[];
51
+ //# sourceMappingURL=plugin-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-registry.d.ts","sourceRoot":"","sources":["../../src/generator/plugin-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,cAAc;IAC3B,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAA;IAClB,mBAAmB;IACnB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAA;IACnD;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,mDAAmD;IACnD,YAAY,EAAE,MAAM,CAAA;IACpB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,cAAc;IAC3B,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAA;IACtB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAA;IACnB,qCAAqC;IACrC,SAAS,EAAE,cAAc,EAAE,CAAA;CAC9B;AAED,eAAO,MAAM,eAAe,EAAE,cAAc,EA4C3C,CAAA"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Declarative registry of Strapi plugin content-API contracts.
3
+ *
4
+ * Each entry describes a plugin and the endpoints it exposes. The
5
+ * `PluginApiGenerator` consumes this registry to emit typed standalone API
6
+ * classes on `StrapiClient` (e.g. `client.upload`).
7
+ *
8
+ * To add support for a new CRUD-style plugin, append a `PluginContract` here.
9
+ * No other code changes are required — generation, property declaration, and
10
+ * init wiring all flow from this registry.
11
+ *
12
+ * Auth (users-permissions) is intentionally NOT in the registry: it has
13
+ * non-CRUD endpoints (OAuth callback, forgot/reset/change password,
14
+ * me/updateMe with populate inference) that don't fit the declarative shape.
15
+ * It stays in `auth-api-generator.ts`.
16
+ */
17
+ export const PLUGIN_REGISTRY = [
18
+ {
19
+ pluginName: 'upload',
20
+ clientProperty: 'upload',
21
+ className: 'UploadAPI',
22
+ errorPrefix: 'Strapi Upload',
23
+ endpoints: [
24
+ {
25
+ methodName: 'upload',
26
+ method: 'POST',
27
+ path: '/upload',
28
+ bodyType: 'FormData',
29
+ responseType: 'MediaFile[]',
30
+ description: 'Upload one or more files. Pass FormData with field "files".',
31
+ },
32
+ {
33
+ methodName: 'find',
34
+ method: 'GET',
35
+ path: '/upload/files',
36
+ queryType: 'UploadQueryParams',
37
+ responseType: 'MediaFile[]',
38
+ description: 'List uploaded files. Supports filters/sort and flat start/limit pagination.',
39
+ },
40
+ {
41
+ methodName: 'findOne',
42
+ method: 'GET',
43
+ path: '/upload/files/:id',
44
+ paramTypes: { id: 'number' },
45
+ responseType: 'MediaFile',
46
+ description: 'Get a single uploaded file by numeric id.',
47
+ },
48
+ {
49
+ methodName: 'destroy',
50
+ method: 'DELETE',
51
+ path: '/upload/files/:id',
52
+ paramTypes: { id: 'number' },
53
+ responseType: 'MediaFile',
54
+ description: 'Delete an uploaded file by numeric id. Returns the deleted file.',
55
+ },
56
+ ],
57
+ },
58
+ ];
59
+ //# sourceMappingURL=plugin-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-registry.js","sourceRoot":"","sources":["../../src/generator/plugin-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAqCH,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC7C;QACI,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;QACxB,SAAS,EAAE,WAAW;QACtB,WAAW,EAAE,eAAe;QAC5B,SAAS,EAAE;YACP;gBACI,UAAU,EAAE,QAAQ;gBACpB,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,UAAU;gBACpB,YAAY,EAAE,aAAa;gBAC3B,WAAW,EACP,6DAA6D;aACpE;YACD;gBACI,UAAU,EAAE,MAAM;gBAClB,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,eAAe;gBACrB,SAAS,EAAE,mBAAmB;gBAC9B,YAAY,EAAE,aAAa;gBAC3B,WAAW,EACP,6EAA6E;aACpF;YACD;gBACI,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,mBAAmB;gBACzB,UAAU,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;gBAC5B,YAAY,EAAE,WAAW;gBACzB,WAAW,EAAE,2CAA2C;aAC3D;YACD;gBACI,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,mBAAmB;gBACzB,UAAU,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;gBAC5B,YAAY,EAAE,WAAW;gBACzB,WAAW,EACP,kEAAkE;aACzE;SACJ;KACJ;CACJ,CAAA"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Declarative registry of Strapi v5 error types and the shape of their
3
+ * `details` payloads.
4
+ *
5
+ * Used by the client generator to emit:
6
+ * - the `StrapiErrorName` literal union
7
+ * - the `StrapiErrorDetailsMap` mapped type (keyed by errorName)
8
+ * - JSDoc on the generated `StrapiError` class
9
+ *
10
+ * Adding a new known error type means appending one entry here. Unknown
11
+ * names still pass through at runtime via the `string` fallback in
12
+ * `StrapiErrorName` and the `UnknownStrapiErrorDetails` type.
13
+ *
14
+ * Pattern parallels `plugin-registry.ts` so that a future OpenAPI-driven
15
+ * pipeline can substitute either registry as a fallback when the
16
+ * `@strapi/plugin-documentation` schema is unavailable.
17
+ */
18
+ export interface StrapiErrorContract {
19
+ /** Strapi-side error name, used as the discriminator value. */
20
+ errorName: string;
21
+ /** Default HTTP status. Informational — runtime status comes from response. */
22
+ status: number;
23
+ /**
24
+ * TypeScript type expression for `details`.
25
+ *
26
+ * Use `'undefined'` for stateless errors so `err.details` is typed as
27
+ * optional/undefined (cleaner DX than `Record<string, never>`).
28
+ */
29
+ detailsType: string;
30
+ /** Optional one-line description used as JSDoc on the union arm. */
31
+ description?: string;
32
+ }
33
+ export declare const STRAPI_ERROR_REGISTRY: StrapiErrorContract[];
34
+ //# sourceMappingURL=strapi-error-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strapi-error-registry.d.ts","sourceRoot":"","sources":["../../src/generator/strapi-error-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,mBAAmB;IAChC,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAA;IACjB,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAA;IACd;;;;;OAKG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,EA4DtD,CAAA"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Declarative registry of Strapi v5 error types and the shape of their
3
+ * `details` payloads.
4
+ *
5
+ * Used by the client generator to emit:
6
+ * - the `StrapiErrorName` literal union
7
+ * - the `StrapiErrorDetailsMap` mapped type (keyed by errorName)
8
+ * - JSDoc on the generated `StrapiError` class
9
+ *
10
+ * Adding a new known error type means appending one entry here. Unknown
11
+ * names still pass through at runtime via the `string` fallback in
12
+ * `StrapiErrorName` and the `UnknownStrapiErrorDetails` type.
13
+ *
14
+ * Pattern parallels `plugin-registry.ts` so that a future OpenAPI-driven
15
+ * pipeline can substitute either registry as a fallback when the
16
+ * `@strapi/plugin-documentation` schema is unavailable.
17
+ */
18
+ export const STRAPI_ERROR_REGISTRY = [
19
+ {
20
+ errorName: 'ValidationError',
21
+ status: 400,
22
+ detailsType: '{ errors: StrapiValidationIssue[] }',
23
+ description: 'Schema validation failed on the request body.',
24
+ },
25
+ {
26
+ errorName: 'BadRequestError',
27
+ status: 400,
28
+ detailsType: 'Record<string, unknown>',
29
+ },
30
+ {
31
+ errorName: 'PaginationError',
32
+ status: 400,
33
+ detailsType: 'Record<string, unknown>',
34
+ },
35
+ {
36
+ errorName: 'UnauthorizedError',
37
+ status: 401,
38
+ detailsType: 'undefined',
39
+ description: 'Missing or invalid auth token.',
40
+ },
41
+ {
42
+ errorName: 'ForbiddenError',
43
+ status: 403,
44
+ detailsType: 'undefined',
45
+ description: 'Token lacks permission for this endpoint.',
46
+ },
47
+ {
48
+ errorName: 'PolicyError',
49
+ status: 403,
50
+ detailsType: '{ policy?: string; message?: string }',
51
+ description: 'A Strapi policy rejected the request.',
52
+ },
53
+ {
54
+ errorName: 'NotFoundError',
55
+ status: 404,
56
+ detailsType: 'undefined',
57
+ },
58
+ {
59
+ errorName: 'ConflictError',
60
+ status: 409,
61
+ detailsType: 'Record<string, unknown>',
62
+ },
63
+ {
64
+ errorName: 'PayloadTooLargeError',
65
+ status: 413,
66
+ detailsType: 'undefined',
67
+ },
68
+ {
69
+ errorName: 'RateLimitError',
70
+ status: 429,
71
+ detailsType: 'Record<string, unknown>',
72
+ },
73
+ {
74
+ errorName: 'ApplicationError',
75
+ status: 500,
76
+ detailsType: 'Record<string, unknown>',
77
+ },
78
+ ];
79
+ //# sourceMappingURL=strapi-error-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strapi-error-registry.js","sourceRoot":"","sources":["../../src/generator/strapi-error-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAkBH,MAAM,CAAC,MAAM,qBAAqB,GAA0B;IACxD;QACI,SAAS,EAAE,iBAAiB;QAC5B,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,qCAAqC;QAClD,WAAW,EAAE,+CAA+C;KAC/D;IACD;QACI,SAAS,EAAE,iBAAiB;QAC5B,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,yBAAyB;KACzC;IACD;QACI,SAAS,EAAE,iBAAiB;QAC5B,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,yBAAyB;KACzC;IACD;QACI,SAAS,EAAE,mBAAmB;QAC9B,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,WAAW;QACxB,WAAW,EAAE,gCAAgC;KAChD;IACD;QACI,SAAS,EAAE,gBAAgB;QAC3B,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,WAAW;QACxB,WAAW,EAAE,2CAA2C;KAC3D;IACD;QACI,SAAS,EAAE,aAAa;QACxB,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,uCAAuC;QACpD,WAAW,EAAE,uCAAuC;KACvD;IACD;QACI,SAAS,EAAE,eAAe;QAC1B,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,WAAW;KAC3B;IACD;QACI,SAAS,EAAE,eAAe;QAC1B,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,yBAAyB;KACzC;IACD;QACI,SAAS,EAAE,sBAAsB;QACjC,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,WAAW;KAC3B;IACD;QACI,SAAS,EAAE,gBAAgB;QAC3B,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,yBAAyB;KACzC;IACD;QACI,SAAS,EAAE,kBAAkB;QAC7B,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,yBAAyB;KACzC;CACJ,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,15 +1,98 @@
1
+ /**
2
+ * A single validation issue inside a `ValidationError`.
3
+ * Mirrors the Yup-style errors Strapi propagates from schema validation.
4
+ */
5
+ export interface StrapiValidationIssue {
6
+ path: string[];
7
+ message: string;
8
+ name: string;
9
+ }
10
+ /**
11
+ * Known Strapi v5 error names. Other strings still pass through at
12
+ * runtime (for plugin or future-version errors) via the `(string & {})`
13
+ * fallback.
14
+ */
15
+ export type StrapiErrorName = 'ValidationError' | 'BadRequestError' | 'PaginationError' | 'UnauthorizedError' | 'ForbiddenError' | 'PolicyError' | 'NotFoundError' | 'ConflictError' | 'PayloadTooLargeError' | 'RateLimitError' | 'ApplicationError' | (string & {});
16
+ /**
17
+ * Maps each known `StrapiErrorName` to its `details` payload shape.
18
+ * Used by `isStrapiErrorOf` to narrow `details` after the discriminator
19
+ * check. Wrapped in `Partial` because Strapi may omit `details` even
20
+ * when the error name is known.
21
+ */
22
+ export type StrapiErrorDetailsMap = Partial<{
23
+ ValidationError: {
24
+ errors: StrapiValidationIssue[];
25
+ };
26
+ BadRequestError: Record<string, unknown>;
27
+ PaginationError: Record<string, unknown>;
28
+ UnauthorizedError: undefined;
29
+ ForbiddenError: undefined;
30
+ PolicyError: {
31
+ policy?: string;
32
+ message?: string;
33
+ };
34
+ NotFoundError: undefined;
35
+ ConflictError: Record<string, unknown>;
36
+ PayloadTooLargeError: undefined;
37
+ RateLimitError: Record<string, unknown>;
38
+ ApplicationError: Record<string, unknown>;
39
+ }>;
40
+ /**
41
+ * Fallback shape when `errorName` is not in `StrapiErrorDetailsMap`
42
+ * (e.g. 3rd-party plugin errors or Strapi versions newer than this client).
43
+ */
44
+ export interface UnknownStrapiErrorDetails {
45
+ errorName: string;
46
+ details?: Record<string, unknown>;
47
+ }
48
+ /**
49
+ * Error thrown for non-2xx responses from Strapi. Use `isStrapiErrorOf`
50
+ * to narrow `details` to its typed shape.
51
+ *
52
+ * @example
53
+ * try { await strapi.articles.create({ title: '' }) }
54
+ * catch (e) {
55
+ * if (isStrapiErrorOf(e, 'ValidationError')) {
56
+ * for (const issue of e.details?.errors ?? []) {
57
+ * console.log(issue.path.join('.'), issue.message)
58
+ * }
59
+ * }
60
+ * }
61
+ */
1
62
  export declare class StrapiError extends Error {
2
63
  userMessage: string;
3
64
  status: number;
4
65
  statusText: string;
5
- details?: any;
6
- constructor(message: string, userMessage: string, status: number, statusText: string, details?: any);
66
+ /**
67
+ * Strapi-side error name (e.g. "ValidationError"). `Error.name`
68
+ * itself remains "StrapiError" so Sentry/sourcemap contracts are
69
+ * unchanged.
70
+ */
71
+ errorName: StrapiErrorName;
72
+ /** Narrow via `isStrapiErrorOf` for typed access. */
73
+ details?: unknown;
74
+ constructor(message: string, userMessage: string, status: number, statusText: string, details?: unknown, errorName?: StrapiErrorName);
7
75
  }
8
76
  export declare class StrapiConnectionError extends Error {
9
77
  url: string;
10
78
  cause?: Error;
11
79
  constructor(message: string, url: string, cause?: Error);
12
80
  }
81
+ /** Type guard: is the value a StrapiError instance? */
82
+ export declare function isStrapiError(err: unknown): err is StrapiError;
83
+ /**
84
+ * Type guard that narrows both `errorName` and `details` for a specific
85
+ * Strapi error type.
86
+ *
87
+ * @example
88
+ * if (isStrapiErrorOf(err, 'ValidationError')) {
89
+ * err.details?.errors?.[0]?.path // string[] | undefined
90
+ * }
91
+ */
92
+ export declare function isStrapiErrorOf<N extends keyof StrapiErrorDetailsMap>(err: unknown, name: N): err is StrapiError & {
93
+ errorName: N;
94
+ details: StrapiErrorDetailsMap[N];
95
+ };
13
96
  export declare class StrapiClient {
14
97
  constructor(_config: {
15
98
  baseURL: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,qBAAa,WAAY,SAAQ,KAAK;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,GAAG,CAAA;gBAGT,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,GAAG;CASpB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC5C,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,KAAK,CAAA;gBAED,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAM1D;AAED,qBAAa,YAAY;gBACT,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;CAG3D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACf;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GACrB,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,GACjB,mBAAmB,GACnB,gBAAgB,GAChB,aAAa,GACb,eAAe,GACf,eAAe,GACf,sBAAsB,GACtB,gBAAgB,GAChB,kBAAkB,GAClB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAEnB;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC;IACxC,eAAe,EAAE;QAAE,MAAM,EAAE,qBAAqB,EAAE,CAAA;KAAE,CAAA;IACpD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACxC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACxC,iBAAiB,EAAE,SAAS,CAAA;IAC5B,cAAc,EAAE,SAAS,CAAA;IACzB,WAAW,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAClD,aAAa,EAAE,SAAS,CAAA;IACxB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACtC,oBAAoB,EAAE,SAAS,CAAA;IAC/B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC5C,CAAC,CAAA;AAEF;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,WAAY,SAAQ,KAAK;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,SAAS,EAAE,eAAe,CAAA;IAC1B,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAA;gBAGb,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,OAAO,EACjB,SAAS,GAAE,eAAgC;CAUlD;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC5C,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,KAAK,CAAA;gBAED,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAM1D;AAED,uDAAuD;AACvD,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,WAAW,CAE9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,qBAAqB,EACjE,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,CAAC,GACR,GAAG,IAAI,WAAW,GAAG;IACpB,SAAS,EAAE,CAAC,CAAA;IACZ,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAA;CACpC,CAEA;AAED,qBAAa,YAAY;gBACT,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;CAG3D"}
package/dist/index.js CHANGED
@@ -3,20 +3,45 @@
3
3
  // dist/index.js (and .d.ts) with real, schema-aware code.
4
4
  // Until then this stub provides importable symbols that throw at runtime
5
5
  // with a helpful message explaining what to do.
6
+ //
7
+ // IMPORTANT: keep this file in lockstep with what the generator emits in
8
+ // `src/generator/client-generator.ts`. Pre-generation imports must compile.
6
9
  const NOT_GENERATED_MESSAGE = '[strapi-typed-client] Types have not been generated yet.\n' +
7
10
  'Run: npx strapi-types generate --url <your-strapi-url>\n' +
8
11
  'Docs: https://github.com/BoxLab-Ltd/strapi-typed-client#quick-start';
12
+ /**
13
+ * Error thrown for non-2xx responses from Strapi. Use `isStrapiErrorOf`
14
+ * to narrow `details` to its typed shape.
15
+ *
16
+ * @example
17
+ * try { await strapi.articles.create({ title: '' }) }
18
+ * catch (e) {
19
+ * if (isStrapiErrorOf(e, 'ValidationError')) {
20
+ * for (const issue of e.details?.errors ?? []) {
21
+ * console.log(issue.path.join('.'), issue.message)
22
+ * }
23
+ * }
24
+ * }
25
+ */
9
26
  export class StrapiError extends Error {
10
27
  userMessage;
11
28
  status;
12
29
  statusText;
30
+ /**
31
+ * Strapi-side error name (e.g. "ValidationError"). `Error.name`
32
+ * itself remains "StrapiError" so Sentry/sourcemap contracts are
33
+ * unchanged.
34
+ */
35
+ errorName;
36
+ /** Narrow via `isStrapiErrorOf` for typed access. */
13
37
  details;
14
- constructor(message, userMessage, status, statusText, details) {
38
+ constructor(message, userMessage, status, statusText, details, errorName = 'UnknownError') {
15
39
  super(message);
16
40
  this.name = 'StrapiError';
17
41
  this.userMessage = userMessage;
18
42
  this.status = status;
19
43
  this.statusText = statusText;
44
+ this.errorName = errorName;
20
45
  this.details = details;
21
46
  }
22
47
  }
@@ -30,6 +55,22 @@ export class StrapiConnectionError extends Error {
30
55
  this.cause = cause;
31
56
  }
32
57
  }
58
+ /** Type guard: is the value a StrapiError instance? */
59
+ export function isStrapiError(err) {
60
+ return err instanceof StrapiError;
61
+ }
62
+ /**
63
+ * Type guard that narrows both `errorName` and `details` for a specific
64
+ * Strapi error type.
65
+ *
66
+ * @example
67
+ * if (isStrapiErrorOf(err, 'ValidationError')) {
68
+ * err.details?.errors?.[0]?.path // string[] | undefined
69
+ * }
70
+ */
71
+ export function isStrapiErrorOf(err, name) {
72
+ return isStrapiError(err) && err.errorName === name;
73
+ }
33
74
  export class StrapiClient {
34
75
  constructor(_config) {
35
76
  throw new Error(NOT_GENERATED_MESSAGE);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,2EAA2E;AAC3E,0DAA0D;AAC1D,yEAAyE;AACzE,gDAAgD;AAEhD,MAAM,qBAAqB,GACvB,4DAA4D;IAC5D,0DAA0D;IAC1D,qEAAqE,CAAA;AAEzE,MAAM,OAAO,WAAY,SAAQ,KAAK;IAClC,WAAW,CAAQ;IACnB,MAAM,CAAQ;IACd,UAAU,CAAQ;IAClB,OAAO,CAAM;IAEb,YACI,OAAe,EACf,WAAmB,EACnB,MAAc,EACd,UAAkB,EAClB,OAAa;QAEb,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;QACzB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;CACJ;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC5C,GAAG,CAAQ;IACX,KAAK,CAAQ;IAEb,YAAY,OAAe,EAAE,GAAW,EAAE,KAAa;QACnD,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;QACnC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACtB,CAAC;CACJ;AAED,MAAM,OAAO,YAAY;IACrB,YAAY,OAA4C;QACpD,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;IAC1C,CAAC;CACJ"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,2EAA2E;AAC3E,0DAA0D;AAC1D,yEAAyE;AACzE,gDAAgD;AAChD,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAE5E,MAAM,qBAAqB,GACvB,4DAA4D;IAC5D,0DAA0D;IAC1D,qEAAqE,CAAA;AA4DzE;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAClC,WAAW,CAAQ;IACnB,MAAM,CAAQ;IACd,UAAU,CAAQ;IAClB;;;;OAIG;IACH,SAAS,CAAiB;IAC1B,qDAAqD;IACrD,OAAO,CAAU;IAEjB,YACI,OAAe,EACf,WAAmB,EACnB,MAAc,EACd,UAAkB,EAClB,OAAiB,EACjB,YAA6B,cAAc;QAE3C,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;QACzB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;CACJ;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC5C,GAAG,CAAQ;IACX,KAAK,CAAQ;IAEb,YAAY,OAAe,EAAE,GAAW,EAAE,KAAa;QACnD,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;QACnC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACtB,CAAC;CACJ;AAED,uDAAuD;AACvD,MAAM,UAAU,aAAa,CAAC,GAAY;IACtC,OAAO,GAAG,YAAY,WAAW,CAAA;AACrC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC3B,GAAY,EACZ,IAAO;IAKP,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,CAAA;AACvD,CAAC;AAED,MAAM,OAAO,YAAY;IACrB,YAAY,OAA4C;QACpD,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;IAC1C,CAAC;CACJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "strapi-typed-client",
3
- "version": "1.4.1",
3
+ "version": "1.5.0",
4
4
  "type": "module",
5
5
  "description": "Type-safe Strapi v5 client with automatic TypeScript codegen and populate type inference",
6
6
  "main": "dist/index.js",