UNPKG

benchling_typescript_sdk

Version:

Typescript SDK for Benchling API

50 lines (47 loc) 1.87 kB
import { compileAppConfigItems, ConfigItem, KeyName, SubKeyName } from "../../utils/readAppConfig"; import { BaseClient } from "../BaseClient"; import { chunkQueries } from "../superModules/chunkQueries"; import { AppConfigItem, AppConfigurationItemsGetParamQuery, BenchlingApp, BenchlingAppGetParamQuery, } from "../types"; type LimitedListQueries = keyof NonNullable<AppConfigurationItemsGetParamQuery>; export class Apps { private client: BaseClient; constructor(client: BaseClient) { this.client = client; } public listApps(parameters: BenchlingAppGetParamQuery): AsyncGenerator<BenchlingApp[]> { return this.client.fetchPagesIterator<BenchlingApp>("apps", parameters); } public async *listAppConfigurationItemsNoLimits( paramQuery: AppConfigurationItemsGetParamQuery ): AsyncGenerator<AppConfigItem[]> { // console.log("I was run!!"); const limitedSearches: LimitedListQueries[] = ["ids"]; if (!paramQuery || typeof paramQuery !== "object") { throw new Error("Invalid query parameters provided."); } // Generate the list of chunked queries so that no list of queries is longer than 100 let paramQueries: AppConfigurationItemsGetParamQuery[] = chunkQueries< NonNullable<AppConfigurationItemsGetParamQuery> >(paramQuery, 100, limitedSearches); // Iterate over each chunked query for (const query of paramQueries) { // console.log(query); // Call list for the current query for await (const batch of this.listAppConfigurationItems(query)) { // Yield each batch // console.log(batch); yield batch; } } } public listAppConfigurationItems( parameters: AppConfigurationItemsGetParamQuery ): AsyncGenerator<AppConfigItem[]> { return this.client.fetchPagesIterator<AppConfigItem>("app-configuration-items", parameters); } }