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 +2 -0
- package/dist/generator/client-generator.d.ts +12 -0
- package/dist/generator/client-generator.d.ts.map +1 -1
- package/dist/generator/client-generator.js +237 -10
- package/dist/generator/client-generator.js.map +1 -1
- package/dist/generator/plugin-api-generator.d.ts +26 -0
- package/dist/generator/plugin-api-generator.d.ts.map +1 -0
- package/dist/generator/plugin-api-generator.js +106 -0
- package/dist/generator/plugin-api-generator.js.map +1 -0
- package/dist/generator/plugin-registry.d.ts +51 -0
- package/dist/generator/plugin-registry.d.ts.map +1 -0
- package/dist/generator/plugin-registry.js +59 -0
- package/dist/generator/plugin-registry.js.map +1 -0
- package/dist/generator/strapi-error-registry.d.ts +34 -0
- package/dist/generator/strapi-error-registry.d.ts.map +1 -0
- package/dist/generator/strapi-error-registry.js +79 -0
- package/dist/generator/strapi-error-registry.js.map +1 -0
- package/dist/index.d.ts +85 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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;
|
|
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: [
|
|
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: '
|
|
473
|
+
type: 'unknown',
|
|
319
474
|
hasQuestionToken: true,
|
|
320
|
-
docs: [
|
|
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: '
|
|
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
|
-
|
|
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
|
-
|
|
6
|
-
|
|
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;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
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;
|
|
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"}
|