@@ -256,12 +256,21 @@ import {
256256 type SeamHttpOptionsWithPersonalAccessToken,
257257} from 'lib/seam/connect/options.js'
258258import { parseOptions } from 'lib/seam/connect/parse-options.js'
259+ import {
260+ resolveActionAttempt,
261+ type ResolveActionAttemptOptions,
262+ } from 'lib/seam/connect/resolve-action-attempt.js'
259263
260264${
261265 namespace === 'client_sessions'
262266 ? ''
263267 : "import { SeamHttpClientSessions } from './client-sessions.js'"
264268}
269+ ${
270+ namespace === 'action_attempts'
271+ ? ''
272+ : "import { SeamHttpActionAttempts } from './action-attempts.js'"
273+ }
265274${ subresources
266275 . map ( ( subresource ) => renderSubresourceImport ( subresource , namespace ) )
267276 . join ( '\n' ) }
@@ -314,6 +323,7 @@ const renderClassMethod = ({
314323 name,
315324 namespace,
316325 } ) } ,
326+ ${ renderClassMethodOptions ( { resource } ) }
317327 ): Promise<${
318328 resource === null
319329 ? 'void'
@@ -330,10 +340,51 @@ const renderClassMethod = ({
330340 requestFormat === 'params' ? 'params,' : ''
331341 } ${ requestFormat === 'body' ? 'data: body,' : '' }
332342 })
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+ }
333354 ${ resource === null ? '' : `return data.${ resource } ` }
334355 }
335356 `
336357
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+
337388const renderSubresourceMethod = (
338389 subresource : string ,
339390 namespace : string ,
@@ -354,6 +405,7 @@ const renderEndpointExports = ({
354405 name,
355406 path,
356407 namespace,
408+ resource,
357409 requestFormat,
358410} : Endpoint ) : string => `
359411export type ${ renderRequestType ( {
@@ -364,6 +416,11 @@ export type ${renderRequestType({
364416export type ${ renderResponseType ( { name, namespace } ) } = SetNonNullable<
365417 Required<RouteResponse<'${ path } '>>
366418>
419+
420+ export type ${ renderClassMethodOptionsType ( {
421+ name,
422+ namespace,
423+ } ) } = ${ renderClassMethodOptionsTypeDef ( { resource } ) }
367424 `
368425
369426const renderRequestType = ( {
0 commit comments