strapi-typed-client 1.6.1 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +2 -2
  2. package/dist/cli/commands/check.d.ts +2 -3
  3. package/dist/cli/commands/check.d.ts.map +1 -1
  4. package/dist/cli/commands/check.js +3 -3
  5. package/dist/cli/commands/check.js.map +1 -1
  6. package/dist/cli/commands/generate.d.ts +3 -3
  7. package/dist/cli/commands/generate.d.ts.map +1 -1
  8. package/dist/cli/commands/generate.js +6 -4
  9. package/dist/cli/commands/generate.js.map +1 -1
  10. package/dist/cli/commands/watch.d.ts +3 -3
  11. package/dist/cli/commands/watch.d.ts.map +1 -1
  12. package/dist/cli/commands/watch.js +19 -9
  13. package/dist/cli/commands/watch.js.map +1 -1
  14. package/dist/cli/utils/file-writer.d.ts +8 -7
  15. package/dist/cli/utils/file-writer.d.ts.map +1 -1
  16. package/dist/cli/utils/file-writer.js +17 -61
  17. package/dist/cli/utils/file-writer.js.map +1 -1
  18. package/dist/core/endpoint-converter.d.ts +5 -1
  19. package/dist/core/endpoint-converter.d.ts.map +1 -1
  20. package/dist/core/endpoint-converter.js +114 -8
  21. package/dist/core/endpoint-converter.js.map +1 -1
  22. package/dist/generator/auth-api-generator.d.ts +11 -3
  23. package/dist/generator/auth-api-generator.d.ts.map +1 -1
  24. package/dist/generator/auth-api-generator.js +213 -220
  25. package/dist/generator/auth-api-generator.js.map +1 -1
  26. package/dist/generator/client-generator.d.ts +9 -0
  27. package/dist/generator/client-generator.d.ts.map +1 -1
  28. package/dist/generator/client-generator.js +201 -78
  29. package/dist/generator/client-generator.js.map +1 -1
  30. package/dist/generator/custom-api-generator.d.ts +1 -1
  31. package/dist/generator/custom-api-generator.d.ts.map +1 -1
  32. package/dist/generator/custom-api-generator.js +29 -5
  33. package/dist/generator/custom-api-generator.js.map +1 -1
  34. package/dist/generator/index-generator.d.ts.map +1 -1
  35. package/dist/generator/index-generator.js +0 -1
  36. package/dist/generator/index-generator.js.map +1 -1
  37. package/dist/generator/index.d.ts +18 -1
  38. package/dist/generator/index.d.ts.map +1 -1
  39. package/dist/generator/index.js +85 -9
  40. package/dist/generator/index.js.map +1 -1
  41. package/dist/generator/plugin-api-generator.d.ts +2 -0
  42. package/dist/generator/plugin-api-generator.d.ts.map +1 -1
  43. package/dist/generator/plugin-api-generator.js +23 -1
  44. package/dist/generator/plugin-api-generator.js.map +1 -1
  45. package/dist/generator/plugin-registry.d.ts +5 -0
  46. package/dist/generator/plugin-registry.d.ts.map +1 -1
  47. package/dist/generator/plugin-registry.js +2 -1
  48. package/dist/generator/plugin-registry.js.map +1 -1
  49. package/dist/generator/types-generator.d.ts +13 -3
  50. package/dist/generator/types-generator.d.ts.map +1 -1
  51. package/dist/generator/types-generator.js +91 -101
  52. package/dist/generator/types-generator.js.map +1 -1
  53. package/dist/next/index.d.ts +9 -1
  54. package/dist/next/index.d.ts.map +1 -1
  55. package/dist/next/index.js +46 -45
  56. package/dist/next/index.js.map +1 -1
  57. package/dist/schema-types.d.ts +1 -1
  58. package/dist/schema-types.d.ts.map +1 -1
  59. package/dist/shared/client-header.d.ts +19 -0
  60. package/dist/shared/client-header.d.ts.map +1 -0
  61. package/dist/shared/client-header.js +58 -0
  62. package/dist/shared/client-header.js.map +1 -0
  63. package/package.json +9 -15
  64. package/dist/index.d.ts +0 -102
  65. package/dist/index.d.ts.map +0 -1
  66. package/dist/index.js +0 -79
  67. package/dist/index.js.map +0 -1
  68. package/src/generator/templates/stringify-query.ts +0 -36
@@ -1,5 +1,95 @@
1
1
  import { Project } from 'ts-morph';
2
2
  import { toCamelCase } from '../shared/index.js';
3
+ /**
4
+ * Standard users-permissions auth routes, used as the fallback when the schema
5
+ * API reports no auth routes (a real Strapi always registers these). Feeding
6
+ * them through the same builder as discovered routes keeps a single code path —
7
+ * there is no separate hand-written "hardcoded" class to drift out of sync.
8
+ */
9
+ const DEFAULT_AUTH_ROUTES = [
10
+ {
11
+ method: 'POST',
12
+ path: '/auth/local',
13
+ handler: 'auth.callback',
14
+ controller: 'auth',
15
+ action: 'callback',
16
+ params: [],
17
+ },
18
+ {
19
+ method: 'POST',
20
+ path: '/auth/local/register',
21
+ handler: 'auth.register',
22
+ controller: 'auth',
23
+ action: 'register',
24
+ params: [],
25
+ },
26
+ {
27
+ method: 'GET',
28
+ path: '/auth/:provider/callback',
29
+ handler: 'auth.callback',
30
+ controller: 'auth',
31
+ action: 'callback',
32
+ params: ['provider'],
33
+ },
34
+ {
35
+ method: 'POST',
36
+ path: '/auth/forgot-password',
37
+ handler: 'auth.forgotPassword',
38
+ controller: 'auth',
39
+ action: 'forgotPassword',
40
+ params: [],
41
+ },
42
+ {
43
+ method: 'POST',
44
+ path: '/auth/reset-password',
45
+ handler: 'auth.resetPassword',
46
+ controller: 'auth',
47
+ action: 'resetPassword',
48
+ params: [],
49
+ },
50
+ {
51
+ method: 'POST',
52
+ path: '/auth/change-password',
53
+ handler: 'auth.changePassword',
54
+ controller: 'auth',
55
+ action: 'changePassword',
56
+ params: [],
57
+ },
58
+ {
59
+ method: 'GET',
60
+ path: '/auth/email-confirmation',
61
+ handler: 'auth.emailConfirmation',
62
+ controller: 'auth',
63
+ action: 'emailConfirmation',
64
+ params: [],
65
+ },
66
+ {
67
+ method: 'POST',
68
+ path: '/auth/send-email-confirmation',
69
+ handler: 'auth.sendEmailConfirmation',
70
+ controller: 'auth',
71
+ action: 'sendEmailConfirmation',
72
+ params: [],
73
+ },
74
+ ];
75
+ const DEFAULT_USER_ROUTES = [
76
+ {
77
+ method: 'GET',
78
+ path: '/users/me',
79
+ handler: 'user.me',
80
+ controller: 'user',
81
+ action: 'me',
82
+ params: [],
83
+ },
84
+ {
85
+ method: 'PUT',
86
+ path: '/users/me',
87
+ handler: 'user.updateMe',
88
+ controller: 'user',
89
+ action: 'updateMe',
90
+ params: [],
91
+ },
92
+ ];
3
93
  export class AuthApiGenerator {
4
94
  generateAuthTypes() {
5
95
  const project = new Project({ useInMemoryFileSystem: true });
@@ -71,222 +161,60 @@ export class AuthApiGenerator {
71
161
  { name: 'user', type: 'User' },
72
162
  ],
73
163
  });
164
+ // POST /api/auth/forgot-password always answers `{ ok: true }` (Strapi
165
+ // never reveals whether the email exists — anti-enumeration).
166
+ sf.addInterface({
167
+ name: 'ForgotPasswordResponse',
168
+ isExported: true,
169
+ properties: [{ name: 'ok', type: 'true' }],
170
+ });
171
+ // POST /api/auth/send-email-confirmation echoes the target address and
172
+ // a delivery flag.
173
+ sf.addInterface({
174
+ name: 'SendEmailConfirmationResponse',
175
+ isExported: true,
176
+ properties: [
177
+ { name: 'email', type: 'string' },
178
+ { name: 'sent', type: 'boolean' },
179
+ ],
180
+ });
74
181
  return sf.getFullText();
75
182
  }
76
183
  generateAuthApiClass(authRoutes = [], userRoutes = []) {
77
- const allAuthRoutes = [...authRoutes, ...userRoutes];
78
- // If no routes provided, use hardcoded version
79
- if (allAuthRoutes.length === 0) {
80
- return this.generateHardcodedAuthApiClass();
81
- }
82
- // Generate dynamic AuthAPI based on actual routes
83
- return this.generateDynamicAuthApiClass(authRoutes, userRoutes);
184
+ // No routes discovered → fall back to the standard users-permissions
185
+ // routes so the same builder still produces a complete AuthAPI.
186
+ const usingDefaults = authRoutes.length === 0 && userRoutes.length === 0;
187
+ const effectiveAuthRoutes = usingDefaults
188
+ ? DEFAULT_AUTH_ROUTES
189
+ : authRoutes;
190
+ const effectiveUserRoutes = usingDefaults
191
+ ? DEFAULT_USER_ROUTES
192
+ : userRoutes;
193
+ return this.buildAuthApiClass(effectiveAuthRoutes, effectiveUserRoutes, usingDefaults);
84
194
  }
85
- generateHardcodedAuthApiClass() {
86
- return `// Auth API wrapper for users-permissions plugin
87
- class AuthAPI extends BaseAPI {
88
- constructor(config: StrapiClientConfig) {
89
- super(config)
90
- }
91
-
92
- /**
93
- * Login with email/username and password
94
- * POST /api/auth/local
95
- */
96
- async login(credentials: LoginCredentials): Promise<AuthResponse> {
97
- const url = \`\${this.config.baseURL}/api/auth/local\`
98
- return this.request<AuthResponse>(url, {
99
- method: 'POST',
100
- body: JSON.stringify(credentials),
101
- }, undefined, 'Strapi Auth')
102
- }
103
-
104
- /**
105
- * Register a new user
106
- * POST /api/auth/local/register
107
- */
108
- async register(data: RegisterData): Promise<AuthResponse> {
109
- const url = \`\${this.config.baseURL}/api/auth/local/register\`
110
- return this.request<AuthResponse>(url, {
111
- method: 'POST',
112
- body: JSON.stringify(data),
113
- }, undefined, 'Strapi Auth')
114
- }
115
-
116
- /**
117
- * Get current authenticated user
118
- * GET /api/users/me
119
- * Supports populate with automatic type inference
120
- */
121
-
122
- // Overload: with populate object → populated return type
123
- me<const TPopulate extends UserPopulateParam, const TFields extends Exclude<keyof User & string, '__typename'> = never>(
124
- params: { populate: TPopulate } & QueryParams<User, UserFilters, TPopulate, TFields>,
125
- nextOptions?: NextOptions
126
- ): Promise<SelectFields<GetPopulated<User, TPopulate>, User, TFields>>
127
- // Overload: with populate '*' or true → all fields populated
128
- me<const TFields extends Exclude<keyof User & string, '__typename'> = never>(
129
- params: { populate: '*' | true } & QueryParams<User, UserFilters, '*' | true, TFields>,
130
- nextOptions?: NextOptions
131
- ): Promise<SelectFields<GetPopulated<User, '*'>, User, TFields>>
132
- // Overload: general case → base return type
133
- me<const TFields extends Exclude<keyof User & string, '__typename'> = never>(
134
- params?: QueryParams<User, UserFilters, UserPopulateParam | (keyof UserPopulateParam & string)[] | '*' | boolean, TFields>,
135
- nextOptions?: NextOptions
136
- ): Promise<SelectFields<User, User, TFields>>
137
-
138
- async me(params?: any, nextOptions?: any): Promise<any> {
139
- const queryString = params ? this.buildQueryString(params) : ''
140
- const url = queryString ? \`\${this.config.baseURL}/api/users/me\${queryString}\` : \`\${this.config.baseURL}/api/users/me\`
141
- const response = await this.request<any>(url, {}, nextOptions, "Strapi Auth")
142
- return response
143
- }
144
-
145
- /**
146
- * Update current authenticated user
147
- * PUT /api/users/me
148
- * Supports populate with automatic type inference
149
- */
150
-
151
- // Overload: with populate object → populated return type
152
- updateMe<const TPopulate extends UserPopulateParam, const TFields extends Exclude<keyof User & string, '__typename'> = never>(
153
- data: Partial<User>,
154
- params: { populate: TPopulate } & QueryParams<User, UserFilters, TPopulate, TFields>,
155
- nextOptions?: NextOptions
156
- ): Promise<SelectFields<GetPopulated<User, TPopulate>, User, TFields>>
157
- // Overload: with populate '*' or true → all fields populated
158
- updateMe<const TFields extends Exclude<keyof User & string, '__typename'> = never>(
159
- data: Partial<User>,
160
- params: { populate: '*' | true } & QueryParams<User, UserFilters, '*' | true, TFields>,
161
- nextOptions?: NextOptions
162
- ): Promise<SelectFields<GetPopulated<User, '*'>, User, TFields>>
163
- // Overload: general case → base return type
164
- updateMe<const TFields extends Exclude<keyof User & string, '__typename'> = never>(
165
- data: Partial<User>,
166
- params?: QueryParams<User, UserFilters, UserPopulateParam | (keyof UserPopulateParam & string)[] | '*' | boolean, TFields>,
167
- nextOptions?: NextOptions
168
- ): Promise<SelectFields<User, User, TFields>>
169
-
170
- async updateMe(data: Partial<User>, params?: any, nextOptions?: any): Promise<any> {
171
- const queryString = params ? this.buildQueryString(params) : ''
172
- const url = queryString ? \`\${this.config.baseURL}/api/users/me\${queryString}\` : \`\${this.config.baseURL}/api/users/me\`
173
- const response = await this.request<any>(
174
- url,
175
- {
176
- method: 'PUT',
177
- body: JSON.stringify(data),
178
- },
179
- nextOptions,
180
- "Strapi Auth"
181
- )
182
- return response
183
- }
184
-
185
- /**
186
- * OAuth callback
187
- * GET /api/auth/:provider/callback
188
- * @param provider - OAuth provider name (google, github, etc.)
189
- * @param search - Query string (e.g., "access_token=xxx&code=yyy" or "?access_token=xxx")
190
- */
191
- async callback(
192
- provider: string,
193
- search?: string,
194
- nextOptions?: NextOptions
195
- ): Promise<AuthResponse> {
196
- let path = \`/api/auth/\${provider}/callback\`
197
- if (search) {
198
- // Add search string, handling both "?key=val" and "key=val" formats
199
- path += search.startsWith("?") ? search : \`?\${search}\`
200
- }
201
- const url = \`\${this.config.baseURL}\${path}\`
202
- return this.request<AuthResponse>(url, {}, nextOptions, "Strapi Auth")
203
- }
204
-
205
- /**
206
- * Logout current user (client-side token removal helper)
207
- */
208
- async logout(): Promise<void> {
209
- this.config.token = undefined
210
- }
211
-
212
- /**
213
- * Request password reset email
214
- * POST /api/auth/forgot-password
215
- */
216
- async forgotPassword(data: ForgotPasswordData): Promise<{ ok: boolean }> {
217
- const url = \`\${this.config.baseURL}/api/auth/forgot-password\`
218
- await this.request(url, {
219
- method: 'POST',
220
- body: JSON.stringify(data),
221
- }, undefined, 'Strapi Auth')
222
- return { ok: true }
223
- }
224
-
225
- /**
226
- * Reset password using reset code
227
- * POST /api/auth/reset-password
228
- */
229
- async resetPassword(data: ResetPasswordData): Promise<AuthResponse> {
230
- const url = \`\${this.config.baseURL}/api/auth/reset-password\`
231
- return this.request<AuthResponse>(url, {
232
- method: 'POST',
233
- body: JSON.stringify(data),
234
- }, undefined, 'Strapi Auth')
235
- }
236
-
237
- /**
238
- * Change password for authenticated user
239
- * POST /api/auth/change-password
240
- */
241
- async changePassword(data: ChangePasswordData): Promise<AuthResponse> {
242
- const url = \`\${this.config.baseURL}/api/auth/change-password\`
243
- return this.request<AuthResponse>(url, {
244
- method: 'POST',
245
- body: JSON.stringify(data),
246
- }, undefined, 'Strapi Auth')
247
- }
248
-
249
- /**
250
- * Confirm user email address
251
- * GET /api/auth/email-confirmation?confirmation=TOKEN
252
- */
253
- async confirmEmail(confirmationToken: string, nextOptions?: NextOptions): Promise<EmailConfirmationResponse> {
254
- const url = \`\${this.config.baseURL}/api/auth/email-confirmation?confirmation=\${confirmationToken}\`
255
- return this.request<EmailConfirmationResponse>(
256
- url,
257
- {},
258
- nextOptions,
259
- 'Strapi Auth'
260
- )
261
- }
262
-
263
- /**
264
- * Send email confirmation
265
- * POST /api/auth/send-email-confirmation
266
- */
267
- async sendEmailConfirmation(email: string): Promise<{ ok: boolean }> {
268
- const url = \`\${this.config.baseURL}/api/auth/send-email-confirmation\`
269
- await this.request(url, {
270
- method: 'POST',
271
- body: JSON.stringify({ email }),
272
- }, undefined, 'Strapi Auth')
273
- return { ok: true }
274
- }
275
- }`;
276
- }
277
- generateDynamicAuthApiClass(authRoutes, userRoutes) {
278
- // Generate methods for auth routes
195
+ buildAuthApiClass(authRoutes, userRoutes, usingDefaults) {
279
196
  const authMethods = authRoutes
280
- .map(route => this.generateDynamicAuthMethod(route))
197
+ .map(route => this.generateAuthMethod(route))
281
198
  .join('\n\n');
282
- // Generate methods for user routes - but only special ones (me, updateMe, count)
199
+ // Only special user routes belong on AuthAPI; the rest of the users
200
+ // collection is reached via the generated UsersAPI.
283
201
  const specialUserRoutes = userRoutes.filter(r => r.action === 'me' ||
284
202
  r.action === 'updateMe' ||
285
203
  r.action === 'count');
286
204
  const userMethods = specialUserRoutes
287
- .map(route => this.generateDynamicAuthMethod(route))
205
+ .map(route => this.generateAuthMethod(route))
288
206
  .join('\n\n');
289
- return `// Auth API wrapper for users-permissions plugin (generated from actual routes)
207
+ const header = usingDefaults
208
+ ? '// Auth API wrapper for users-permissions plugin'
209
+ : '// Auth API wrapper for users-permissions plugin (generated from actual routes)';
210
+ // Names already produced by the route/user methods — so the injected
211
+ // client-side helpers don't collide with a real route (e.g. a custom
212
+ // `auth.logout` endpoint vs the deprecated `logout` alias).
213
+ const emitted = new Set([
214
+ ...authRoutes.map(r => this.methodNameFor(r)),
215
+ ...specialUserRoutes.map(r => this.methodNameFor(r)),
216
+ ]);
217
+ return `${header}
290
218
  class AuthAPI extends BaseAPI {
291
219
  constructor(config: StrapiClientConfig) {
292
220
  super(config)
@@ -295,17 +223,28 @@ class AuthAPI extends BaseAPI {
295
223
  ${authMethods}
296
224
 
297
225
  ${userMethods}
226
+
227
+ ${this.generateClientSideHelpers(emitted)}
298
228
  }`;
299
229
  }
300
- generateDynamicAuthMethod(route) {
301
- // Generate method name from action, with special handling for callback
302
- let methodName = toCamelCase(route.action);
303
- // Special case: rename auth.callback on /auth/local to "login"
230
+ /**
231
+ * The method name a route will be emitted under — mirrors the renames in
232
+ * generateAuthMethod (login, confirmEmail). Used to detect collisions with
233
+ * the injected client-side helpers.
234
+ */
235
+ methodNameFor(route) {
304
236
  if (route.action === 'callback' &&
305
237
  route.path === '/auth/local' &&
306
238
  route.method === 'POST') {
307
- methodName = 'login';
239
+ return 'login';
308
240
  }
241
+ if (route.action === 'emailConfirmation')
242
+ return 'confirmEmail';
243
+ return toCamelCase(route.action);
244
+ }
245
+ generateAuthMethod(route) {
246
+ // Method name (login/confirmEmail renames handled in methodNameFor)
247
+ const methodName = this.methodNameFor(route);
309
248
  // Special handling for me() - it should support populate with type inference
310
249
  if (route.action === 'me') {
311
250
  return this.generateMeMethod(route);
@@ -320,6 +259,14 @@ ${userMethods}
320
259
  route.path.includes(':provider')) {
321
260
  return this.generateCallbackMethod(route);
322
261
  }
262
+ // Special handling for confirmEmail() - token goes in the query string
263
+ if (route.action === 'emailConfirmation') {
264
+ return this.generateConfirmEmailMethod(route);
265
+ }
266
+ // Special handling for sendEmailConfirmation() - takes a bare email
267
+ if (route.action === 'sendEmailConfirmation') {
268
+ return this.generateSendEmailConfirmationMethod(route);
269
+ }
323
270
  // Determine return type based on route path/action
324
271
  const returnType = this.getReturnType(route);
325
272
  const params = this.generateAuthMethodParams(route);
@@ -365,12 +312,8 @@ ${bodyBlock}
365
312
  else if (route.action === 'find') {
366
313
  return 'User[]';
367
314
  }
368
- else if (route.action === 'forgotPassword' ||
369
- route.action === 'sendEmailConfirmation') {
370
- return '{ ok: boolean }';
371
- }
372
- else if (route.action === 'emailConfirmation') {
373
- return 'EmailConfirmationResponse';
315
+ else if (route.action === 'forgotPassword') {
316
+ return 'ForgotPasswordResponse';
374
317
  }
375
318
  return 'any';
376
319
  }
@@ -414,24 +357,24 @@ ${bodyBlock}
414
357
 
415
358
  // Overload: with populate object → populated return type
416
359
  updateMe<const TPopulate extends UserPopulateParam, const TFields extends Exclude<keyof User & string, '__typename'> = never>(
417
- data: Partial<User>,
360
+ data: UserUpdateInput,
418
361
  params: { populate: TPopulate } & QueryParams<User, UserFilters, TPopulate, TFields>,
419
362
  nextOptions?: NextOptions
420
363
  ): Promise<SelectFields<GetPopulated<User, TPopulate>, User, TFields>>
421
364
  // Overload: with populate '*' or true → all fields populated
422
365
  updateMe<const TFields extends Exclude<keyof User & string, '__typename'> = never>(
423
- data: Partial<User>,
366
+ data: UserUpdateInput,
424
367
  params: { populate: '*' | true } & QueryParams<User, UserFilters, '*' | true, TFields>,
425
368
  nextOptions?: NextOptions
426
369
  ): Promise<SelectFields<GetPopulated<User, '*'>, User, TFields>>
427
370
  // Overload: general case → base return type
428
371
  updateMe<const TFields extends Exclude<keyof User & string, '__typename'> = never>(
429
- data: Partial<User>,
372
+ data: UserUpdateInput,
430
373
  params?: QueryParams<User, UserFilters, UserPopulateParam | (keyof UserPopulateParam & string)[] | '*' | boolean, TFields>,
431
374
  nextOptions?: NextOptions
432
375
  ): Promise<SelectFields<User, User, TFields>>
433
376
 
434
- async updateMe(data: Partial<User>, params?: any, nextOptions?: any): Promise<any> {
377
+ async updateMe(data: UserUpdateInput, params?: any, nextOptions?: any): Promise<any> {
435
378
  const queryString = params ? this.buildQueryString(params) : ''
436
379
  const url = queryString ? \`\${this.config.baseURL}/api/users/me\${queryString}\` : \`\${this.config.baseURL}/api/users/me\`
437
380
  const response = await this.request<any>(
@@ -468,6 +411,56 @@ ${bodyBlock}
468
411
  return this.request<AuthResponse>(url, {}, nextOptions, "Strapi Auth")
469
412
  }`;
470
413
  }
414
+ generateConfirmEmailMethod(route) {
415
+ return ` /**
416
+ * ${route.method} ${route.path}
417
+ * Handler: ${route.handler}
418
+ * Confirm a user's email address with the token from the confirmation email.
419
+ */
420
+ async confirmEmail(confirmationToken: string, nextOptions?: NextOptions): Promise<EmailConfirmationResponse> {
421
+ const url = \`\${this.config.baseURL}/api/auth/email-confirmation?confirmation=\${confirmationToken}\`
422
+ return this.request<EmailConfirmationResponse>(
423
+ url,
424
+ {},
425
+ nextOptions,
426
+ 'Strapi Auth'
427
+ )
428
+ }`;
429
+ }
430
+ generateSendEmailConfirmationMethod(route) {
431
+ return ` /**
432
+ * ${route.method} ${route.path}
433
+ * Handler: ${route.handler}
434
+ * Resend the confirmation email to a user who hasn't confirmed yet.
435
+ */
436
+ async sendEmailConfirmation(email: string): Promise<SendEmailConfirmationResponse> {
437
+ const url = \`\${this.config.baseURL}/api/auth/send-email-confirmation\`
438
+ return this.request<SendEmailConfirmationResponse>(url, {
439
+ method: 'POST',
440
+ body: JSON.stringify({ email }),
441
+ }, undefined, 'Strapi Auth')
442
+ }`;
443
+ }
444
+ generateClientSideHelpers(emitted) {
445
+ const clearToken = ` /**
446
+ * Clear the stored auth token. Client-side only — does not call the server.
447
+ */
448
+ async clearToken(): Promise<void> {
449
+ this.config.token = undefined
450
+ }`;
451
+ // Skip the deprecated logout alias when a real route already emits a
452
+ // \`logout\` method (a server-backed /auth/logout should win over the
453
+ // client-side token clear). clearToken is always emitted.
454
+ if (emitted.has('logout'))
455
+ return clearToken;
456
+ const logoutAlias = ` /**
457
+ * @deprecated Use \`clearToken()\` instead. Will be removed in a future major.
458
+ */
459
+ async logout(): Promise<void> {
460
+ return this.clearToken()
461
+ }`;
462
+ return `${clearToken}\n\n${logoutAlias}`;
463
+ }
471
464
  generateAuthMethodParams(route) {
472
465
  const params = [];
473
466
  // Add path parameters
@@ -1 +1 @@
1
- {"version":3,"file":"auth-api-generator.js","sourceRoot":"","sources":["../../src/generator/auth-api-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-api-generator.js","sourceRoot":"","sources":["../../src/generator/auth-api-generator.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { ParsedSchema } from '../schema-types.js';
2
2
  import type { ParsedEndpoint, ExtraControllerType } from '../shared/endpoint-types.js';
3
+ export declare const STRINGIFY_QUERY_SOURCE = "function stringifyQuery(obj: Record<string, unknown>): string {\n const pairs: string[] = []\n for (const key of Object.keys(obj)) {\n appendEntry(obj[key], key, pairs)\n }\n return pairs.join('&')\n}\n\nfunction appendEntry(\n value: unknown,\n prefix: string,\n pairs: string[],\n): void {\n if (value === null || value === undefined) return\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n appendEntry(value[i], `${prefix}[${i}]`, pairs)\n }\n return\n }\n if (value instanceof Date) {\n pairs.push(`${prefix}=${encodeURIComponent(value.toISOString())}`)\n return\n }\n if (typeof value === 'object') {\n for (const key of Object.keys(value as Record<string, unknown>)) {\n appendEntry(\n (value as Record<string, unknown>)[key],\n `${prefix}[${key}]`,\n pairs,\n )\n }\n return\n }\n pairs.push(`${prefix}=${encodeURIComponent(String(value))}`)\n}";
3
4
  export declare class ClientGenerator {
4
5
  private authApiGenerator;
5
6
  private customApiGenerator;
@@ -47,6 +48,14 @@ export declare class ClientGenerator {
47
48
  * the client. When this collision occurs, disambiguate the standalone name
48
49
  * by prefixing it with the plugin's camelCase name.
49
50
  */
51
+ /**
52
+ * Property name for a content type on StrapiClient. `auth` (and its
53
+ * deprecated alias `authentication`) are reserved for the users-permissions
54
+ * namespace, so a content type whose endpoint camelCases to one of those is
55
+ * disambiguated by kind (e.g. a single type `auth` → `authSingle`) to avoid
56
+ * a duplicate-identifier collision with `auth: AuthAPI`.
57
+ */
58
+ private contentTypePropName;
50
59
  private resolveStandaloneNames;
51
60
  private buildStandaloneDeclarations;
52
61
  private buildStandaloneInits;
@@ -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;AAY9D,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,EACvB,gBAAgB,GAAE,MAAW,GAC9B,MAAM;IAmFT,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;IAmK7B,OAAO,CAAC,qBAAqB;IA+D7B,OAAO,CAAC,+BAA+B;IAmBvC,OAAO,CAAC,wBAAwB;IAuEhC,OAAO,CAAC,eAAe;IAavB;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAalC;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,oBAAoB;IAyK5B;;;;;;;;;;;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":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAY9D,OAAO,KAAK,EACR,cAAc,EACd,mBAAmB,EACtB,MAAM,6BAA6B,CAAA;AAOpC,eAAO,MAAM,sBAAsB,4iCAmCjC,CAAA;AAEF,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,EACvB,gBAAgB,GAAE,MAAW,GAC9B,MAAM;IA6FT,OAAO,CAAC,eAAe;IAwEvB,OAAO,CAAC,eAAe;IAwRvB,OAAO,CAAC,iCAAiC;IA0BzC,OAAO,CAAC,mBAAmB;IAiD3B,OAAO,CAAC,mBAAmB;IAwF3B,OAAO,CAAC,wBAAwB;IA2BhC,OAAO,CAAC,6BAA6B;IA6CrC,OAAO,CAAC,oBAAoB;IAsM5B,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,qBAAqB;IAoK7B,OAAO,CAAC,qBAAqB;IAgE7B,OAAO,CAAC,+BAA+B;IAoBvC,OAAO,CAAC,wBAAwB;IAwEhC,OAAO,CAAC,eAAe;IAavB;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAalC;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,oBAAoB;IAoL5B;;;;;;;;;;;OAWG;IACH;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,2BAA2B;IA2BnC,OAAO,CAAC,oBAAoB;CA4B/B"}