@@ -256,12 +256,21 @@ import {
256
256
type SeamHttpOptionsWithPersonalAccessToken,
257
257
} from 'lib/seam/connect/options.js'
258
258
import { parseOptions } from 'lib/seam/connect/parse-options.js'
259
+ import {
260
+ resolveActionAttempt,
261
+ type ResolveActionAttemptOptions,
262
+ } from 'lib/seam/connect/resolve-action-attempt.js'
259
263
260
264
${
261
265
namespace === 'client_sessions'
262
266
? ''
263
267
: "import { SeamHttpClientSessions } from './client-sessions.js'"
264
268
}
269
+ ${
270
+ namespace === 'action_attempts'
271
+ ? ''
272
+ : "import { SeamHttpActionAttempts } from './action-attempts.js'"
273
+ }
265
274
${ subresources
266
275
. map ( ( subresource ) => renderSubresourceImport ( subresource , namespace ) )
267
276
. join ( '\n' ) }
@@ -314,6 +323,7 @@ const renderClassMethod = ({
314
323
name,
315
324
namespace,
316
325
} ) } ,
326
+ ${ renderClassMethodOptions ( { resource } ) }
317
327
): Promise<${
318
328
resource === null
319
329
? 'void'
@@ -330,10 +340,51 @@ const renderClassMethod = ({
330
340
requestFormat === 'params' ? 'params,' : ''
331
341
} ${ requestFormat === 'body' ? 'data: body,' : '' }
332
342
})
343
+ ${
344
+ resource === 'action_attempt'
345
+ ? `if (waitForActionAttempt != null && waitForActionAttempt !== false) {
346
+ return resolveActionAttempt(
347
+ data.${ resource } ,
348
+ SeamHttpActionAttempts.fromClient(this.client),
349
+ typeof waitForActionAttempt === 'boolean' ? {} : waitForActionAttempt,
350
+ )
351
+ }`
352
+ : ''
353
+ }
333
354
${ resource === null ? '' : `return data.${ resource } ` }
334
355
}
335
356
`
336
357
358
+ const renderClassMethodOptions = ( {
359
+ resource,
360
+ } : Pick < Endpoint , 'resource' > ) : string => {
361
+ if ( resource === 'action_attempt' ) {
362
+ return `{ waitForActionAttempt = false }: ${ renderClassMethodOptionsTypeDef (
363
+ { resource } ,
364
+ ) } = {},`
365
+ }
366
+ return ''
367
+ }
368
+
369
+ const renderClassMethodOptionsType = ( {
370
+ name,
371
+ namespace,
372
+ } : Pick < Endpoint , 'name' | 'namespace' > ) : string =>
373
+ [ pascalCase ( namespace ) , pascalCase ( name ) , 'Options' ] . join ( '' )
374
+
375
+ const renderClassMethodOptionsTypeDef = ( {
376
+ resource,
377
+ } : Pick < Endpoint , 'resource' > ) : string => {
378
+ if ( resource === 'action_attempt' ) {
379
+ return `
380
+ {
381
+ waitForActionAttempt?: boolean | Partial<ResolveActionAttemptOptions>
382
+ }
383
+ `
384
+ }
385
+ return 'never'
386
+ }
387
+
337
388
const renderSubresourceMethod = (
338
389
subresource : string ,
339
390
namespace : string ,
@@ -354,6 +405,7 @@ const renderEndpointExports = ({
354
405
name,
355
406
path,
356
407
namespace,
408
+ resource,
357
409
requestFormat,
358
410
} : Endpoint ) : string => `
359
411
export type ${ renderRequestType ( {
@@ -364,6 +416,11 @@ export type ${renderRequestType({
364
416
export type ${ renderResponseType ( { name, namespace } ) } = SetNonNullable<
365
417
Required<RouteResponse<'${ path } '>>
366
418
>
419
+
420
+ export type ${ renderClassMethodOptionsType ( {
421
+ name,
422
+ namespace,
423
+ } ) } = ${ renderClassMethodOptionsTypeDef ( { resource } ) }
367
424
`
368
425
369
426
const renderRequestType = ( {
0 commit comments