@workos/oagen-emitters 0.15.1 → 0.16.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["INDENT","renderCall","renderValue","indentContinuationLines","renderArray","INDENT","renderCall","renderValue","fieldName","safeParamName","indentContinuationLines","renderArray","renderDict","INDENT","fieldName","renderCall","renderValue","indentContinuationLines","renderArray","INDENT","renderCall","renderValue","fieldName","indentContinuationLines","INDENT","renderCall","trimMountedResourceFromMethod","methodName","className","renderValue","indentContinuationLines","fieldName","INDENT","renderCall","methodName","renderValue","indentContinuationLines","methodName","fieldName"],"sources":["../src/snippets/ruby.ts","../src/snippets/python.ts","../src/snippets/php.ts","../src/snippets/go.ts","../src/snippets/dotnet.ts","../src/snippets/kotlin.ts","../src/snippets/rust.ts","../src/snippets/plugin.ts"],"sourcesContent":["import type { EmitterContext, SnippetArg, SnippetEmitter } from '@workos/oagen';\nimport { collectSnippetArgs, collectWrapperArgs, toSnakeCase } from '@workos/oagen';\nimport { buildExportedClassNameSet, fieldName, resolveServiceTarget, safeParamName } from '../ruby/naming.js';\n\nconst INDENT = ' ';\n\nexport const rubySnippetEmitter: SnippetEmitter = {\n language: 'ruby',\n fileExtension: 'rb',\n\n renderOperation(resolved, ctx, examples) {\n if (resolved.urlBuilder) return null;\n\n const accessor = serviceAccessor(resolved.mountOn, ctx);\n\n if (resolved.wrappers && resolved.wrappers.length > 0) {\n const wrapper = resolved.wrappers[0]!;\n const args = collectWrapperArgs(wrapper, ctx, examples);\n return renderCall(accessor, wrapper.name, toRubyArgs(args, new Set()));\n }\n\n const { args, collisionNames } = collectSnippetArgs(resolved, ctx, examples);\n return renderCall(accessor, resolved.methodName, toRubyArgs(args, collisionNames));\n },\n};\n\ninterface RubyArg {\n keyword: string;\n value: string;\n}\n\nfunction toRubyArgs(args: SnippetArg[], collisionNames: Set<string>): RubyArg[] {\n const seen = new Set<string>();\n const out: RubyArg[] = [];\n for (const a of args) {\n const keyword = rubyKeyword(a, collisionNames);\n if (seen.has(keyword)) continue;\n seen.add(keyword);\n out.push({ keyword, value: renderValue(a.value) });\n }\n return out;\n}\n\nfunction rubyKeyword(arg: SnippetArg, collisions: Set<string>): string {\n if (arg.source === 'body') {\n const base = fieldName(arg.wireName);\n return collisions.has(arg.wireName) ? `body_${base}` : base;\n }\n // path / query\n return safeParamName(arg.wireName);\n}\n\nfunction renderCall(accessor: string, method: string, args: RubyArg[]): string {\n const lines: string[] = [];\n lines.push('require \"workos\"');\n lines.push('');\n lines.push('WorkOS.configure do |config|');\n lines.push(`${INDENT}config.api_key = \"sk_example_123456789\"`);\n lines.push('end');\n lines.push('');\n\n const target = `WorkOS.client.${accessor}.${method}`;\n if (args.length === 0) {\n lines.push(target);\n return lines.join('\\n');\n }\n\n if (args.length === 1 && !args[0]!.value.includes('\\n')) {\n const a = args[0]!;\n lines.push(`${target}(${a.keyword}: ${a.value})`);\n return lines.join('\\n');\n }\n\n lines.push(`${target}(`);\n for (let i = 0; i < args.length; i++) {\n const a = args[i]!;\n const trailing = i < args.length - 1 ? ',' : '';\n const valueIndented = indentContinuationLines(a.value, INDENT);\n lines.push(`${INDENT}${a.keyword}: ${valueIndented}${trailing}`);\n }\n lines.push(')');\n\n return lines.join('\\n');\n}\n\nfunction serviceAccessor(mountOn: string, ctx: EmitterContext): string {\n // The accessor uses the raw mount target (no `Service` suffix) to match\n // the `client.organization_membership` style documented in workos-ruby.\n void resolveServiceTarget(mountOn, buildExportedClassNameSet(ctx));\n return toSnakeCase(mountOn);\n}\n\n// ---------------------------------------------------------------------------\n// Ruby literal rendering\n// ---------------------------------------------------------------------------\n\nfunction renderValue(value: unknown): string {\n if (value === null || value === undefined) return 'nil';\n if (typeof value === 'boolean') return value ? 'true' : 'false';\n if (typeof value === 'number') return String(value);\n if (typeof value === 'string') return rubyString(value);\n if (Array.isArray(value)) return renderArray(value);\n if (typeof value === 'object') return renderHash(value as Record<string, unknown>);\n return 'nil';\n}\n\nfunction rubyString(s: string): string {\n return `\"${s.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')}\"`;\n}\n\nfunction renderArray(items: unknown[]): string {\n if (items.length === 0) return '[]';\n const rendered = items.map((v) => renderValue(v));\n const oneline = `[${rendered.join(', ')}]`;\n if (oneline.length <= 80 && rendered.every((r) => !r.includes('\\n'))) return oneline;\n const lines: string[] = ['['];\n for (let i = 0; i < rendered.length; i++) {\n const trailing = i < rendered.length - 1 ? ',' : '';\n lines.push(`${INDENT}${indentContinuationLines(rendered[i]!, INDENT)}${trailing}`);\n }\n lines.push(']');\n return lines.join('\\n');\n}\n\nfunction renderHash(obj: Record<string, unknown>): string {\n const entries = Object.entries(obj);\n if (entries.length === 0) return '{}';\n const rendered = entries.map(([k, v]) => ({ key: k, value: renderValue(v) }));\n const oneLineParts = rendered.map((e) => `${formatInlineKey(e.key)} ${e.value}`);\n const oneline = `{ ${oneLineParts.join(', ')} }`;\n if (oneline.length <= 80 && rendered.every((e) => !e.value.includes('\\n'))) return oneline;\n\n const lines: string[] = ['{'];\n for (let i = 0; i < rendered.length; i++) {\n const e = rendered[i]!;\n const trailing = i < rendered.length - 1 ? ',' : '';\n lines.push(`${INDENT}${formatInlineKey(e.key)} ${indentContinuationLines(e.value, INDENT)}${trailing}`);\n }\n lines.push('}');\n return lines.join('\\n');\n}\n\nfunction formatInlineKey(name: string): string {\n if (/^[a-z_][a-zA-Z0-9_]*$/.test(name)) return `${name}:`;\n return `\"${name.replace(/\"/g, '\\\\\"')}\" =>`;\n}\n\nfunction indentContinuationLines(s: string, indent: string): string {\n if (!s.includes('\\n')) return s;\n const lines = s.split('\\n');\n return lines.map((line, i) => (i === 0 ? line : `${indent}${line}`)).join('\\n');\n}\n","import type { SnippetArg, SnippetEmitter } from '@workos/oagen';\nimport { collectSnippetArgs, collectWrapperArgs, toSnakeCase } from '@workos/oagen';\nimport { fieldName, safeParamName } from '../python/naming.js';\n\nconst INDENT = ' ';\n\nexport const pythonSnippetEmitter: SnippetEmitter = {\n language: 'python',\n fileExtension: 'py',\n\n renderOperation(resolved, ctx, examples) {\n if (resolved.urlBuilder) return null;\n\n const accessor = toSnakeCase(resolved.mountOn);\n\n if (resolved.wrappers && resolved.wrappers.length > 0) {\n const wrapper = resolved.wrappers[0]!;\n const args = collectWrapperArgs(wrapper, ctx, examples);\n return renderCall(accessor, wrapper.name, toPyArgs(args, new Set()));\n }\n\n const { args, collisionNames } = collectSnippetArgs(resolved, ctx, examples);\n return renderCall(accessor, resolved.methodName, toPyArgs(args, collisionNames));\n },\n};\n\ninterface PyArg {\n keyword: string;\n value: string;\n}\n\nfunction toPyArgs(args: SnippetArg[], collisionNames: Set<string>): PyArg[] {\n const seen = new Set<string>();\n const out: PyArg[] = [];\n for (const a of args) {\n const keyword = pythonKeyword(a, collisionNames);\n if (seen.has(keyword)) continue;\n seen.add(keyword);\n out.push({ keyword, value: renderValue(a.value) });\n }\n return out;\n}\n\nfunction pythonKeyword(arg: SnippetArg, collisions: Set<string>): string {\n if (arg.source === 'body') {\n const base = fieldName(arg.wireName);\n return collisions.has(arg.wireName) ? `body_${base}` : base;\n }\n return safeParamName(arg.wireName);\n}\n\nfunction renderCall(accessor: string, method: string, args: PyArg[]): string {\n const lines: string[] = [];\n lines.push('from workos import WorkOSClient');\n lines.push('');\n lines.push('client = WorkOSClient(api_key=\"sk_example_123456789\", client_id=\"client_123456789\")');\n lines.push('');\n\n const target = `client.${accessor}.${method}`;\n if (args.length === 0) {\n lines.push(`${target}()`);\n return lines.join('\\n');\n }\n\n if (args.length === 1 && !args[0]!.value.includes('\\n')) {\n const a = args[0]!;\n lines.push(`${target}(${a.keyword}=${a.value})`);\n return lines.join('\\n');\n }\n\n lines.push(`${target}(`);\n for (let i = 0; i < args.length; i++) {\n const a = args[i]!;\n const trailing = i < args.length - 1 ? ',' : '';\n const valueIndented = indentContinuationLines(a.value, INDENT);\n lines.push(`${INDENT}${a.keyword}=${valueIndented}${trailing}`);\n }\n lines.push(')');\n return lines.join('\\n');\n}\n\n// ---------------------------------------------------------------------------\n// Python literal rendering\n// ---------------------------------------------------------------------------\n\nfunction renderValue(value: unknown): string {\n if (value === null || value === undefined) return 'None';\n if (typeof value === 'boolean') return value ? 'True' : 'False';\n if (typeof value === 'number') return String(value);\n if (typeof value === 'string') return pythonString(value);\n if (Array.isArray(value)) return renderArray(value);\n if (typeof value === 'object') return renderDict(value as Record<string, unknown>);\n return 'None';\n}\n\nfunction pythonString(s: string): string {\n return `\"${s.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')}\"`;\n}\n\nfunction renderArray(items: unknown[]): string {\n if (items.length === 0) return '[]';\n const rendered = items.map((v) => renderValue(v));\n const oneline = `[${rendered.join(', ')}]`;\n if (oneline.length <= 80 && rendered.every((r) => !r.includes('\\n'))) return oneline;\n const lines: string[] = ['['];\n for (let i = 0; i < rendered.length; i++) {\n const trailing = i < rendered.length - 1 ? ',' : '';\n lines.push(`${INDENT}${indentContinuationLines(rendered[i]!, INDENT)}${trailing}`);\n }\n lines.push(']');\n return lines.join('\\n');\n}\n\nfunction renderDict(obj: Record<string, unknown>): string {\n const entries = Object.entries(obj);\n if (entries.length === 0) return '{}';\n const rendered = entries.map(([k, v]) => ({ key: k, value: renderValue(v) }));\n const oneline = `{${rendered.map((e) => `\"${e.key}\": ${e.value}`).join(', ')}}`;\n if (oneline.length <= 80 && rendered.every((e) => !e.value.includes('\\n'))) return oneline;\n\n const lines: string[] = ['{'];\n for (let i = 0; i < rendered.length; i++) {\n const e = rendered[i]!;\n const trailing = i < rendered.length - 1 ? ',' : '';\n lines.push(`${INDENT}\"${e.key}\": ${indentContinuationLines(e.value, INDENT)}${trailing}`);\n }\n lines.push('}');\n return lines.join('\\n');\n}\n\nfunction indentContinuationLines(s: string, indent: string): string {\n if (!s.includes('\\n')) return s;\n const lines = s.split('\\n');\n return lines.map((line, i) => (i === 0 ? line : `${indent}${line}`)).join('\\n');\n}\n","import type { SnippetArg, SnippetEmitter } from '@workos/oagen';\nimport { collectSnippetArgs, collectWrapperArgs } from '@workos/oagen';\nimport { fieldName, servicePropertyName } from '../php/naming.js';\n\nconst INDENT = ' ';\n\nexport const phpSnippetEmitter: SnippetEmitter = {\n language: 'php',\n fileExtension: 'php',\n\n renderOperation(resolved, ctx, examples) {\n if (resolved.urlBuilder) return null;\n\n const accessor = servicePropertyName(resolved.mountOn);\n const method = fieldName(\n resolved.wrappers && resolved.wrappers.length > 0 ? resolved.wrappers[0]!.name : resolved.methodName,\n );\n\n let args: SnippetArg[];\n let collisionNames: Set<string>;\n if (resolved.wrappers && resolved.wrappers.length > 0) {\n args = collectWrapperArgs(resolved.wrappers[0]!, ctx, examples);\n collisionNames = new Set();\n } else {\n const collected = collectSnippetArgs(resolved, ctx, examples);\n args = collected.args;\n collisionNames = collected.collisionNames;\n }\n\n return renderCall(accessor, method, toPhpArgs(args, collisionNames));\n },\n};\n\ninterface PhpArg {\n keyword: string;\n value: string;\n}\n\nfunction toPhpArgs(args: SnippetArg[], collisions: Set<string>): PhpArg[] {\n const seen = new Set<string>();\n const out: PhpArg[] = [];\n for (const a of args) {\n const keyword = phpKeyword(a, collisions);\n if (seen.has(keyword)) continue;\n seen.add(keyword);\n out.push({ keyword, value: renderValue(a.value) });\n }\n return out;\n}\n\nfunction phpKeyword(arg: SnippetArg, collisions: Set<string>): string {\n const base = fieldName(arg.wireName);\n if (arg.source === 'body' && collisions.has(arg.wireName)) return `body${capitalize(base)}`;\n return base;\n}\n\nfunction capitalize(s: string): string {\n return s.length === 0 ? s : s[0]!.toUpperCase() + s.slice(1);\n}\n\nfunction renderCall(accessor: string, method: string, args: PhpArg[]): string {\n const lines: string[] = [];\n lines.push('<?php');\n lines.push('');\n lines.push('use WorkOS\\\\WorkOS;');\n lines.push('');\n lines.push('$workos = new WorkOS(');\n lines.push(`${INDENT}apiKey: 'sk_example_123456789',`);\n lines.push(`${INDENT}clientId: 'client_123456789',`);\n lines.push(');');\n lines.push('');\n\n const target = `$workos->${accessor}()->${method}`;\n if (args.length === 0) {\n lines.push(`${target}();`);\n return lines.join('\\n');\n }\n\n if (args.length === 1 && !args[0]!.value.includes('\\n')) {\n const a = args[0]!;\n lines.push(`${target}(${a.keyword}: ${a.value});`);\n return lines.join('\\n');\n }\n\n lines.push(`${target}(`);\n for (let i = 0; i < args.length; i++) {\n const a = args[i]!;\n const trailing = i < args.length - 1 ? ',' : ',';\n const valueIndented = indentContinuationLines(a.value, INDENT);\n lines.push(`${INDENT}${a.keyword}: ${valueIndented}${trailing}`);\n }\n lines.push(');');\n\n return lines.join('\\n');\n}\n\n// ---------------------------------------------------------------------------\n// PHP literal rendering\n// ---------------------------------------------------------------------------\n\nfunction renderValue(value: unknown): string {\n if (value === null || value === undefined) return 'null';\n if (typeof value === 'boolean') return value ? 'true' : 'false';\n if (typeof value === 'number') return String(value);\n if (typeof value === 'string') return phpString(value);\n if (Array.isArray(value)) return renderArray(value);\n if (typeof value === 'object') return renderAssoc(value as Record<string, unknown>);\n return 'null';\n}\n\nfunction phpString(s: string): string {\n return `'${s.replace(/\\\\/g, '\\\\\\\\').replace(/'/g, \"\\\\'\")}'`;\n}\n\nfunction renderArray(items: unknown[]): string {\n if (items.length === 0) return '[]';\n const rendered = items.map((v) => renderValue(v));\n const oneline = `[${rendered.join(', ')}]`;\n if (oneline.length <= 80 && rendered.every((r) => !r.includes('\\n'))) return oneline;\n const lines: string[] = ['['];\n for (let i = 0; i < rendered.length; i++) {\n const trailing = i < rendered.length - 1 ? ',' : ',';\n lines.push(`${INDENT}${indentContinuationLines(rendered[i]!, INDENT)}${trailing}`);\n }\n lines.push(']');\n return lines.join('\\n');\n}\n\nfunction renderAssoc(obj: Record<string, unknown>): string {\n const entries = Object.entries(obj);\n if (entries.length === 0) return '[]';\n const rendered = entries.map(([k, v]) => ({ key: k, value: renderValue(v) }));\n const oneline = `[${rendered.map((e) => `'${e.key}' => ${e.value}`).join(', ')}]`;\n if (oneline.length <= 80 && rendered.every((e) => !e.value.includes('\\n'))) return oneline;\n const lines: string[] = ['['];\n for (let i = 0; i < rendered.length; i++) {\n const e = rendered[i]!;\n const trailing = i < rendered.length - 1 ? ',' : ',';\n lines.push(`${INDENT}'${e.key}' => ${indentContinuationLines(e.value, INDENT)}${trailing}`);\n }\n lines.push(']');\n return lines.join('\\n');\n}\n\nfunction indentContinuationLines(s: string, indent: string): string {\n if (!s.includes('\\n')) return s;\n const lines = s.split('\\n');\n return lines.map((line, i) => (i === 0 ? line : `${indent}${line}`)).join('\\n');\n}\n","import type { EmitterContext, ExampleBuilder, ResolvedOperation, SnippetArg, SnippetEmitter } from '@workos/oagen';\nimport { collectSnippetArgs, collectWrapperArgs } from '@workos/oagen';\nimport { className, fieldName, methodName, trimMountedResourceFromMethod } from '../go/naming.js';\n\nconst INDENT = '\\t';\n\nexport const goSnippetEmitter: SnippetEmitter = {\n language: 'go',\n fileExtension: 'go',\n\n renderOperation(resolved, ctx, examples) {\n if (resolved.urlBuilder) return null;\n\n // Mirror the Go SDK's naming pipeline: PascalCase the resolved method\n // name (or the wrapper name for split ops), then trim any mount-target\n // resource words from the end so `CreateOrganization` on `Organizations`\n // becomes `Create`. We compute these directly from the resolved op so\n // the snippet emitter does not depend on a fresh `buildResolvedLookup`\n // (which would re-validate the entire spec for uniqueness).\n const rawMethodName =\n resolved.wrappers && resolved.wrappers.length > 0 ? resolved.wrappers[0]!.name : resolved.methodName;\n const method = trimMountedResourceFromMethod(methodName(rawMethodName), resolved.mountOn);\n\n return renderCall(resolved, ctx, examples, method);\n },\n};\n\nfunction renderCall(\n resolved: ResolvedOperation,\n ctx: EmitterContext,\n examples: ExampleBuilder,\n method: string,\n): string {\n const accessorMethod = className(resolved.mountOn);\n const optsTypeName = `${accessorMethod}${method}Params`;\n\n let args: SnippetArg[];\n let pathArgs: SnippetArg[];\n let bodyAndQueryArgs: SnippetArg[];\n\n if (resolved.wrappers && resolved.wrappers.length > 0) {\n args = collectWrapperArgs(resolved.wrappers[0]!, ctx, examples);\n pathArgs = [];\n bodyAndQueryArgs = args;\n } else {\n const collected = collectSnippetArgs(resolved, ctx, examples);\n args = collected.args;\n pathArgs = args.filter((a) => a.source === 'path');\n bodyAndQueryArgs = args.filter((a) => a.source !== 'path');\n }\n\n const lines: string[] = [];\n lines.push('package main');\n lines.push('');\n lines.push('import (');\n lines.push(`${INDENT}\"context\"`);\n lines.push('');\n lines.push(`${INDENT}\"github.com/workos/workos-go/v9\"`);\n lines.push(')');\n lines.push('');\n lines.push('func main() {');\n lines.push(`${INDENT}client := workos.NewClient(\"sk_example_123456789\")`);\n lines.push('');\n\n // Build the method call. Go SDK methods take (ctx, positional path params..., *OptsStruct).\n const callParts: string[] = ['context.Background()'];\n for (const p of pathArgs) {\n callParts.push(renderValue(p.value));\n }\n\n if (bodyAndQueryArgs.length === 0) {\n lines.push(`${INDENT}_, err := client.${accessorMethod}().${method}(${callParts.join(', ')})`);\n } else {\n const optsLines = buildOptsStruct(optsTypeName, bodyAndQueryArgs);\n callParts.push(optsLines);\n const joined = callParts.length === 2 ? callParts.join(', ') : callParts.join(', ');\n lines.push(`${INDENT}_, err := client.${accessorMethod}().${method}(${joined})`);\n }\n lines.push(`${INDENT}if err != nil {`);\n lines.push(`${INDENT}${INDENT}panic(err)`);\n lines.push(`${INDENT}}`);\n lines.push('}');\n\n return lines.join('\\n');\n}\n\nfunction buildOptsStruct(typeName: string, args: SnippetArg[]): string {\n const lines: string[] = [`&workos.${typeName}{`];\n for (const a of args) {\n const field = fieldName(a.wireName);\n const value = renderValue(a.value);\n const indentedValue = indentContinuationLines(value, `${INDENT}${INDENT}`);\n lines.push(`${INDENT}${INDENT}${field}: ${indentedValue},`);\n }\n lines.push(`${INDENT}}`);\n return lines.join('\\n');\n}\n\n// ---------------------------------------------------------------------------\n// Go literal rendering\n// ---------------------------------------------------------------------------\n\nfunction renderValue(value: unknown): string {\n if (value === null || value === undefined) return 'nil';\n if (typeof value === 'boolean') return value ? 'true' : 'false';\n if (typeof value === 'number') return String(value);\n if (typeof value === 'string') return goString(value);\n if (Array.isArray(value)) return renderSlice(value);\n if (typeof value === 'object') return renderStruct(value as Record<string, unknown>);\n return 'nil';\n}\n\nfunction goString(s: string): string {\n return `\"${s.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')}\"`;\n}\n\nfunction renderSlice(items: unknown[]): string {\n if (items.length === 0) return '[]any{}';\n const rendered = items.map((v) => renderValue(v));\n const oneline = `[]any{${rendered.join(', ')}}`;\n if (oneline.length <= 80 && rendered.every((r) => !r.includes('\\n'))) return oneline;\n const lines: string[] = ['[]any{'];\n for (const r of rendered) {\n lines.push(`${INDENT}${indentContinuationLines(r, INDENT)},`);\n }\n lines.push('}');\n return lines.join('\\n');\n}\n\nfunction renderStruct(obj: Record<string, unknown>): string {\n const entries = Object.entries(obj);\n if (entries.length === 0) return 'map[string]any{}';\n const rendered = entries.map(([k, v]) => ({ key: k, value: renderValue(v) }));\n const oneline = `map[string]any{${rendered.map((e) => `\"${e.key}\": ${e.value}`).join(', ')}}`;\n if (oneline.length <= 80 && rendered.every((e) => !e.value.includes('\\n'))) return oneline;\n const lines: string[] = ['map[string]any{'];\n for (const e of rendered) {\n lines.push(`${INDENT}\"${e.key}\": ${indentContinuationLines(e.value, INDENT)},`);\n }\n lines.push('}');\n return lines.join('\\n');\n}\n\nfunction indentContinuationLines(s: string, indent: string): string {\n if (!s.includes('\\n')) return s;\n const lines = s.split('\\n');\n return lines.map((line, i) => (i === 0 ? line : `${indent}${line}`)).join('\\n');\n}\n","import type { EmitterContext, ExampleBuilder, ResolvedOperation, SnippetArg, SnippetEmitter } from '@workos/oagen';\nimport { collectSnippetArgs, collectWrapperArgs } from '@workos/oagen';\nimport {\n appendAsyncSuffix,\n className,\n fieldName,\n methodName,\n trimMountedResourceFromMethod,\n} from '../dotnet/naming.js';\n\nconst INDENT = ' ';\n\nexport const dotnetSnippetEmitter: SnippetEmitter = {\n language: 'dotnet',\n fileExtension: 'cs',\n\n renderOperation(resolved, ctx, examples) {\n if (resolved.urlBuilder) return null;\n\n // Mirror the .NET SDK's naming pipeline directly from the resolved op:\n // PascalCase → trim mount-target resource → append Async. We avoid\n // calling back into resolveMethodName so the snippet emitter does not\n // re-validate the whole resolved-ops set on every invocation.\n const rawMethodName =\n resolved.wrappers && resolved.wrappers.length > 0 ? resolved.wrappers[0]!.name : resolved.methodName;\n const stem = trimMountedResourceFromMethod(methodName(rawMethodName), resolved.mountOn);\n const method = appendAsyncSuffix(stem);\n\n return renderCall(resolved, ctx, examples, method);\n },\n};\n\nfunction renderCall(\n resolved: ResolvedOperation,\n ctx: EmitterContext,\n examples: ExampleBuilder,\n method: string,\n): string {\n const accessor = className(resolved.mountOn);\n // Options class follows the `{Resource}{Method}Options` convention used by\n // the SDK (e.g. OrganizationsCreateOptions). The method here already had its\n // resource prefix trimmed and Async suffix appended, so reconstruct.\n const stem = method.replace(/Async$/, '');\n const optsType = `${accessor}${stem}Options`;\n\n let args: SnippetArg[];\n let pathArgs: SnippetArg[];\n let optionsArgs: SnippetArg[];\n\n if (resolved.wrappers && resolved.wrappers.length > 0) {\n args = collectWrapperArgs(resolved.wrappers[0]!, ctx, examples);\n pathArgs = [];\n optionsArgs = args;\n } else {\n const collected = collectSnippetArgs(resolved, ctx, examples);\n args = collected.args;\n pathArgs = args.filter((a) => a.source === 'path');\n optionsArgs = args.filter((a) => a.source !== 'path');\n }\n\n const lines: string[] = [];\n lines.push('using WorkOS;');\n lines.push('');\n lines.push('var client = new WorkOSClient(new WorkOSOptions');\n lines.push('{');\n lines.push(`${INDENT}ApiKey = \"sk_example_123456789\",`);\n lines.push(`${INDENT}ClientId = \"client_123456789\",`);\n lines.push('});');\n lines.push('');\n\n const callParts: string[] = [];\n for (const p of pathArgs) callParts.push(renderValue(p.value));\n if (optionsArgs.length > 0) callParts.push(renderOptions(optsType, optionsArgs));\n\n const lhs = `await client.${accessor}.${method}`;\n if (callParts.length === 0) {\n lines.push(`${lhs}();`);\n } else if (callParts.length === 1) {\n lines.push(`${lhs}(${indentContinuationLines(callParts[0]!, INDENT)});`);\n } else {\n lines.push(`${lhs}(`);\n for (let i = 0; i < callParts.length; i++) {\n const trailing = i < callParts.length - 1 ? ',' : '';\n lines.push(`${INDENT}${indentContinuationLines(callParts[i]!, INDENT)}${trailing}`);\n }\n lines.push(');');\n }\n\n return lines.join('\\n');\n}\n\nfunction renderOptions(typeName: string, args: SnippetArg[]): string {\n const lines: string[] = [`new ${typeName}`, '{'];\n for (let i = 0; i < args.length; i++) {\n const a = args[i]!;\n const field = fieldName(a.wireName);\n const value = renderValue(a.value);\n const trailing = i < args.length - 1 ? ',' : ',';\n lines.push(`${INDENT}${field} = ${indentContinuationLines(value, INDENT)}${trailing}`);\n }\n lines.push('}');\n return lines.join('\\n');\n}\n\n// ---------------------------------------------------------------------------\n// C# literal rendering\n// ---------------------------------------------------------------------------\n\nfunction renderValue(value: unknown): string {\n if (value === null || value === undefined) return 'null';\n if (typeof value === 'boolean') return value ? 'true' : 'false';\n if (typeof value === 'number') return String(value);\n if (typeof value === 'string') return csharpString(value);\n if (Array.isArray(value)) return renderArray(value);\n if (typeof value === 'object') return renderDict(value as Record<string, unknown>);\n return 'null';\n}\n\nfunction csharpString(s: string): string {\n return `\"${s.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')}\"`;\n}\n\nfunction renderArray(items: unknown[]): string {\n if (items.length === 0) return 'new[] { }';\n const rendered = items.map((v) => renderValue(v));\n const oneline = `new[] { ${rendered.join(', ')} }`;\n if (oneline.length <= 80 && rendered.every((r) => !r.includes('\\n'))) return oneline;\n const lines: string[] = ['new[]', '{'];\n for (let i = 0; i < rendered.length; i++) {\n const trailing = i < rendered.length - 1 ? ',' : ',';\n lines.push(`${INDENT}${indentContinuationLines(rendered[i]!, INDENT)}${trailing}`);\n }\n lines.push('}');\n return lines.join('\\n');\n}\n\nfunction renderDict(obj: Record<string, unknown>): string {\n // Plain dictionary literal — the dotnet SDK exposes models, but the snippet\n // doesn't know which model class corresponds to each nested object. Emit a\n // Dictionary<string, object> initializer that the SDK serializer can handle\n // or a developer can replace with the typed model.\n const entries = Object.entries(obj);\n if (entries.length === 0) return 'new Dictionary<string, object>()';\n const rendered = entries.map(([k, v]) => ({ key: k, value: renderValue(v) }));\n const lines: string[] = ['new Dictionary<string, object>', '{'];\n for (let i = 0; i < rendered.length; i++) {\n const e = rendered[i]!;\n const trailing = i < rendered.length - 1 ? ',' : ',';\n lines.push(`${INDENT}{ \"${e.key}\", ${indentContinuationLines(e.value, INDENT)} }${trailing}`);\n }\n lines.push('}');\n return lines.join('\\n');\n}\n\nfunction indentContinuationLines(s: string, indent: string): string {\n if (!s.includes('\\n')) return s;\n const lines = s.split('\\n');\n return lines.map((line, i) => (i === 0 ? line : `${indent}${line}`)).join('\\n');\n}\n","import type { EmitterContext, ExampleBuilder, ResolvedOperation, SnippetArg, SnippetEmitter } from '@workos/oagen';\nimport { collectSnippetArgs, collectWrapperArgs } from '@workos/oagen';\nimport { apiClassName, methodName, packageSegment, propertyName } from '../kotlin/naming.js';\n\nconst INDENT = ' ';\n\n/**\n * Emits Java-syntax snippets (rendered as `.java`) backed by the Kotlin SDK's\n * naming so JVM callers see the same method and options names whether they\n * write Kotlin or Java. The WorkOS docs render the `.java` extension because\n * Java is the most common JVM consumer; Kotlin call sites would look almost\n * identical apart from `var`/`val` and named-argument syntax.\n */\nexport const kotlinSnippetEmitter: SnippetEmitter = {\n language: 'java',\n fileExtension: 'java',\n\n renderOperation(resolved, ctx, examples) {\n if (resolved.urlBuilder) return null;\n\n const method =\n resolved.wrappers && resolved.wrappers.length > 0\n ? methodName(resolved.wrappers[0]!.name)\n : methodName(resolved.methodName);\n\n return renderCall(resolved, ctx, examples, method);\n },\n};\n\nfunction renderCall(\n resolved: ResolvedOperation,\n ctx: EmitterContext,\n examples: ExampleBuilder,\n method: string,\n): string {\n const apiClass = apiClassName(resolved.mountOn);\n const accessor = propertyName(resolved.mountOn);\n const optionsType = `${methodName(\n resolved.wrappers && resolved.wrappers.length > 0 ? resolved.wrappers[0]!.name : resolved.methodName,\n )}Options`;\n const optionsTypeCapitalized = optionsType[0]!.toUpperCase() + optionsType.slice(1);\n const apiSubPackage = packageSegment(resolved.mountOn);\n\n let args: SnippetArg[];\n let pathArgs: SnippetArg[];\n let optionsArgs: SnippetArg[];\n\n if (resolved.wrappers && resolved.wrappers.length > 0) {\n args = collectWrapperArgs(resolved.wrappers[0]!, ctx, examples);\n pathArgs = [];\n optionsArgs = args;\n } else {\n const collected = collectSnippetArgs(resolved, ctx, examples);\n args = collected.args;\n pathArgs = args.filter((a) => a.source === 'path');\n optionsArgs = args.filter((a) => a.source !== 'path');\n }\n\n const lines: string[] = [];\n lines.push('import com.workos.WorkOS;');\n if (optionsArgs.length > 0) {\n lines.push(`import com.workos.${apiSubPackage}.${apiClass}Api.${optionsTypeCapitalized};`);\n }\n lines.push('');\n lines.push('WorkOS workos = new WorkOS(\"sk_example_123456789\");');\n lines.push('');\n\n const callParts: string[] = pathArgs.map((p) => renderValue(p.value));\n\n if (optionsArgs.length > 0) {\n lines.push(`${optionsTypeCapitalized} options = ${optionsTypeCapitalized}.builder()`);\n for (const a of optionsArgs) {\n const prop = propertyName(a.wireName);\n const value = renderValue(a.value);\n const indentedValue = indentContinuationLines(value, INDENT);\n lines.push(`${INDENT}.${prop}(${indentedValue})`);\n }\n lines.push(`${INDENT}.build();`);\n lines.push('');\n callParts.push('options');\n }\n\n if (callParts.length === 0) {\n lines.push(`workos.${accessor}.${method}();`);\n } else {\n lines.push(`workos.${accessor}.${method}(${callParts.join(', ')});`);\n }\n\n return lines.join('\\n');\n}\n\n// ---------------------------------------------------------------------------\n// Java literal rendering\n// ---------------------------------------------------------------------------\n\nfunction renderValue(value: unknown): string {\n if (value === null || value === undefined) return 'null';\n if (typeof value === 'boolean') return value ? 'true' : 'false';\n if (typeof value === 'number') return String(value);\n if (typeof value === 'string') return javaString(value);\n if (Array.isArray(value)) return renderList(value);\n if (typeof value === 'object') return renderMap(value as Record<string, unknown>);\n return 'null';\n}\n\nfunction javaString(s: string): string {\n return `\"${s.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')}\"`;\n}\n\nfunction renderList(items: unknown[]): string {\n if (items.length === 0) return 'List.of()';\n const rendered = items.map((v) => renderValue(v));\n const oneline = `List.of(${rendered.join(', ')})`;\n if (oneline.length <= 80 && rendered.every((r) => !r.includes('\\n'))) return oneline;\n const lines: string[] = ['List.of('];\n for (let i = 0; i < rendered.length; i++) {\n const trailing = i < rendered.length - 1 ? ',' : '';\n lines.push(`${INDENT}${indentContinuationLines(rendered[i]!, INDENT)}${trailing}`);\n }\n lines.push(')');\n return lines.join('\\n');\n}\n\nfunction renderMap(obj: Record<string, unknown>): string {\n const entries = Object.entries(obj);\n if (entries.length === 0) return 'Map.of()';\n const rendered = entries.map(([k, v]) => ({ key: k, value: renderValue(v) }));\n const oneline = `Map.of(${rendered.map((e) => `\"${e.key}\", ${e.value}`).join(', ')})`;\n if (oneline.length <= 80 && rendered.every((e) => !e.value.includes('\\n'))) return oneline;\n const lines: string[] = ['Map.of('];\n for (let i = 0; i < rendered.length; i++) {\n const e = rendered[i]!;\n const trailing = i < rendered.length - 1 ? ',' : '';\n lines.push(`${INDENT}\"${e.key}\", ${indentContinuationLines(e.value, INDENT)}${trailing}`);\n }\n lines.push(')');\n return lines.join('\\n');\n}\n\nfunction indentContinuationLines(s: string, indent: string): string {\n if (!s.includes('\\n')) return s;\n const lines = s.split('\\n');\n return lines.map((line, i) => (i === 0 ? line : `${indent}${line}`)).join('\\n');\n}\n","import type { EmitterContext, ExampleBuilder, ResolvedOperation, SnippetArg, SnippetEmitter } from '@workos/oagen';\nimport { collectSnippetArgs, collectWrapperArgs } from '@workos/oagen';\nimport { fieldName, methodName, moduleName, resourceAccessorName, typeName } from '../rust/naming.js';\n\nconst INDENT = ' ';\n\nexport const rustSnippetEmitter: SnippetEmitter = {\n language: 'rust',\n fileExtension: 'rs',\n\n renderOperation(resolved, ctx, examples) {\n if (resolved.urlBuilder) return null;\n\n const method = methodName(\n resolved.wrappers && resolved.wrappers.length > 0 ? resolved.wrappers[0]!.name : resolved.methodName,\n );\n\n return renderCall(resolved, ctx, examples, method);\n },\n};\n\nfunction renderCall(\n resolved: ResolvedOperation,\n ctx: EmitterContext,\n examples: ExampleBuilder,\n method: string,\n): string {\n const accessor = resourceAccessorName(resolved.mountOn);\n const modulePath = moduleName(resolved.mountOn);\n const paramsStructName = `${typeName(\n resolved.wrappers && resolved.wrappers.length > 0 ? resolved.wrappers[0]!.name : resolved.methodName,\n )}Params`;\n\n let args: SnippetArg[];\n let pathArgs: SnippetArg[];\n let structArgs: SnippetArg[];\n\n if (resolved.wrappers && resolved.wrappers.length > 0) {\n args = collectWrapperArgs(resolved.wrappers[0]!, ctx, examples);\n pathArgs = [];\n structArgs = args;\n } else {\n const collected = collectSnippetArgs(resolved, ctx, examples);\n args = collected.args;\n pathArgs = args.filter((a) => a.source === 'path');\n structArgs = args.filter((a) => a.source !== 'path');\n }\n\n const imports: string[] = ['use workos::Client;'];\n if (structArgs.length > 0) {\n imports.push(`use workos::${modulePath}::${paramsStructName};`);\n }\n\n const lines: string[] = [];\n lines.push(...imports);\n lines.push('');\n lines.push('#[tokio::main]');\n lines.push('async fn main() -> Result<(), workos::Error> {');\n lines.push(`${INDENT}let client = Client::builder()`);\n lines.push(`${INDENT}${INDENT}.api_key(\"sk_example_123456789\")`);\n lines.push(`${INDENT}${INDENT}.client_id(\"client_123456789\")`);\n lines.push(`${INDENT}${INDENT}.build();`);\n lines.push('');\n\n const callParts: string[] = [];\n for (const p of pathArgs) {\n const v = p.value;\n if (typeof v === 'string') callParts.push(rustString(v));\n else callParts.push(renderValue(v));\n }\n if (structArgs.length > 0) {\n callParts.push(renderStructLiteral(paramsStructName, structArgs));\n }\n\n const callLines: string[] = [`${INDENT}let _result = client`, `${INDENT}${INDENT}.${accessor}()`];\n if (callParts.length === 0) {\n callLines.push(`${INDENT}${INDENT}.${method}()`);\n } else if (callParts.length === 1 && !callParts[0]!.includes('\\n')) {\n callLines.push(`${INDENT}${INDENT}.${method}(${callParts[0]})`);\n } else {\n callLines.push(`${INDENT}${INDENT}.${method}(`);\n for (let i = 0; i < callParts.length; i++) {\n const trailing = i < callParts.length - 1 ? ',' : '';\n const indented = indentContinuationLines(callParts[i]!, `${INDENT}${INDENT}${INDENT}`);\n callLines.push(`${INDENT}${INDENT}${INDENT}${indented}${trailing}`);\n }\n callLines.push(`${INDENT}${INDENT})`);\n }\n callLines.push(`${INDENT}${INDENT}.await?;`);\n lines.push(...callLines);\n\n lines.push('');\n lines.push(`${INDENT}Ok(())`);\n lines.push('}');\n\n return lines.join('\\n');\n}\n\nfunction renderStructLiteral(structName: string, args: SnippetArg[]): string {\n const lines: string[] = [`${structName} {`];\n for (const a of args) {\n const field = fieldName(a.wireName);\n const value = renderStructValue(a.value);\n lines.push(`${INDENT}${field}: ${indentContinuationLines(value, INDENT)},`);\n }\n lines.push(`${INDENT}..Default::default()`);\n lines.push('}');\n return lines.join('\\n');\n}\n\n// ---------------------------------------------------------------------------\n// Rust literal rendering\n// ---------------------------------------------------------------------------\n\n/** Top-level value rendering (no `.into()` wrap — used for path params etc.). */\nfunction renderValue(value: unknown): string {\n if (value === null || value === undefined) return 'None';\n if (typeof value === 'boolean') return value ? 'true' : 'false';\n if (typeof value === 'number') return String(value);\n if (typeof value === 'string') return rustString(value);\n if (Array.isArray(value)) return renderVec(value);\n if (typeof value === 'object') return renderInlineObject(value as Record<string, unknown>);\n return 'None';\n}\n\n/** Struct-field rendering: wraps strings with `.into()` so `String` fields accept &str. */\nfunction renderStructValue(value: unknown): string {\n if (typeof value === 'string') return `${rustString(value)}.into()`;\n if (Array.isArray(value)) return renderVecStructValues(value);\n return renderValue(value);\n}\n\nfunction rustString(s: string): string {\n return `\"${s.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')}\"`;\n}\n\nfunction renderVec(items: unknown[]): string {\n if (items.length === 0) return 'vec![]';\n const rendered = items.map((v) => renderValue(v));\n const oneline = `vec![${rendered.join(', ')}]`;\n if (oneline.length <= 80 && rendered.every((r) => !r.includes('\\n'))) return oneline;\n const lines: string[] = ['vec!['];\n for (let i = 0; i < rendered.length; i++) {\n const trailing = i < rendered.length - 1 ? ',' : ',';\n lines.push(`${INDENT}${indentContinuationLines(rendered[i]!, INDENT)}${trailing}`);\n }\n lines.push(']');\n return lines.join('\\n');\n}\n\nfunction renderVecStructValues(items: unknown[]): string {\n if (items.length === 0) return 'vec![]';\n const rendered = items.map((v) => renderStructValue(v));\n const oneline = `vec![${rendered.join(', ')}]`;\n if (oneline.length <= 80 && rendered.every((r) => !r.includes('\\n'))) return oneline;\n const lines: string[] = ['vec!['];\n for (let i = 0; i < rendered.length; i++) {\n const trailing = i < rendered.length - 1 ? ',' : ',';\n lines.push(`${INDENT}${indentContinuationLines(rendered[i]!, INDENT)}${trailing}`);\n }\n lines.push(']');\n return lines.join('\\n');\n}\n\n/** Render a plain object as a generic `serde_json::json!({...})` literal. The\n * snippet doesn't know the exact Rust struct corresponding to each nested\n * object, so we fall back to a serde-friendly literal a developer can swap\n * for the concrete struct (e.g. `OrganizationDomainData { ... }`). */\nfunction renderInlineObject(obj: Record<string, unknown>): string {\n const entries = Object.entries(obj);\n if (entries.length === 0) return 'serde_json::json!({})';\n const rendered = entries.map(([k, v]) => ({ key: k, value: renderValue(v) }));\n const oneline = `serde_json::json!({ ${rendered.map((e) => `\"${e.key}\": ${e.value}`).join(', ')} })`;\n if (oneline.length <= 80 && rendered.every((e) => !e.value.includes('\\n'))) return oneline;\n const lines: string[] = ['serde_json::json!({'];\n for (let i = 0; i < rendered.length; i++) {\n const e = rendered[i]!;\n const trailing = i < rendered.length - 1 ? ',' : ',';\n lines.push(`${INDENT}\"${e.key}\": ${indentContinuationLines(e.value, INDENT)}${trailing}`);\n }\n lines.push('})');\n return lines.join('\\n');\n}\n\nfunction indentContinuationLines(s: string, indent: string): string {\n if (!s.includes('\\n')) return s;\n const lines = s.split('\\n');\n return lines.map((line, i) => (i === 0 ? line : `${indent}${line}`)).join('\\n');\n}\n","import type { SnippetEmitter } from '@workos/oagen';\nimport { dotnetSnippetEmitter } from './dotnet.js';\nimport { goSnippetEmitter } from './go.js';\nimport { kotlinSnippetEmitter } from './kotlin.js';\nimport { phpSnippetEmitter } from './php.js';\nimport { pythonSnippetEmitter } from './python.js';\nimport { rubySnippetEmitter } from './ruby.js';\nimport { rustSnippetEmitter } from './rust.js';\n\n/**\n * Bundle of snippet emitters for every WorkOS SDK language we currently\n * generate call-site samples for. Node is intentionally absent — the docs\n * pipeline still owns hand-authored TypeScript samples there.\n *\n * ```ts\n * import { runSnippetEmitters, workosSnippetsPlugin } from '@workos/oagen-emitters';\n *\n * const snippets = runSnippetEmitters(workosSnippetsPlugin.snippets, ctx);\n * ```\n *\n * Each entry mirrors a published WorkOS SDK and reuses that emitter's naming\n * helpers (`src/<lang>/naming.ts`), so generated samples stay in lockstep\n * with the SDK they document — method names, mount-target casing, parameter\n * names, and reserved-word handling all match what the real SDK exposes.\n */\nexport const workosSnippetsPlugin: { snippets: SnippetEmitter[] } = {\n snippets: [\n rubySnippetEmitter,\n pythonSnippetEmitter,\n phpSnippetEmitter,\n goSnippetEmitter,\n dotnetSnippetEmitter,\n kotlinSnippetEmitter,\n rustSnippetEmitter,\n ],\n};\n"],"mappings":"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"}
@@ -5545,8 +5545,9 @@ function renderOptionsObjectMethod(lines, op, plan, method, service, ctx, modelM
5545
5545
  const itemType = preferredBaselineTypeName(ctx, autoPaginatableItemType$1(baselineMethod?.returnType)) ?? (itemRawName ? resolveInterfaceName(itemRawName, ctx) : responseModel);
5546
5546
  if (!itemType) return false;
5547
5547
  const wireType = wireInterfaceName(itemType);
5548
- const returnType = preferredBaselineReturnType(ctx, baselineMethod?.returnType) ?? `Promise<AutoPaginatable<${itemType}>>`;
5549
5548
  const needsWireSerializer = op.queryParams.filter((p) => !PAGINATION_PARAM_NAMES.has(p.name)).some((p) => fieldName$6(p.name) !== wireFieldName(p.name));
5549
+ const paginationType = needsWireSerializer ? "PaginationOptions" : optionParam.type;
5550
+ const returnType = needsWireSerializer ? `Promise<AutoPaginatable<${itemType}, ${paginationType}>>` : preferredBaselineReturnType(ctx, baselineMethod?.returnType) ?? `Promise<AutoPaginatable<${itemType}, ${paginationType}>>`;
5550
5551
  const listOptionsExpr = needsWireSerializer ? `options ? serialize${optionParam.type}(options) : undefined` : "paginationOptions";
5551
5552
  lines.push(` async ${method}(${renderOptionsParam(optionParam)}): ${returnType} {`);
5552
5553
  renderOptionsObjectDestructure(lines, pathBindings, needsWireSerializer ? void 0 : "paginationOptions");
@@ -5696,12 +5697,14 @@ function resolveOptionsObjectField$1(localName, optionType, ctx) {
5696
5697
  function renderPaginatedMethod(lines, op, plan, method, itemType, pathStr, resolvedServiceName, specEnumNames) {
5697
5698
  const extraParams = op.queryParams.filter((p) => !PAGINATION_PARAM_NAMES.has(p.name));
5698
5699
  const optionsType = extraParams.length > 0 ? paginatedOptionsName(method, resolvedServiceName) : "PaginationOptions";
5699
- const serializerArg = extraParams.some((p) => fieldName$6(p.name) !== wireFieldName(p.name)) ? `, serialize${optionsType}` : "";
5700
+ const needsWireSerializer = extraParams.some((p) => fieldName$6(p.name) !== wireFieldName(p.name));
5701
+ const serializerArg = needsWireSerializer ? `, serialize${optionsType}` : "";
5700
5702
  const pathParams = buildPathParams(op, specEnumNames);
5701
5703
  const allParams = pathParams ? `${pathParams}, options?: ${optionsType}` : `options?: ${optionsType}`;
5702
5704
  const wireType = wireInterfaceName(itemType);
5703
5705
  const serializeCall = serializerArg ? `options ? serialize${optionsType}(options) : undefined` : "options";
5704
- lines.push(` async ${method}(${allParams}): Promise<AutoPaginatable<${itemType}, ${optionsType}>> {`);
5706
+ const paginationType = needsWireSerializer ? "PaginationOptions" : optionsType;
5707
+ lines.push(` async ${method}(${allParams}): Promise<AutoPaginatable<${itemType}, ${paginationType}>> {`);
5705
5708
  lines.push(` return new AutoPaginatable(`);
5706
5709
  lines.push(` await fetchAndDeserialize<${wireType}, ${itemType}>(`);
5707
5710
  lines.push(` this.workos,`);
@@ -7731,6 +7734,14 @@ function pathParamTestValue(param, paramName) {
7731
7734
  if (name) return `test_${fieldName$6(name)}`;
7732
7735
  return "test_id";
7733
7736
  }
7737
+ function queryParamTestValue(param, modelMap) {
7738
+ if (param.example !== void 0) {
7739
+ if (Array.isArray(param.example)) return `[${param.example.map((v) => typeof v === "string" ? `'${v}'` : String(v)).join(", ")}]`;
7740
+ if (param.type.kind === "primitive" && param.type.format === "date-time" && typeof param.example === "string") return `new Date('${param.example}')`;
7741
+ return typeof param.example === "string" ? `'${param.example}'` : String(param.example);
7742
+ }
7743
+ return fixtureValueForType(param.type, param.name, "Options", modelMap) ?? "'test'";
7744
+ }
7734
7745
  /** Build test arguments for all path params (handles multiple path params). */
7735
7746
  function buildTestPathArgs(op) {
7736
7747
  const templateVars = [...op.path.matchAll(/\{(\w+)\}/g)].map(([, name]) => fieldName$6(name));
@@ -7752,7 +7763,7 @@ function renderPaginatedTest(lines, op, plan, method, serviceProp, modelMap, ctx
7752
7763
  const optionsArg = buildOptionsObjectTestArg(op, plan, baselineMethod, modelMap, ctx);
7753
7764
  const baselineItemType = autoPaginatableItemType(baselineMethod?.returnType);
7754
7765
  const generatedItemType = ctx ? resolveInterfaceName(itemModelName, ctx) : null;
7755
- const skipFieldAssertions = Boolean(baselineItemType && generatedItemType && baselineItemType !== generatedItemType);
7766
+ const skipFieldAssertions = Boolean(baselineMethod?.returnType && !baselineItemType) || Boolean(baselineItemType && generatedItemType && baselineItemType !== generatedItemType);
7756
7767
  lines.push(" it('returns paginated results', async () => {");
7757
7768
  lines.push(` fetchOnce(list${itemModelName}Fixture);`);
7758
7769
  lines.push("");
@@ -7907,7 +7918,7 @@ function buildOptionsObjectTestArg(op, plan, baselineMethod, modelMap, ctx) {
7907
7918
  ].includes(param.name)) : op.queryParams;
7908
7919
  for (const param of queryParams) {
7909
7920
  const localName = fieldName$6(param.name);
7910
- const value = fixtureValueForType(param.type, param.name, "Options", modelMap) ?? "'test'";
7921
+ const value = queryParamTestValue(param, modelMap);
7911
7922
  entries.push(`${localName}: ${value}`);
7912
7923
  }
7913
7924
  if (plan.hasBody) {
@@ -9255,6 +9266,46 @@ function fileName$2(name) {
9255
9266
  function fieldName$5(name) {
9256
9267
  return toSnakeCase(name);
9257
9268
  }
9269
+ /**
9270
+ * Python builtins that should not be shadowed by parameter names.
9271
+ * When a path/query param name collides, suffix with underscore.
9272
+ */
9273
+ const PYTHON_BUILTIN_NAMES = new Set([
9274
+ "type",
9275
+ "id",
9276
+ "list",
9277
+ "dict",
9278
+ "set",
9279
+ "map",
9280
+ "filter",
9281
+ "input",
9282
+ "object",
9283
+ "format",
9284
+ "hash",
9285
+ "range",
9286
+ "dir",
9287
+ "max",
9288
+ "min",
9289
+ "next",
9290
+ "open",
9291
+ "print",
9292
+ "len",
9293
+ "str",
9294
+ "int",
9295
+ "float",
9296
+ "bool",
9297
+ "bytes",
9298
+ "tuple",
9299
+ "super"
9300
+ ]);
9301
+ /**
9302
+ * Safe parameter name for path/query params that avoids shadowing Python builtins.
9303
+ * Body field names should continue to use fieldName() to preserve wire-key compatibility.
9304
+ */
9305
+ function safeParamName$1(name) {
9306
+ const snake = toSnakeCase(name);
9307
+ return PYTHON_BUILTIN_NAMES.has(snake) ? `${snake}_` : snake;
9308
+ }
9258
9309
  /** snake_case module/directory name. */
9259
9310
  function moduleName$2(name) {
9260
9311
  return toSnakeCase(name);
@@ -26120,6 +26171,10 @@ function variantName(value) {
26120
26171
  if (/^[0-9]/.test(pascal)) return `V${pascal}`;
26121
26172
  return pascal || "Empty";
26122
26173
  }
26174
+ /** Client accessor method name on `Client` (snake_case service name). */
26175
+ function resourceAccessorName(serviceName) {
26176
+ return moduleName(serviceName);
26177
+ }
26123
26178
  /** Suffix any Rust reserved word with `_` so it parses as an identifier. */
26124
26179
  function escapeKeyword(s) {
26125
26180
  if (s.length === 0) return "_";
@@ -28413,6 +28468,6 @@ const workosEmittersPlugin = {
28413
28468
  }
28414
28469
  };
28415
28470
  //#endregion
28416
- export { pythonEmitter as _, rustExtractor as a, pythonExtractor as c, rustEmitter as d, rubyEmitter as f, phpEmitter as g, goEmitter as h, kotlinExtractor as i, rubyExtractor as l, dotnetEmitter as m, elixirExtractor as n, goExtractor as o, kotlinEmitter as p, dotnetExtractor as r, phpExtractor as s, workosEmittersPlugin as t, nodeExtractor as u, nodeEmitter as v };
28471
+ export { fieldName$2 as A, servicePropertyName$2 as B, apiClassName as C, dotnetEmitter as D, propertyName as E, fieldName$3 as F, fieldName$5 as H, methodName$3 as I, trimMountedResourceFromMethod$2 as L, trimMountedResourceFromMethod$1 as M, goEmitter as N, appendAsyncSuffix as O, className$3 as P, phpEmitter as R, kotlinEmitter as S, packageSegment as T, safeParamName$1 as U, pythonEmitter as V, nodeEmitter as W, rubyEmitter as _, rustExtractor as a, resolveServiceTarget as b, pythonExtractor as c, rustEmitter as d, fieldName as f, typeName as g, resourceAccessorName as h, kotlinExtractor as i, methodName$2 as j, className$2 as k, rubyExtractor as l, moduleName as m, elixirExtractor as n, goExtractor as o, methodName as p, dotnetExtractor as r, phpExtractor as s, workosEmittersPlugin as t, nodeExtractor as u, buildExportedClassNameSet as v, methodName$1 as w, safeParamName as x, fieldName$1 as y, fieldName$4 as z };
28417
28472
 
28418
- //# sourceMappingURL=plugin-C2Hp2Vs2.mjs.map
28473
+ //# sourceMappingURL=plugin-DuB1UozS.mjs.map