import { JetroutineFunction } from '../config/_symbols'; import { RuntimeClient } from '../runtime/_client'; import { Jetroutine } from './jetroutine'; export class JetpackClient { apiKey?: string; private runtimeClient: RuntimeClient; constructor(apiKey?: string) { this.apiKey = apiKey; this.runtimeClient = new RuntimeClient(apiKey); } jetroutine(uniqueName: string, func: JetroutineFunction) { return new Jetroutine({ uniqueName, func, runtimeClient: this.runtimeClient, }); } // Use for external api calls create(jetroutine: Jetroutine) { return new Jetroutine({ uniqueName: jetroutine.uniqueName, func: jetroutine.func, runtimeClient: this.runtimeClient, external: true, }); } // This should not be invoked outside of jetpack sdk. _getRuntimeClient() { return this.runtimeClient; } } export const defaultJetpackClient = new JetpackClient(); export const jetroutineWrapper = ( uniqueName: string, func: JetroutineFunction, ) => defaultJetpackClient.jetroutine(uniqueName, func);