diff options
| author | Dax Raad <[email protected]> | 2025-08-22 18:30:25 -0400 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2025-08-22 18:30:25 -0400 |
| commit | 0f1697b2ab6e2401d0a3534323bb75d5002e8e32 (patch) | |
| tree | 6350dcd0319802e8ff373c610909c020a1e52e71 /packages/sdk/js/src/gen/core/params.ts | |
| parent | 6e626afdcbfe7bebd5799fdfea342c15ab2151bb (diff) | |
| download | opencode-0f1697b2ab6e2401d0a3534323bb75d5002e8e32.tar.gz opencode-0f1697b2ab6e2401d0a3534323bb75d5002e8e32.zip | |
add sse streaming to sdk
Diffstat (limited to 'packages/sdk/js/src/gen/core/params.ts')
| -rw-r--r-- | packages/sdk/js/src/gen/core/params.ts | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/packages/sdk/js/src/gen/core/params.ts b/packages/sdk/js/src/gen/core/params.ts deleted file mode 100644 index 0a09619d1..000000000 --- a/packages/sdk/js/src/gen/core/params.ts +++ /dev/null @@ -1,142 +0,0 @@ -type Slot = "body" | "headers" | "path" | "query" - -export type Field = - | { - in: Exclude<Slot, "body"> - /** - * Field name. This is the name we want the user to see and use. - */ - key: string - /** - * Field mapped name. This is the name we want to use in the request. - * If omitted, we use the same value as `key`. - */ - map?: string - } - | { - in: Extract<Slot, "body"> - /** - * Key isn't required for bodies. - */ - key?: string - map?: string - } - -export interface Fields { - allowExtra?: Partial<Record<Slot, boolean>> - args?: ReadonlyArray<Field> -} - -export type FieldsConfig = ReadonlyArray<Field | Fields> - -const extraPrefixesMap: Record<string, Slot> = { - $body_: "body", - $headers_: "headers", - $path_: "path", - $query_: "query", -} -const extraPrefixes = Object.entries(extraPrefixesMap) - -type KeyMap = Map< - string, - { - in: Slot - map?: string - } -> - -const buildKeyMap = (fields: FieldsConfig, map?: KeyMap): KeyMap => { - if (!map) { - map = new Map() - } - - for (const config of fields) { - if ("in" in config) { - if (config.key) { - map.set(config.key, { - in: config.in, - map: config.map, - }) - } - } else if (config.args) { - buildKeyMap(config.args, map) - } - } - - return map -} - -interface Params { - body: unknown - headers: Record<string, unknown> - path: Record<string, unknown> - query: Record<string, unknown> -} - -const stripEmptySlots = (params: Params) => { - for (const [slot, value] of Object.entries(params)) { - if (value && typeof value === "object" && !Object.keys(value).length) { - delete params[slot as Slot] - } - } -} - -export const buildClientParams = (args: ReadonlyArray<unknown>, fields: FieldsConfig) => { - const params: Params = { - body: {}, - headers: {}, - path: {}, - query: {}, - } - - const map = buildKeyMap(fields) - - let config: FieldsConfig[number] | undefined - - for (const [index, arg] of args.entries()) { - if (fields[index]) { - config = fields[index] - } - - if (!config) { - continue - } - - if ("in" in config) { - if (config.key) { - const field = map.get(config.key)! - const name = field.map || config.key - ;(params[field.in] as Record<string, unknown>)[name] = arg - } else { - params.body = arg - } - } else { - for (const [key, value] of Object.entries(arg ?? {})) { - const field = map.get(key) - - if (field) { - const name = field.map || key - ;(params[field.in] as Record<string, unknown>)[name] = value - } else { - const extra = extraPrefixes.find(([prefix]) => key.startsWith(prefix)) - - if (extra) { - const [prefix, slot] = extra - ;(params[slot] as Record<string, unknown>)[key.slice(prefix.length)] = value - } else { - for (const [slot, allowed] of Object.entries(config.allowExtra ?? {})) { - if (allowed) { - ;(params[slot as Slot] as Record<string, unknown>)[key] = value - break - } - } - } - } - } - } - } - - stripEmptySlots(params) - - return params -} |
