Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
| import * as tasks from "./tasks"; | |
| import type { Options, RequestArgs } from "./types"; | |
| import type { DistributiveOmit } from "./utils/distributive-omit"; | |
| /* eslint-disable @typescript-eslint/no-empty-interface */ | |
| /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ | |
| type Task = typeof tasks; | |
| type TaskWithNoAccessToken = { | |
| [key in keyof Task]: ( | |
| args: DistributiveOmit<Parameters<Task[key]>[0], "accessToken">, | |
| options?: Parameters<Task[key]>[1] | |
| ) => ReturnType<Task[key]>; | |
| }; | |
| type TaskWithNoAccessTokenNoModel = { | |
| [key in keyof Task]: ( | |
| args: DistributiveOmit<Parameters<Task[key]>[0], "accessToken" | "model">, | |
| options?: Parameters<Task[key]>[1] | |
| ) => ReturnType<Task[key]>; | |
| }; | |
| export class HfInference { | |
| private readonly accessToken: string; | |
| private readonly defaultOptions: Options; | |
| constructor(accessToken = "", defaultOptions: Options = {}) { | |
| this.accessToken = accessToken; | |
| this.defaultOptions = defaultOptions; | |
| for (const [name, fn] of Object.entries(tasks)) { | |
| Object.defineProperty(this, name, { | |
| enumerable: false, | |
| value: (params: RequestArgs, options: Options) => | |
| // eslint-disable-next-line @typescript-eslint/no-explicit-any | |
| fn({ ...params, accessToken } as any, { ...defaultOptions, ...options }), | |
| }); | |
| } | |
| } | |
| /** | |
| * Returns copy of HfInference tied to a specified endpoint. | |
| */ | |
| public endpoint(endpointUrl: string): HfInferenceEndpoint { | |
| return new HfInferenceEndpoint(endpointUrl, this.accessToken, this.defaultOptions); | |
| } | |
| } | |
| export class HfInferenceEndpoint { | |
| constructor(endpointUrl: string, accessToken = "", defaultOptions: Options = {}) { | |
| accessToken; | |
| defaultOptions; | |
| for (const [name, fn] of Object.entries(tasks)) { | |
| Object.defineProperty(this, name, { | |
| enumerable: false, | |
| value: (params: RequestArgs, options: Options) => | |
| // eslint-disable-next-line @typescript-eslint/no-explicit-any | |
| fn({ ...params, accessToken, model: endpointUrl } as any, { ...defaultOptions, ...options }), | |
| }); | |
| } | |
| } | |
| } | |
| export interface HfInference extends TaskWithNoAccessToken {} | |
| export interface HfInferenceEndpoint extends TaskWithNoAccessTokenNoModel {} | |