@looker/sdk-node 22.20.1 → 23.2.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.
- package/CHANGELOG.md +30 -1
- package/lib/esm/index.js +60 -5
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/nodeSdk.js +18 -14
- package/lib/esm/nodeSdk.js.map +1 -1
- package/lib/esm/nodeServices.js +15 -12
- package/lib/esm/nodeServices.js.map +1 -1
- package/lib/esm/nodeSession.js +18 -66
- package/lib/esm/nodeSession.js.map +1 -1
- package/lib/esm/nodeSettings.js +36 -45
- package/lib/esm/nodeSettings.js.map +1 -1
- package/lib/esm/nodeTransport.js +51 -96
- package/lib/esm/nodeTransport.js.map +1 -1
- package/lib/esm/testUtils/index.js +17 -0
- package/lib/esm/testUtils/index.js.map +1 -0
- package/lib/esm/testUtils/testUtils.js +55 -0
- package/lib/esm/testUtils/testUtils.js.map +1 -0
- package/lib/index.js +0 -10
- package/lib/index.js.map +1 -1
- package/lib/nodeSdk.js +0 -7
- package/lib/nodeSdk.js.map +1 -1
- package/lib/nodeServices.js +3 -11
- package/lib/nodeServices.js.map +1 -1
- package/lib/nodeSession.js +3 -63
- package/lib/nodeSession.js.map +1 -1
- package/lib/nodeSettings.js +6 -49
- package/lib/nodeSettings.js.map +1 -1
- package/lib/nodeTransport.js +5 -71
- package/lib/nodeTransport.js.map +1 -1
- package/lib/testUtils/index.js +0 -2
- package/lib/testUtils/index.js.map +1 -1
- package/lib/testUtils/testUtils.js +1 -15
- package/lib/testUtils/testUtils.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/nodeTransport.ts"],"names":["nodeCrypto","rq","rp","PassThrough","StatusCodeError","BaseTransport","ResponseMode","defaultTimeout","responseMode","trace","LookerAppId","agentPrefix","safeBase64","utf8","asString","value","Buffer","from","toString","Object","JSON","stringify","NodeCryptoHash","secureRandom","byteCount","randomBytes","sha256Hash","message","hash","createHash","update","Uint8Array","digest","NodeTransport","constructor","options","rawRequest","method","path","queryParams","body","authenticator","init","initRequest","req","promise","rawResponse","requestStarted","Date","now","responseCompleted","res","resTyped","url","contentType","String","headers","ok","statusCode","statusMessage","e","error","observer","parseResponse","mode","response","parse","result","string","match","err","request","type","requestor","props","toUpperCase","get","put","post","patch","head","stream","callback","returnPromise","streamPromise","Promise","resolve","reject","hasResolved","on","code","socket","setKeepAlive","pipe","results","all","verifySsl","verify_ssl","timeout","agentTag","requestPath","makeUrl","undefined","encoding","json","rejectUnauthorized","resolveWithFullResponse"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport nodeCrypto from 'crypto'\nimport type { Request } from 'request'\nimport rq from 'request'\n\nimport rp from 'request-promise-native'\nimport type { Readable } from 'readable-stream'\nimport { PassThrough } from 'readable-stream'\nimport { StatusCodeError } from 'request-promise-native/errors'\nimport {\n BaseTransport,\n ResponseMode,\n defaultTimeout,\n responseMode,\n trace,\n LookerAppId,\n agentPrefix,\n safeBase64,\n} from '@looker/sdk-rtl'\nimport type {\n Authenticator,\n HttpMethod,\n ISDKError,\n ITransportSettings,\n SDKResponse,\n Values,\n IRequestHeaders,\n IRawResponse,\n ICryptoHash,\n} from '@looker/sdk-rtl'\n\nconst utf8 = 'utf8'\n\nconst asString = (value: any): string => {\n if (value instanceof Buffer) {\n return Buffer.from(value).toString(utf8)\n }\n if (value instanceof Object) {\n return JSON.stringify(value)\n }\n return value.toString()\n}\n\nexport class NodeCryptoHash implements ICryptoHash {\n secureRandom(byteCount: number): string {\n return nodeCrypto.randomBytes(byteCount).toString('hex')\n }\n\n async sha256Hash(message: string): Promise<string> {\n const hash = nodeCrypto.createHash('sha256')\n hash.update(message)\n return safeBase64(new Uint8Array(hash.digest()))\n }\n}\n\nexport type RequestOptions = rq.RequiredUriUrl &\n rp.RequestPromiseOptions &\n rq.OptionsWithUrl\n\nexport class NodeTransport extends BaseTransport {\n constructor(protected readonly options: ITransportSettings) {\n super(options)\n }\n\n async rawRequest(\n method: HttpMethod,\n path: string,\n queryParams?: Values,\n body?: any,\n authenticator?: Authenticator,\n options?: Partial<ITransportSettings>\n ): Promise<IRawResponse> {\n const init: RequestOptions = await this.initRequest(\n method,\n path,\n queryParams,\n body,\n authenticator,\n options\n )\n const req = rp(init).promise()\n let rawResponse: IRawResponse\n\n const requestStarted = Date.now()\n let responseCompleted\n try {\n const res = await req\n responseCompleted = Date.now()\n const resTyped = res as rq.Response\n rawResponse = {\n method,\n url: resTyped.url || init.url.toString() || '',\n body: await resTyped.body,\n contentType: String(resTyped.headers['content-type']),\n ok: true,\n statusCode: resTyped.statusCode,\n statusMessage: resTyped.statusMessage,\n headers: res.headers,\n requestStarted,\n responseCompleted,\n }\n // Update OK with response statusCode check\n rawResponse.ok = this.ok(rawResponse)\n } catch (e: any) {\n let statusMessage = `${method} ${path}`\n let statusCode = 404\n let contentType = 'text'\n let body\n responseCompleted = Date.now()\n if (e instanceof StatusCodeError) {\n statusCode = e.statusCode\n if (e.error instanceof Buffer) {\n body = asString(e.error)\n statusMessage += `: ${statusCode}`\n } else if (e.error instanceof Object) {\n // Capture error object as body\n body = e.error\n statusMessage += `: ${e.message}`\n // Clarify the error message\n body.message = statusMessage\n contentType = 'application/json'\n }\n } else if (e.error instanceof Buffer) {\n body = asString(e.error)\n } else {\n body = JSON.stringify(e)\n contentType = 'application/json'\n }\n rawResponse = {\n method,\n url: init.url.toString(),\n body,\n contentType,\n ok: false,\n statusCode,\n statusMessage,\n headers: {},\n requestStarted,\n responseCompleted,\n }\n }\n return this.observer ? this.observer(rawResponse) : rawResponse\n }\n\n async parseResponse<TSuccess, TError>(res: IRawResponse) {\n const mode = responseMode(res.contentType)\n let response: SDKResponse<TSuccess, TError>\n let error\n if (!res.ok) {\n // Raw request had an error. Make sure it's a string before parsing the result\n error = res.body\n if (typeof error === 'string') {\n try {\n error = JSON.parse(error)\n } catch {\n error = { message: `Request failed: ${error}` }\n }\n }\n response = { ok: false, error }\n return response\n }\n let result = await res.body\n if (mode === ResponseMode.string) {\n if (res.contentType.match(/^application\\/.*\\bjson\\b/g)) {\n try {\n if (result instanceof Buffer) {\n result = Buffer.from(result).toString(utf8)\n }\n if (!(result instanceof Object)) {\n result = JSON.parse(result.toString())\n }\n } catch (err) {\n error = err\n }\n } else if (!error) {\n // Convert to string otherwise\n result = asString(result)\n }\n } else {\n try {\n result = Buffer.from(result ?? '').toString('binary')\n } catch (err) {\n error = err\n }\n }\n if (!error) {\n response = { ok: true, value: result }\n } else {\n response = { ok: false, error: error as TError }\n }\n return response\n }\n\n async request<TSuccess, TError>(\n method: HttpMethod,\n path: string,\n queryParams?: Values,\n body?: any,\n authenticator?: Authenticator,\n options?: Partial<ITransportSettings>\n ): Promise<SDKResponse<TSuccess, TError>> {\n try {\n const res = await this.rawRequest(\n method,\n path,\n queryParams,\n body,\n authenticator,\n options\n )\n return await this.parseResponse<TSuccess, TError>(res)\n } catch (e: any) {\n const error: ISDKError = {\n message:\n typeof e.message === 'string'\n ? e.message\n : `The SDK call was not successful. The error was '${e}'.`,\n type: 'sdk_error',\n }\n return { error, ok: false }\n }\n }\n\n /**\n * Http method dispatcher from general-purpose request properties\n * @param props\n * @returns {request.Request}\n */\n protected requestor(props: RequestOptions): Request {\n const method = props.method?.toString().toUpperCase() as HttpMethod\n switch (method) {\n case 'GET':\n return rq.get(props)\n case 'PUT':\n return rq.put(props)\n case 'POST':\n return rq.post(props)\n case 'PATCH':\n return rq.patch(props)\n case 'DELETE':\n return rq.put(props)\n case 'HEAD':\n return rq.head(props)\n default:\n return rq.get(props)\n }\n }\n\n async stream<TSuccess>(\n callback: (readable: Readable) => Promise<TSuccess>,\n method: HttpMethod,\n path: string,\n queryParams?: Values,\n body?: any,\n authenticator?: Authenticator,\n options?: Partial<ITransportSettings>\n ): Promise<TSuccess> {\n const stream = new PassThrough()\n const returnPromise = callback(stream)\n const init = await this.initRequest(\n method,\n path,\n queryParams,\n body,\n authenticator,\n options\n )\n\n const streamPromise = new Promise<void>((resolve, reject) => {\n trace(`[stream] beginning stream via download url`, init)\n let hasResolved = false\n const req = this.requestor(init)\n\n req\n .on('error', (err) => {\n if (hasResolved && (err as any).code === 'ECONNRESET') {\n trace(\n 'ignoring ECONNRESET that occurred after streaming finished',\n init\n )\n } else {\n trace('streaming error', err)\n reject(err)\n }\n })\n .on('finish', () => {\n trace(`[stream] streaming via download url finished`, init)\n })\n .on('socket', (socket) => {\n trace(`[stream] setting keepalive on socket`, init)\n socket.setKeepAlive(true)\n })\n .on('abort', () => {\n trace(`[stream] streaming via download url aborted`, init)\n })\n .on('response', () => {\n trace(`[stream] got response from download url`, init)\n })\n .on('close', () => {\n trace(`[stream] request stream closed`, init)\n })\n .pipe(stream)\n .on('error', (err) => {\n trace(`[stream] PassThrough stream error`, err)\n reject(err)\n })\n .on('finish', () => {\n trace(`[stream] PassThrough stream finished`, init)\n resolve()\n hasResolved = true\n })\n .on('close', () => {\n trace(`[stream] PassThrough stream closed`, init)\n })\n })\n\n const results = await Promise.all([returnPromise, streamPromise])\n return results[0]\n }\n\n /**\n * should the request verify SSL?\n * @param {Partial<ITransportSettings>} options Defaults to the instance options values\n * @returns {boolean} true if the request should require full SSL verification\n */\n verifySsl(options?: Partial<ITransportSettings>) {\n if (!options) options = this.options\n return 'verify_ssl' in options ? options.verify_ssl : true\n }\n\n /**\n * Request timeout in seconds\n * @param {Partial<ITransportSettings>} options Defaults to the instance options values\n * @returns {number | undefined}\n */\n timeout(options?: Partial<ITransportSettings>): number {\n if (!options) options = this.options\n if ('timeout' in options && options.timeout) return options.timeout\n return defaultTimeout\n }\n\n private async initRequest(\n method: HttpMethod,\n path: string,\n queryParams?: any,\n body?: any,\n authenticator?: Authenticator,\n options?: Partial<ITransportSettings>\n ) {\n options = options ? { ...this.options, ...options } : this.options\n if (!options.agentTag) {\n options.agentTag = agentPrefix\n }\n const headers: IRequestHeaders = {\n [LookerAppId]: options.agentTag,\n ...options.headers,\n }\n\n const requestPath = this.makeUrl(path, options, queryParams)\n let init: RequestOptions = {\n body: body || undefined,\n encoding: null,\n headers: headers,\n json: body && typeof body !== 'string',\n // null = requests are returned as binary so `Content-Type` dictates response format\n method,\n\n rejectUnauthorized: this.verifySsl(options),\n\n // If body is a string, pass as is\n resolveWithFullResponse: true,\n\n timeout: this.timeout(options) * 1000,\n url: requestPath,\n }\n if ('encoding' in options) init.encoding = options.encoding\n\n if (authenticator) {\n // Automatic authentication process for the request\n init = await authenticator(init)\n }\n return init\n }\n\n // /**\n // * A streaming helper for the \"json\" data format. It handles automatically parsing\n // * the JSON in a streaming fashion. You just need to implement a function that will\n // * be called for each row.\n // *\n // * ```ts\n // * await request.streamJson((row) => {\n // * // This will be called for each row of data\n // * })\n // * ```\n // *\n // * @returns A promise that will be resolved when streaming is complete.\n // * @param onRow A function that will be called for each streamed row, with the row as the first argument.\n // */\n // async streamJson(onRow: (row: { [fieldName: string]: any }) => void) {\n // return new Promise<void>((resolve, reject) => {\n // let rows = 0\n // this.stream(async (readable) => {\n // oboe(readable)\n // .node(\"![*]\", this.safeOboe(readable, reject, (row) => {\n // rows++\n // onRow(row)\n // }))\n // .done(() => {\n // winston.info(`[streamJson] oboe reports done`, {...this.logInfo, rows})\n // })\n // }).then(() => {\n // winston.info(`[streamJson] complete`, {...this.logInfo, rows})\n // resolve()\n // }).catch((error) => {\n // // This error should not be logged as it could come from an action\n // // which might decide to include user information in the error message\n // winston.info(`[streamJson] reported an error`, {...this.logInfo, rows})\n // reject(error)\n // })\n // })\n // }\n //\n // /**\n // * A streaming helper for the \"json_detail\" data format. It handles automatically parsing\n // * the JSON in a streaming fashion. You can implement an `onFields` callback to get\n // * the field metadata, and an `onRow` callback for each row of data.\n // *\n // * ```ts\n // * await request.streamJsonDetail({\n // * onFields: (fields) => {\n // * // This will be called when fields are available\n // * },\n // * onRow: (row) => {\n // * // This will be called for each row of data\n // * },\n // * })\n // * ```\n // *\n // * @returns A promise that will be resolved when streaming is complete.\n // * @param callbacks An object consisting of several callbacks that will be called\n // * when various parts of the data are parsed.\n // */\n // async streamJsonDetail(callbacks: {\n // onRow: (row: JsonDetailRow) => void,\n // onFields?: (fields: Fieldset) => void,\n // onRanAt?: (iso8601string: string) => void,\n // }) {\n // return new Promise<void>((resolve, reject) => {\n // let rows = 0\n // this.stream(async (readable) => {\n // oboe(readable)\n // .node(\"data.*\", this.safeOboe(readable, reject, (row) => {\n // rows++\n // callbacks.onRow(row)\n // }))\n // .node(\"!.fields\", this.safeOboe(readable, reject, (fields) => {\n // if (callbacks.onFields) {\n // callbacks.onFields(fields)\n // }\n // }))\n // .node(\"!.ran_at\", this.safeOboe(readable, reject, (ranAt) => {\n // if (callbacks.onRanAt) {\n // callbacks.onRanAt(ranAt)\n // }\n // }))\n // .done(() => {\n // winston.info(`[streamJsonDetail] oboe reports done`, {...this.logInfo, rows})\n // })\n // }).then(() => {\n // winston.info(`[streamJsonDetail] complete`, {...this.logInfo, rows})\n // resolve()\n // }).catch((error) => {\n // // This error should not be logged as it could come from an action\n // // which might decide to include user information in the error message\n // winston.info(`[streamJsonDetail] reported an error`, {...this.logInfo, rows})\n // reject(error)\n // })\n // })\n // }\n}\n"],"file":"nodeTransport.js"}
|
|
1
|
+
{"version":3,"file":"nodeTransport.js","names":["utf8","asString","value","Buffer","from","toString","Object","JSON","stringify","NodeCryptoHash","secureRandom","byteCount","nodeCrypto","randomBytes","sha256Hash","message","hash","createHash","update","safeBase64","Uint8Array","digest","NodeTransport","BaseTransport","constructor","options","rawRequest","method","path","queryParams","body","authenticator","init","initRequest","req","rp","promise","rawResponse","requestStarted","Date","now","responseCompleted","res","resTyped","url","contentType","String","headers","ok","statusCode","statusMessage","e","StatusCodeError","error","observer","parseResponse","mode","responseMode","response","parse","result","ResponseMode","string","match","err","request","type","requestor","props","toUpperCase","rq","get","put","post","patch","head","stream","callback","PassThrough","returnPromise","streamPromise","Promise","resolve","reject","trace","hasResolved","on","code","socket","setKeepAlive","pipe","results","all","verifySsl","verify_ssl","timeout","defaultTimeout","agentTag","agentPrefix","LookerAppId","requestPath","makeUrl","undefined","encoding","json","rejectUnauthorized","resolveWithFullResponse"],"sources":["../../src/nodeTransport.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport nodeCrypto from 'crypto'\nimport type { Request } from 'request'\nimport rq from 'request'\n\nimport rp from 'request-promise-native'\nimport type { Readable } from 'readable-stream'\nimport { PassThrough } from 'readable-stream'\nimport { StatusCodeError } from 'request-promise-native/errors'\nimport {\n BaseTransport,\n ResponseMode,\n defaultTimeout,\n responseMode,\n trace,\n LookerAppId,\n agentPrefix,\n safeBase64,\n} from '@looker/sdk-rtl'\nimport type {\n Authenticator,\n HttpMethod,\n ISDKError,\n ITransportSettings,\n SDKResponse,\n Values,\n IRequestHeaders,\n IRawResponse,\n ICryptoHash,\n} from '@looker/sdk-rtl'\n\nconst utf8 = 'utf8'\n\nconst asString = (value: any): string => {\n if (value instanceof Buffer) {\n return Buffer.from(value).toString(utf8)\n }\n if (value instanceof Object) {\n return JSON.stringify(value)\n }\n return value.toString()\n}\n\nexport class NodeCryptoHash implements ICryptoHash {\n secureRandom(byteCount: number): string {\n // TODO update this to Node 18\n return nodeCrypto.randomBytes(byteCount).toString('hex')\n }\n\n async sha256Hash(message: string): Promise<string> {\n const hash = nodeCrypto.createHash('sha256')\n hash.update(message)\n return safeBase64(new Uint8Array(hash.digest()))\n }\n}\n\nexport type RequestOptions = rq.RequiredUriUrl &\n rp.RequestPromiseOptions &\n rq.OptionsWithUrl\n\nexport class NodeTransport extends BaseTransport {\n constructor(protected readonly options: ITransportSettings) {\n super(options)\n }\n\n async rawRequest(\n method: HttpMethod,\n path: string,\n queryParams?: Values,\n body?: any,\n authenticator?: Authenticator,\n options?: Partial<ITransportSettings>\n ): Promise<IRawResponse> {\n const init: RequestOptions = await this.initRequest(\n method,\n path,\n queryParams,\n body,\n authenticator,\n options\n )\n const req = rp(init).promise()\n let rawResponse: IRawResponse\n\n const requestStarted = Date.now()\n let responseCompleted\n try {\n const res = await req\n responseCompleted = Date.now()\n const resTyped = res as rq.Response\n rawResponse = {\n method,\n url: resTyped.url || init.url.toString() || '',\n body: await resTyped.body,\n contentType: String(resTyped.headers['content-type']),\n ok: true,\n statusCode: resTyped.statusCode,\n statusMessage: resTyped.statusMessage,\n headers: res.headers,\n requestStarted,\n responseCompleted,\n }\n // Update OK with response statusCode check\n rawResponse.ok = this.ok(rawResponse)\n } catch (e: any) {\n let statusMessage = `${method} ${path}`\n let statusCode = 404\n let contentType = 'text'\n let body\n responseCompleted = Date.now()\n if (e instanceof StatusCodeError) {\n statusCode = e.statusCode\n if (e.error instanceof Buffer) {\n body = asString(e.error)\n statusMessage += `: ${statusCode}`\n } else if (e.error instanceof Object) {\n // Capture error object as body\n body = e.error\n statusMessage += `: ${e.message}`\n // Clarify the error message\n body.message = statusMessage\n contentType = 'application/json'\n }\n } else if (e.error instanceof Buffer) {\n body = asString(e.error)\n } else {\n body = JSON.stringify(e)\n contentType = 'application/json'\n }\n rawResponse = {\n method,\n url: init.url.toString(),\n body,\n contentType,\n ok: false,\n statusCode,\n statusMessage,\n headers: {},\n requestStarted,\n responseCompleted,\n }\n }\n return this.observer ? this.observer(rawResponse) : rawResponse\n }\n\n async parseResponse<TSuccess, TError>(res: IRawResponse) {\n const mode = responseMode(res.contentType)\n let response: SDKResponse<TSuccess, TError>\n let error\n if (!res.ok) {\n // Raw request had an error. Make sure it's a string before parsing the result\n error = res.body\n if (typeof error === 'string') {\n try {\n error = JSON.parse(error)\n } catch {\n error = { message: `Request failed: ${error}` }\n }\n }\n response = { ok: false, error }\n return response\n }\n let result = await res.body\n if (mode === ResponseMode.string) {\n if (res.contentType.match(/^application\\/.*\\bjson\\b/g)) {\n try {\n if (result instanceof Buffer) {\n result = Buffer.from(result).toString(utf8)\n }\n if (!(result instanceof Object)) {\n result = JSON.parse(result.toString())\n }\n } catch (err) {\n error = err\n }\n } else if (!error) {\n // Convert to string otherwise\n result = asString(result)\n }\n } else {\n try {\n result = Buffer.from(result ?? '').toString('binary')\n } catch (err) {\n error = err\n }\n }\n if (!error) {\n response = { ok: true, value: result }\n } else {\n response = { ok: false, error: error as TError }\n }\n return response\n }\n\n async request<TSuccess, TError>(\n method: HttpMethod,\n path: string,\n queryParams?: Values,\n body?: any,\n authenticator?: Authenticator,\n options?: Partial<ITransportSettings>\n ): Promise<SDKResponse<TSuccess, TError>> {\n try {\n const res = await this.rawRequest(\n method,\n path,\n queryParams,\n body,\n authenticator,\n options\n )\n return await this.parseResponse<TSuccess, TError>(res)\n } catch (e: any) {\n const error: ISDKError = {\n message:\n typeof e.message === 'string'\n ? e.message\n : `The SDK call was not successful. The error was '${e}'.`,\n type: 'sdk_error',\n }\n return { error, ok: false }\n }\n }\n\n /**\n * Http method dispatcher from general-purpose request properties\n * @param props\n * @returns {request.Request}\n */\n protected requestor(props: RequestOptions): Request {\n const method = props.method?.toString().toUpperCase() as HttpMethod\n switch (method) {\n case 'GET':\n return rq.get(props)\n case 'PUT':\n return rq.put(props)\n case 'POST':\n return rq.post(props)\n case 'PATCH':\n return rq.patch(props)\n case 'DELETE':\n return rq.put(props)\n case 'HEAD':\n return rq.head(props)\n default:\n return rq.get(props)\n }\n }\n\n async stream<TSuccess>(\n callback: (readable: Readable) => Promise<TSuccess>,\n method: HttpMethod,\n path: string,\n queryParams?: Values,\n body?: any,\n authenticator?: Authenticator,\n options?: Partial<ITransportSettings>\n ): Promise<TSuccess> {\n const stream = new PassThrough()\n const returnPromise = callback(stream)\n const init = await this.initRequest(\n method,\n path,\n queryParams,\n body,\n authenticator,\n options\n )\n\n const streamPromise = new Promise<void>((resolve, reject) => {\n trace(`[stream] beginning stream via download url`, init)\n let hasResolved = false\n const req = this.requestor(init)\n\n req\n .on('error', (err) => {\n if (hasResolved && (err as any).code === 'ECONNRESET') {\n trace(\n 'ignoring ECONNRESET that occurred after streaming finished',\n init\n )\n } else {\n trace('streaming error', err)\n reject(err)\n }\n })\n .on('finish', () => {\n trace(`[stream] streaming via download url finished`, init)\n })\n .on('socket', (socket) => {\n trace(`[stream] setting keepalive on socket`, init)\n socket.setKeepAlive(true)\n })\n .on('abort', () => {\n trace(`[stream] streaming via download url aborted`, init)\n })\n .on('response', () => {\n trace(`[stream] got response from download url`, init)\n })\n .on('close', () => {\n trace(`[stream] request stream closed`, init)\n })\n .pipe(stream)\n .on('error', (err) => {\n trace(`[stream] PassThrough stream error`, err)\n reject(err)\n })\n .on('finish', () => {\n trace(`[stream] PassThrough stream finished`, init)\n resolve()\n hasResolved = true\n })\n .on('close', () => {\n trace(`[stream] PassThrough stream closed`, init)\n })\n })\n\n const results = await Promise.all([returnPromise, streamPromise])\n return results[0]\n }\n\n /**\n * should the request verify SSL?\n * @param {Partial<ITransportSettings>} options Defaults to the instance options values\n * @returns {boolean} true if the request should require full SSL verification\n */\n verifySsl(options?: Partial<ITransportSettings>) {\n if (!options) options = this.options\n return 'verify_ssl' in options ? options.verify_ssl : true\n }\n\n /**\n * Request timeout in seconds\n * @param {Partial<ITransportSettings>} options Defaults to the instance options values\n * @returns {number | undefined}\n */\n timeout(options?: Partial<ITransportSettings>): number {\n if (!options) options = this.options\n if ('timeout' in options && options.timeout) return options.timeout\n return defaultTimeout\n }\n\n private async initRequest(\n method: HttpMethod,\n path: string,\n queryParams?: any,\n body?: any,\n authenticator?: Authenticator,\n options?: Partial<ITransportSettings>\n ) {\n options = options ? { ...this.options, ...options } : this.options\n if (!options.agentTag) {\n options.agentTag = agentPrefix\n }\n const headers: IRequestHeaders = {\n [LookerAppId]: options.agentTag,\n ...options.headers,\n }\n\n const requestPath = this.makeUrl(path, options, queryParams)\n let init: RequestOptions = {\n body: body || undefined,\n encoding: null,\n headers: headers,\n json: body && typeof body !== 'string',\n // null = requests are returned as binary so `Content-Type` dictates response format\n method,\n\n rejectUnauthorized: this.verifySsl(options),\n\n // If body is a string, pass as is\n resolveWithFullResponse: true,\n\n timeout: this.timeout(options) * 1000,\n url: requestPath,\n }\n if ('encoding' in options) init.encoding = options.encoding\n\n if (authenticator) {\n // Automatic authentication process for the request\n init = await authenticator(init)\n }\n return init\n }\n\n // /**\n // * A streaming helper for the \"json\" data format. It handles automatically parsing\n // * the JSON in a streaming fashion. You just need to implement a function that will\n // * be called for each row.\n // *\n // * ```ts\n // * await request.streamJson((row) => {\n // * // This will be called for each row of data\n // * })\n // * ```\n // *\n // * @returns A promise that will be resolved when streaming is complete.\n // * @param onRow A function that will be called for each streamed row, with the row as the first argument.\n // */\n // async streamJson(onRow: (row: { [fieldName: string]: any }) => void) {\n // return new Promise<void>((resolve, reject) => {\n // let rows = 0\n // this.stream(async (readable) => {\n // oboe(readable)\n // .node(\"![*]\", this.safeOboe(readable, reject, (row) => {\n // rows++\n // onRow(row)\n // }))\n // .done(() => {\n // winston.info(`[streamJson] oboe reports done`, {...this.logInfo, rows})\n // })\n // }).then(() => {\n // winston.info(`[streamJson] complete`, {...this.logInfo, rows})\n // resolve()\n // }).catch((error) => {\n // // This error should not be logged as it could come from an action\n // // which might decide to include user information in the error message\n // winston.info(`[streamJson] reported an error`, {...this.logInfo, rows})\n // reject(error)\n // })\n // })\n // }\n //\n // /**\n // * A streaming helper for the \"json_detail\" data format. It handles automatically parsing\n // * the JSON in a streaming fashion. You can implement an `onFields` callback to get\n // * the field metadata, and an `onRow` callback for each row of data.\n // *\n // * ```ts\n // * await request.streamJsonDetail({\n // * onFields: (fields) => {\n // * // This will be called when fields are available\n // * },\n // * onRow: (row) => {\n // * // This will be called for each row of data\n // * },\n // * })\n // * ```\n // *\n // * @returns A promise that will be resolved when streaming is complete.\n // * @param callbacks An object consisting of several callbacks that will be called\n // * when various parts of the data are parsed.\n // */\n // async streamJsonDetail(callbacks: {\n // onRow: (row: JsonDetailRow) => void,\n // onFields?: (fields: Fieldset) => void,\n // onRanAt?: (iso8601string: string) => void,\n // }) {\n // return new Promise<void>((resolve, reject) => {\n // let rows = 0\n // this.stream(async (readable) => {\n // oboe(readable)\n // .node(\"data.*\", this.safeOboe(readable, reject, (row) => {\n // rows++\n // callbacks.onRow(row)\n // }))\n // .node(\"!.fields\", this.safeOboe(readable, reject, (fields) => {\n // if (callbacks.onFields) {\n // callbacks.onFields(fields)\n // }\n // }))\n // .node(\"!.ran_at\", this.safeOboe(readable, reject, (ranAt) => {\n // if (callbacks.onRanAt) {\n // callbacks.onRanAt(ranAt)\n // }\n // }))\n // .done(() => {\n // winston.info(`[streamJsonDetail] oboe reports done`, {...this.logInfo, rows})\n // })\n // }).then(() => {\n // winston.info(`[streamJsonDetail] complete`, {...this.logInfo, rows})\n // resolve()\n // }).catch((error) => {\n // // This error should not be logged as it could come from an action\n // // which might decide to include user information in the error message\n // winston.info(`[streamJsonDetail] reported an error`, {...this.logInfo, rows})\n // reject(error)\n // })\n // })\n // }\n}\n"],"mappings":";;;;;;AA0BA;AAEA;AAEA;AAEA;AACA;AACA;AASwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaxB,IAAMA,IAAI,GAAG,MAAM;AAEnB,IAAMC,QAAQ,GAAIC,KAAU,IAAa;EACvC,IAAIA,KAAK,YAAYC,MAAM,EAAE;IAC3B,OAAOA,MAAM,CAACC,IAAI,CAACF,KAAK,CAAC,CAACG,QAAQ,CAACL,IAAI,CAAC;EAC1C;EACA,IAAIE,KAAK,YAAYI,MAAM,EAAE;IAC3B,OAAOC,IAAI,CAACC,SAAS,CAACN,KAAK,CAAC;EAC9B;EACA,OAAOA,KAAK,CAACG,QAAQ,EAAE;AACzB,CAAC;AAEM,MAAMI,cAAc,CAAwB;EACjDC,YAAY,CAACC,SAAiB,EAAU;IAEtC,OAAOC,eAAU,CAACC,WAAW,CAACF,SAAS,CAAC,CAACN,QAAQ,CAAC,KAAK,CAAC;EAC1D;EAEMS,UAAU,CAACC,OAAe,EAAmB;IAAA;MACjD,IAAMC,IAAI,GAAGJ,eAAU,CAACK,UAAU,CAAC,QAAQ,CAAC;MAC5CD,IAAI,CAACE,MAAM,CAACH,OAAO,CAAC;MACpB,OAAO,IAAAI,kBAAU,EAAC,IAAIC,UAAU,CAACJ,IAAI,CAACK,MAAM,EAAE,CAAC,CAAC;IAAA;EAClD;AACF;AAAC;AAMM,MAAMC,aAAa,SAASC,qBAAa,CAAC;EAC/CC,WAAW,CAAoBC,OAA2B,EAAE;IAC1D,KAAK,CAACA,OAAO,CAAC;IAAA,KADeA,OAA2B,GAA3BA,OAA2B;EAE1D;EAEMC,UAAU,CACdC,MAAkB,EAClBC,IAAY,EACZC,WAAoB,EACpBC,IAAU,EACVC,aAA6B,EAC7BN,OAAqC,EACd;IAAA;IAAA;MACvB,IAAMO,IAAoB,SAAS,KAAI,CAACC,WAAW,CACjDN,MAAM,EACNC,IAAI,EACJC,WAAW,EACXC,IAAI,EACJC,aAAa,EACbN,OAAO,CACR;MACD,IAAMS,GAAG,GAAG,IAAAC,6BAAE,EAACH,IAAI,CAAC,CAACI,OAAO,EAAE;MAC9B,IAAIC,WAAyB;MAE7B,IAAMC,cAAc,GAAGC,IAAI,CAACC,GAAG,EAAE;MACjC,IAAIC,iBAAiB;MACrB,IAAI;QACF,IAAMC,GAAG,SAASR,GAAG;QACrBO,iBAAiB,GAAGF,IAAI,CAACC,GAAG,EAAE;QAC9B,IAAMG,QAAQ,GAAGD,GAAkB;QACnCL,WAAW,GAAG;UACZV,MAAM;UACNiB,GAAG,EAAED,QAAQ,CAACC,GAAG,IAAIZ,IAAI,CAACY,GAAG,CAACvC,QAAQ,EAAE,IAAI,EAAE;UAC9CyB,IAAI,QAAQa,QAAQ,CAACb,IAAI;UACzBe,WAAW,EAAEC,MAAM,CAACH,QAAQ,CAACI,OAAO,CAAC,cAAc,CAAC,CAAC;UACrDC,EAAE,EAAE,IAAI;UACRC,UAAU,EAAEN,QAAQ,CAACM,UAAU;UAC/BC,aAAa,EAAEP,QAAQ,CAACO,aAAa;UACrCH,OAAO,EAAEL,GAAG,CAACK,OAAO;UACpBT,cAAc;UACdG;QACF,CAAC;QAEDJ,WAAW,CAACW,EAAE,GAAG,KAAI,CAACA,EAAE,CAACX,WAAW,CAAC;MACvC,CAAC,CAAC,OAAOc,CAAM,EAAE;QACf,IAAID,aAAa,aAAMvB,MAAM,cAAIC,IAAI,CAAE;QACvC,IAAIqB,UAAU,GAAG,GAAG;QACpB,IAAIJ,WAAW,GAAG,MAAM;QACxB,IAAIf,KAAI;QACRW,iBAAiB,GAAGF,IAAI,CAACC,GAAG,EAAE;QAC9B,IAAIW,CAAC,YAAYC,uBAAe,EAAE;UAChCH,UAAU,GAAGE,CAAC,CAACF,UAAU;UACzB,IAAIE,CAAC,CAACE,KAAK,YAAYlD,MAAM,EAAE;YAC7B2B,KAAI,GAAG7B,QAAQ,CAACkD,CAAC,CAACE,KAAK,CAAC;YACxBH,aAAa,gBAASD,UAAU,CAAE;UACpC,CAAC,MAAM,IAAIE,CAAC,CAACE,KAAK,YAAY/C,MAAM,EAAE;YAEpCwB,KAAI,GAAGqB,CAAC,CAACE,KAAK;YACdH,aAAa,gBAASC,CAAC,CAACpC,OAAO,CAAE;YAEjCe,KAAI,CAACf,OAAO,GAAGmC,aAAa;YAC5BL,WAAW,GAAG,kBAAkB;UAClC;QACF,CAAC,MAAM,IAAIM,CAAC,CAACE,KAAK,YAAYlD,MAAM,EAAE;UACpC2B,KAAI,GAAG7B,QAAQ,CAACkD,CAAC,CAACE,KAAK,CAAC;QAC1B,CAAC,MAAM;UACLvB,KAAI,GAAGvB,IAAI,CAACC,SAAS,CAAC2C,CAAC,CAAC;UACxBN,WAAW,GAAG,kBAAkB;QAClC;QACAR,WAAW,GAAG;UACZV,MAAM;UACNiB,GAAG,EAAEZ,IAAI,CAACY,GAAG,CAACvC,QAAQ,EAAE;UACxByB,IAAI,EAAJA,KAAI;UACJe,WAAW;UACXG,EAAE,EAAE,KAAK;UACTC,UAAU;UACVC,aAAa;UACbH,OAAO,EAAE,CAAC,CAAC;UACXT,cAAc;UACdG;QACF,CAAC;MACH;MACA,OAAO,KAAI,CAACa,QAAQ,GAAG,KAAI,CAACA,QAAQ,CAACjB,WAAW,CAAC,GAAGA,WAAW;IAAA;EACjE;EAEMkB,aAAa,CAAmBb,GAAiB,EAAE;IAAA;MACvD,IAAMc,IAAI,GAAG,IAAAC,oBAAY,EAACf,GAAG,CAACG,WAAW,CAAC;MAC1C,IAAIa,QAAuC;MAC3C,IAAIL,KAAK;MACT,IAAI,CAACX,GAAG,CAACM,EAAE,EAAE;QAEXK,KAAK,GAAGX,GAAG,CAACZ,IAAI;QAChB,IAAI,OAAOuB,KAAK,KAAK,QAAQ,EAAE;UAC7B,IAAI;YACFA,KAAK,GAAG9C,IAAI,CAACoD,KAAK,CAACN,KAAK,CAAC;UAC3B,CAAC,CAAC,gBAAM;YACNA,KAAK,GAAG;cAAEtC,OAAO,4BAAqBsC,KAAK;YAAG,CAAC;UACjD;QACF;QACAK,QAAQ,GAAG;UAAEV,EAAE,EAAE,KAAK;UAAEK;QAAM,CAAC;QAC/B,OAAOK,QAAQ;MACjB;MACA,IAAIE,MAAM,SAASlB,GAAG,CAACZ,IAAI;MAC3B,IAAI0B,IAAI,KAAKK,oBAAY,CAACC,MAAM,EAAE;QAChC,IAAIpB,GAAG,CAACG,WAAW,CAACkB,KAAK,CAAC,2BAA2B,CAAC,EAAE;UACtD,IAAI;YACF,IAAIH,MAAM,YAAYzD,MAAM,EAAE;cAC5ByD,MAAM,GAAGzD,MAAM,CAACC,IAAI,CAACwD,MAAM,CAAC,CAACvD,QAAQ,CAACL,IAAI,CAAC;YAC7C;YACA,IAAI,EAAE4D,MAAM,YAAYtD,MAAM,CAAC,EAAE;cAC/BsD,MAAM,GAAGrD,IAAI,CAACoD,KAAK,CAACC,MAAM,CAACvD,QAAQ,EAAE,CAAC;YACxC;UACF,CAAC,CAAC,OAAO2D,GAAG,EAAE;YACZX,KAAK,GAAGW,GAAG;UACb;QACF,CAAC,MAAM,IAAI,CAACX,KAAK,EAAE;UAEjBO,MAAM,GAAG3D,QAAQ,CAAC2D,MAAM,CAAC;QAC3B;MACF,CAAC,MAAM;QACL,IAAI;UAAA;UACFA,MAAM,GAAGzD,MAAM,CAACC,IAAI,YAACwD,MAAM,6CAAI,EAAE,CAAC,CAACvD,QAAQ,CAAC,QAAQ,CAAC;QACvD,CAAC,CAAC,OAAO2D,GAAG,EAAE;UACZX,KAAK,GAAGW,GAAG;QACb;MACF;MACA,IAAI,CAACX,KAAK,EAAE;QACVK,QAAQ,GAAG;UAAEV,EAAE,EAAE,IAAI;UAAE9C,KAAK,EAAE0D;QAAO,CAAC;MACxC,CAAC,MAAM;QACLF,QAAQ,GAAG;UAAEV,EAAE,EAAE,KAAK;UAAEK,KAAK,EAAEA;QAAgB,CAAC;MAClD;MACA,OAAOK,QAAQ;IAAA;EACjB;EAEMO,OAAO,CACXtC,MAAkB,EAClBC,IAAY,EACZC,WAAoB,EACpBC,IAAU,EACVC,aAA6B,EAC7BN,OAAqC,EACG;IAAA;IAAA;MACxC,IAAI;QACF,IAAMiB,GAAG,SAAS,MAAI,CAAChB,UAAU,CAC/BC,MAAM,EACNC,IAAI,EACJC,WAAW,EACXC,IAAI,EACJC,aAAa,EACbN,OAAO,CACR;QACD,aAAa,MAAI,CAAC8B,aAAa,CAAmBb,GAAG,CAAC;MACxD,CAAC,CAAC,OAAOS,CAAM,EAAE;QACf,IAAME,KAAgB,GAAG;UACvBtC,OAAO,EACL,OAAOoC,CAAC,CAACpC,OAAO,KAAK,QAAQ,GACzBoC,CAAC,CAACpC,OAAO,6DAC0CoC,CAAC,OAAI;UAC9De,IAAI,EAAE;QACR,CAAC;QACD,OAAO;UAAEb,KAAK;UAAEL,EAAE,EAAE;QAAM,CAAC;MAC7B;IAAC;EACH;EAOUmB,SAAS,CAACC,KAAqB,EAAW;IAAA;IAClD,IAAMzC,MAAM,oBAAGyC,KAAK,CAACzC,MAAM,kDAAZ,cAActB,QAAQ,EAAE,CAACgE,WAAW,EAAgB;IACnE,QAAQ1C,MAAM;MACZ,KAAK,KAAK;QACR,OAAO2C,gBAAE,CAACC,GAAG,CAACH,KAAK,CAAC;MACtB,KAAK,KAAK;QACR,OAAOE,gBAAE,CAACE,GAAG,CAACJ,KAAK,CAAC;MACtB,KAAK,MAAM;QACT,OAAOE,gBAAE,CAACG,IAAI,CAACL,KAAK,CAAC;MACvB,KAAK,OAAO;QACV,OAAOE,gBAAE,CAACI,KAAK,CAACN,KAAK,CAAC;MACxB,KAAK,QAAQ;QACX,OAAOE,gBAAE,CAACE,GAAG,CAACJ,KAAK,CAAC;MACtB,KAAK,MAAM;QACT,OAAOE,gBAAE,CAACK,IAAI,CAACP,KAAK,CAAC;MACvB;QACE,OAAOE,gBAAE,CAACC,GAAG,CAACH,KAAK,CAAC;IAAA;EAE1B;EAEMQ,MAAM,CACVC,QAAmD,EACnDlD,MAAkB,EAClBC,IAAY,EACZC,WAAoB,EACpBC,IAAU,EACVC,aAA6B,EAC7BN,OAAqC,EAClB;IAAA;IAAA;MACnB,IAAMmD,MAAM,GAAG,IAAIE,2BAAW,EAAE;MAChC,IAAMC,aAAa,GAAGF,QAAQ,CAACD,MAAM,CAAC;MACtC,IAAM5C,IAAI,SAAS,MAAI,CAACC,WAAW,CACjCN,MAAM,EACNC,IAAI,EACJC,WAAW,EACXC,IAAI,EACJC,aAAa,EACbN,OAAO,CACR;MAED,IAAMuD,aAAa,GAAG,IAAIC,OAAO,CAAO,CAACC,OAAO,EAAEC,MAAM,KAAK;QAC3D,IAAAC,aAAK,gDAA+CpD,IAAI,CAAC;QACzD,IAAIqD,WAAW,GAAG,KAAK;QACvB,IAAMnD,GAAG,GAAG,MAAI,CAACiC,SAAS,CAACnC,IAAI,CAAC;QAEhCE,GAAG,CACAoD,EAAE,CAAC,OAAO,EAAGtB,GAAG,IAAK;UACpB,IAAIqB,WAAW,IAAKrB,GAAG,CAASuB,IAAI,KAAK,YAAY,EAAE;YACrD,IAAAH,aAAK,EACH,4DAA4D,EAC5DpD,IAAI,CACL;UACH,CAAC,MAAM;YACL,IAAAoD,aAAK,EAAC,iBAAiB,EAAEpB,GAAG,CAAC;YAC7BmB,MAAM,CAACnB,GAAG,CAAC;UACb;QACF,CAAC,CAAC,CACDsB,EAAE,CAAC,QAAQ,EAAE,MAAM;UAClB,IAAAF,aAAK,kDAAiDpD,IAAI,CAAC;QAC7D,CAAC,CAAC,CACDsD,EAAE,CAAC,QAAQ,EAAGE,MAAM,IAAK;UACxB,IAAAJ,aAAK,0CAAyCpD,IAAI,CAAC;UACnDwD,MAAM,CAACC,YAAY,CAAC,IAAI,CAAC;QAC3B,CAAC,CAAC,CACDH,EAAE,CAAC,OAAO,EAAE,MAAM;UACjB,IAAAF,aAAK,iDAAgDpD,IAAI,CAAC;QAC5D,CAAC,CAAC,CACDsD,EAAE,CAAC,UAAU,EAAE,MAAM;UACpB,IAAAF,aAAK,6CAA4CpD,IAAI,CAAC;QACxD,CAAC,CAAC,CACDsD,EAAE,CAAC,OAAO,EAAE,MAAM;UACjB,IAAAF,aAAK,oCAAmCpD,IAAI,CAAC;QAC/C,CAAC,CAAC,CACD0D,IAAI,CAACd,MAAM,CAAC,CACZU,EAAE,CAAC,OAAO,EAAGtB,GAAG,IAAK;UACpB,IAAAoB,aAAK,uCAAsCpB,GAAG,CAAC;UAC/CmB,MAAM,CAACnB,GAAG,CAAC;QACb,CAAC,CAAC,CACDsB,EAAE,CAAC,QAAQ,EAAE,MAAM;UAClB,IAAAF,aAAK,0CAAyCpD,IAAI,CAAC;UACnDkD,OAAO,EAAE;UACTG,WAAW,GAAG,IAAI;QACpB,CAAC,CAAC,CACDC,EAAE,CAAC,OAAO,EAAE,MAAM;UACjB,IAAAF,aAAK,wCAAuCpD,IAAI,CAAC;QACnD,CAAC,CAAC;MACN,CAAC,CAAC;MAEF,IAAM2D,OAAO,SAASV,OAAO,CAACW,GAAG,CAAC,CAACb,aAAa,EAAEC,aAAa,CAAC,CAAC;MACjE,OAAOW,OAAO,CAAC,CAAC,CAAC;IAAA;EACnB;EAOAE,SAAS,CAACpE,OAAqC,EAAE;IAC/C,IAAI,CAACA,OAAO,EAAEA,OAAO,GAAG,IAAI,CAACA,OAAO;IACpC,OAAO,YAAY,IAAIA,OAAO,GAAGA,OAAO,CAACqE,UAAU,GAAG,IAAI;EAC5D;EAOAC,OAAO,CAACtE,OAAqC,EAAU;IACrD,IAAI,CAACA,OAAO,EAAEA,OAAO,GAAG,IAAI,CAACA,OAAO;IACpC,IAAI,SAAS,IAAIA,OAAO,IAAIA,OAAO,CAACsE,OAAO,EAAE,OAAOtE,OAAO,CAACsE,OAAO;IACnE,OAAOC,sBAAc;EACvB;EAEc/D,WAAW,CACvBN,MAAkB,EAClBC,IAAY,EACZC,WAAiB,EACjBC,IAAU,EACVC,aAA6B,EAC7BN,OAAqC,EACrC;IAAA;IAAA;MACAA,OAAO,GAAGA,OAAO,mCAAQ,MAAI,CAACA,OAAO,GAAKA,OAAO,IAAK,MAAI,CAACA,OAAO;MAClE,IAAI,CAACA,OAAO,CAACwE,QAAQ,EAAE;QACrBxE,OAAO,CAACwE,QAAQ,GAAGC,mBAAW;MAChC;MACA,IAAMnD,OAAwB;QAC5B,CAACoD,mBAAW,GAAG1E,OAAO,CAACwE;MAAQ,GAC5BxE,OAAO,CAACsB,OAAO,CACnB;MAED,IAAMqD,WAAW,GAAG,MAAI,CAACC,OAAO,CAACzE,IAAI,EAAEH,OAAO,EAAEI,WAAW,CAAC;MAC5D,IAAIG,IAAoB,GAAG;QACzBF,IAAI,EAAEA,IAAI,IAAIwE,SAAS;QACvBC,QAAQ,EAAE,IAAI;QACdxD,OAAO,EAAEA,OAAO;QAChByD,IAAI,EAAE1E,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ;QAEtCH,MAAM;QAEN8E,kBAAkB,EAAE,MAAI,CAACZ,SAAS,CAACpE,OAAO,CAAC;QAG3CiF,uBAAuB,EAAE,IAAI;QAE7BX,OAAO,EAAE,MAAI,CAACA,OAAO,CAACtE,OAAO,CAAC,GAAG,IAAI;QACrCmB,GAAG,EAAEwD;MACP,CAAC;MACD,IAAI,UAAU,IAAI3E,OAAO,EAAEO,IAAI,CAACuE,QAAQ,GAAG9E,OAAO,CAAC8E,QAAQ;MAE3D,IAAIxE,aAAa,EAAE;QAEjBC,IAAI,SAASD,aAAa,CAACC,IAAI,CAAC;MAClC;MACA,OAAOA,IAAI;IAAA;EACb;AAiGF;AAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _testUtils = require("./testUtils");
|
|
7
|
+
Object.keys(_testUtils).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _testUtils[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function get() {
|
|
13
|
+
return _testUtils[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/testUtils/index.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nexport * from './testUtils'\n"],"mappings":";;;;;AA0BA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.rootFile = exports.getRootPath = exports.TestConfig = void 0;
|
|
7
|
+
var fs = _interopRequireWildcard(require("fs"));
|
|
8
|
+
var _path = _interopRequireDefault(require("path"));
|
|
9
|
+
var _dotenv = require("dotenv");
|
|
10
|
+
var _nodeSettings = require("../nodeSettings");
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
14
|
+
var utf8 = 'utf-8';
|
|
15
|
+
var homeToRoost = '../../../../';
|
|
16
|
+
var getRootPath = () => _path.default.join(__dirname, homeToRoost);
|
|
17
|
+
exports.getRootPath = getRootPath;
|
|
18
|
+
var rootFile = function rootFile() {
|
|
19
|
+
var fileName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
20
|
+
return _path.default.join(getRootPath(), fileName);
|
|
21
|
+
};
|
|
22
|
+
exports.rootFile = rootFile;
|
|
23
|
+
var TestConfig = function TestConfig() {
|
|
24
|
+
var rootPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
25
|
+
(0, _dotenv.config)();
|
|
26
|
+
var testFile = 'data.yml.json';
|
|
27
|
+
var envPrefix = 'LOOKERSDK';
|
|
28
|
+
var sectionName = 'Looker';
|
|
29
|
+
rootPath = rootPath || getRootPath();
|
|
30
|
+
var localIni = process.env.LOOKERSDK_INI || rootFile('looker.ini');
|
|
31
|
+
var testPath = rootFile('test/');
|
|
32
|
+
var dataFile = "".concat(testPath).concat(testFile);
|
|
33
|
+
var testData = JSON.parse(fs.readFileSync(dataFile, utf8));
|
|
34
|
+
var testIni = "".concat(rootPath).concat(testData.iniFile);
|
|
35
|
+
var section = (0, _nodeSettings.readIniConfig)(localIni, envPrefix, sectionName);
|
|
36
|
+
var baseUrl = section.base_url;
|
|
37
|
+
var timeout = parseInt(section.timeout, 10);
|
|
38
|
+
var testSection = (0, _nodeSettings.readIniConfig)(localIni, envPrefix, sectionName);
|
|
39
|
+
if (!fs.existsSync(localIni)) localIni = '';
|
|
40
|
+
if (!fs.existsSync(testIni)) testIni = '';
|
|
41
|
+
return {
|
|
42
|
+
baseUrl,
|
|
43
|
+
dataFile,
|
|
44
|
+
localIni,
|
|
45
|
+
rootPath,
|
|
46
|
+
section,
|
|
47
|
+
testData,
|
|
48
|
+
testIni,
|
|
49
|
+
testPath,
|
|
50
|
+
testSection,
|
|
51
|
+
timeout
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
exports.TestConfig = TestConfig;
|
|
55
|
+
//# sourceMappingURL=testUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testUtils.js","names":["utf8","homeToRoost","getRootPath","path","join","__dirname","rootFile","fileName","TestConfig","rootPath","config","testFile","envPrefix","sectionName","localIni","process","env","LOOKERSDK_INI","testPath","dataFile","testData","JSON","parse","fs","readFileSync","testIni","iniFile","section","readIniConfig","baseUrl","base_url","timeout","parseInt","testSection","existsSync"],"sources":["../../../src/testUtils/testUtils.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport * as fs from 'fs'\nimport path from 'path'\nimport { config } from 'dotenv'\nimport { readIniConfig } from '../nodeSettings'\n\ninterface IKeyAny {\n [key: string]: any\n}\n\nconst utf8 = 'utf-8'\n\n/**\n * Properties used for various typescript-based tests\n */\nexport interface ITestConfig {\n rootPath: string\n testPath: string\n dataFile: string\n localIni: string\n baseUrl: string\n timeout: number\n testData: any\n testIni: string\n section: IKeyAny\n testSection: IKeyAny\n}\n\nconst homeToRoost = '../../../../'\n\nexport const getRootPath = () => path.join(__dirname, homeToRoost)\nexport const rootFile = (fileName = '') => path.join(getRootPath(), fileName)\n\n/**\n * Reads configuration information, returning various test values\n * @param {string} rootPath\n * @returns {{testConfig: {[p: string]: any}; localIni: string; baseUrl: any; testData: any; apiVersion: any; testIni: string; configContents: string; rootPath: string; testSection: any; timeout: number}}\n * @constructor\n */\nexport const TestConfig = (rootPath = ''): ITestConfig => {\n config()\n const testFile = 'data.yml.json'\n const envPrefix = 'LOOKERSDK'\n const sectionName = 'Looker'\n rootPath = rootPath || getRootPath()\n let localIni = process.env.LOOKERSDK_INI || rootFile('looker.ini')\n const testPath = rootFile('test/')\n const dataFile = `${testPath}${testFile}`\n const testData = JSON.parse(fs.readFileSync(dataFile, utf8))\n let testIni = `${rootPath}${testData.iniFile}`\n const section = readIniConfig(localIni, envPrefix, sectionName)\n const baseUrl = section.base_url\n const timeout = parseInt(section.timeout, 10)\n const testSection = readIniConfig(localIni, envPrefix, sectionName)\n\n // If .ini files don't exist, don't try to read them downstream and expect environment variables to be set\n if (!fs.existsSync(localIni)) localIni = ''\n if (!fs.existsSync(testIni)) testIni = ''\n\n return {\n baseUrl,\n dataFile,\n localIni,\n rootPath,\n section,\n testData,\n testIni,\n testPath,\n testSection,\n timeout,\n }\n}\n"],"mappings":";;;;;;AA0BA;AACA;AACA;AACA;AAA+C;AAAA;AAAA;AAM/C,IAAMA,IAAI,GAAG,OAAO;AAkBpB,IAAMC,WAAW,GAAG,cAAc;AAE3B,IAAMC,WAAW,GAAG,MAAMC,aAAI,CAACC,IAAI,CAACC,SAAS,EAAEJ,WAAW,CAAC;AAAA;AAC3D,IAAMK,QAAQ,GAAG,SAAXA,QAAQ;EAAA,IAAIC,QAAQ,uEAAG,EAAE;EAAA,OAAKJ,aAAI,CAACC,IAAI,CAACF,WAAW,EAAE,EAAEK,QAAQ,CAAC;AAAA;AAAA;AAQtE,IAAMC,UAAU,GAAG,SAAbA,UAAU,GAAmC;EAAA,IAA/BC,QAAQ,uEAAG,EAAE;EACtC,IAAAC,cAAM,GAAE;EACR,IAAMC,QAAQ,GAAG,eAAe;EAChC,IAAMC,SAAS,GAAG,WAAW;EAC7B,IAAMC,WAAW,GAAG,QAAQ;EAC5BJ,QAAQ,GAAGA,QAAQ,IAAIP,WAAW,EAAE;EACpC,IAAIY,QAAQ,GAAGC,OAAO,CAACC,GAAG,CAACC,aAAa,IAAIX,QAAQ,CAAC,YAAY,CAAC;EAClE,IAAMY,QAAQ,GAAGZ,QAAQ,CAAC,OAAO,CAAC;EAClC,IAAMa,QAAQ,aAAMD,QAAQ,SAAGP,QAAQ,CAAE;EACzC,IAAMS,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAACC,EAAE,CAACC,YAAY,CAACL,QAAQ,EAAEnB,IAAI,CAAC,CAAC;EAC5D,IAAIyB,OAAO,aAAMhB,QAAQ,SAAGW,QAAQ,CAACM,OAAO,CAAE;EAC9C,IAAMC,OAAO,GAAG,IAAAC,2BAAa,EAACd,QAAQ,EAAEF,SAAS,EAAEC,WAAW,CAAC;EAC/D,IAAMgB,OAAO,GAAGF,OAAO,CAACG,QAAQ;EAChC,IAAMC,OAAO,GAAGC,QAAQ,CAACL,OAAO,CAACI,OAAO,EAAE,EAAE,CAAC;EAC7C,IAAME,WAAW,GAAG,IAAAL,2BAAa,EAACd,QAAQ,EAAEF,SAAS,EAAEC,WAAW,CAAC;EAGnE,IAAI,CAACU,EAAE,CAACW,UAAU,CAACpB,QAAQ,CAAC,EAAEA,QAAQ,GAAG,EAAE;EAC3C,IAAI,CAACS,EAAE,CAACW,UAAU,CAACT,OAAO,CAAC,EAAEA,OAAO,GAAG,EAAE;EAEzC,OAAO;IACLI,OAAO;IACPV,QAAQ;IACRL,QAAQ;IACRL,QAAQ;IACRkB,OAAO;IACPP,QAAQ;IACRK,OAAO;IACPP,QAAQ;IACRe,WAAW;IACXF;EACF,CAAC;AACH,CAAC;AAAA"}
|
package/lib/index.js
CHANGED
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
|
|
7
6
|
var _nodeServices = require("./nodeServices");
|
|
8
|
-
|
|
9
7
|
Object.keys(_nodeServices).forEach(function (key) {
|
|
10
8
|
if (key === "default" || key === "__esModule") return;
|
|
11
9
|
if (key in exports && exports[key] === _nodeServices[key]) return;
|
|
@@ -16,9 +14,7 @@ Object.keys(_nodeServices).forEach(function (key) {
|
|
|
16
14
|
}
|
|
17
15
|
});
|
|
18
16
|
});
|
|
19
|
-
|
|
20
17
|
var _nodeSession = require("./nodeSession");
|
|
21
|
-
|
|
22
18
|
Object.keys(_nodeSession).forEach(function (key) {
|
|
23
19
|
if (key === "default" || key === "__esModule") return;
|
|
24
20
|
if (key in exports && exports[key] === _nodeSession[key]) return;
|
|
@@ -29,9 +25,7 @@ Object.keys(_nodeSession).forEach(function (key) {
|
|
|
29
25
|
}
|
|
30
26
|
});
|
|
31
27
|
});
|
|
32
|
-
|
|
33
28
|
var _nodeSettings = require("./nodeSettings");
|
|
34
|
-
|
|
35
29
|
Object.keys(_nodeSettings).forEach(function (key) {
|
|
36
30
|
if (key === "default" || key === "__esModule") return;
|
|
37
31
|
if (key in exports && exports[key] === _nodeSettings[key]) return;
|
|
@@ -42,9 +36,7 @@ Object.keys(_nodeSettings).forEach(function (key) {
|
|
|
42
36
|
}
|
|
43
37
|
});
|
|
44
38
|
});
|
|
45
|
-
|
|
46
39
|
var _nodeTransport = require("./nodeTransport");
|
|
47
|
-
|
|
48
40
|
Object.keys(_nodeTransport).forEach(function (key) {
|
|
49
41
|
if (key === "default" || key === "__esModule") return;
|
|
50
42
|
if (key in exports && exports[key] === _nodeTransport[key]) return;
|
|
@@ -55,9 +47,7 @@ Object.keys(_nodeTransport).forEach(function (key) {
|
|
|
55
47
|
}
|
|
56
48
|
});
|
|
57
49
|
});
|
|
58
|
-
|
|
59
50
|
var _nodeSdk = require("./nodeSdk");
|
|
60
|
-
|
|
61
51
|
Object.keys(_nodeSdk).forEach(function (key) {
|
|
62
52
|
if (key === "default" || key === "__esModule") return;
|
|
63
53
|
if (key in exports && exports[key] === _nodeSdk[key]) return;
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\n// Version 21.0.4\nexport * from './nodeServices'\nexport * from './nodeSession'\nexport * from './nodeSettings'\nexport * from './nodeTransport'\nexport * from './nodeSdk'\n"],"mappings":";;;;;AA2BA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
package/lib/nodeSdk.js
CHANGED
|
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.LookerNodeSDK = void 0;
|
|
7
|
-
|
|
8
7
|
var _sdk = require("@looker/sdk");
|
|
9
|
-
|
|
10
8
|
var _ = require(".");
|
|
11
|
-
|
|
12
9
|
class LookerNodeSDK {
|
|
13
10
|
static init31(settings, transport, session) {
|
|
14
11
|
settings = settings || new _.NodeSettingsIniFile(_sdk.environmentPrefix);
|
|
@@ -16,17 +13,13 @@ class LookerNodeSDK {
|
|
|
16
13
|
session = session || new _.NodeSession(settings, transport);
|
|
17
14
|
return new _sdk.Looker31SDK(session);
|
|
18
15
|
}
|
|
19
|
-
|
|
20
16
|
static init40(settings, transport, session) {
|
|
21
17
|
var _session;
|
|
22
|
-
|
|
23
18
|
settings = settings || new _.NodeSettingsIniFile(_sdk.environmentPrefix);
|
|
24
19
|
transport = transport || new _.NodeTransport(settings);
|
|
25
20
|
session = (_session = session) !== null && _session !== void 0 ? _session : new _.NodeSession(settings, transport);
|
|
26
21
|
return new _sdk.Looker40SDK(session);
|
|
27
22
|
}
|
|
28
|
-
|
|
29
23
|
}
|
|
30
|
-
|
|
31
24
|
exports.LookerNodeSDK = LookerNodeSDK;
|
|
32
25
|
//# sourceMappingURL=nodeSdk.js.map
|
package/lib/nodeSdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"nodeSdk.js","names":["LookerNodeSDK","init31","settings","transport","session","NodeSettingsIniFile","environmentPrefix","NodeTransport","NodeSession","Looker31SDK","init40","Looker40SDK"],"sources":["../src/nodeSdk.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { ITransport, IApiSettings, IAuthSession } from '@looker/sdk-rtl'\nimport { Looker31SDK, Looker40SDK, environmentPrefix } from '@looker/sdk'\nimport { NodeSettingsIniFile, NodeSession, NodeTransport } from '.'\n\n/**\n * @class LookerNodeSDK\n *\n * Simple factory for the Node version of the Looker SDK. Provides default connectivity for SDK methods\n *\n */\nexport class LookerNodeSDK {\n /**\n * Creates a [[Looker31SDK]] object.\n *\n * @param settings Defaults to the settings from LookerIni\n *\n * @param transport Defaults to a `NodeTransport` object\n *\n * @param session Defaults to `NodeSession` which logs in the user\n */\n static init31(\n settings?: IApiSettings,\n transport?: ITransport,\n session?: IAuthSession\n ) {\n settings = settings || new NodeSettingsIniFile(environmentPrefix)\n transport = transport || new NodeTransport(settings)\n session = session || new NodeSession(settings, transport)\n return new Looker31SDK(session)\n }\n\n /**\n * Creates a [[Looker40SDK]] object.\n *\n * @param settings Defaults to the settings from LookerIni\n *\n * @param transport Defaults to a `NodeTransport` object\n *\n * @param session Defaults to `NodeSession` which logs in the user\n */\n static init40(\n settings?: IApiSettings,\n transport?: ITransport,\n session?: IAuthSession\n ) {\n settings = settings || new NodeSettingsIniFile(environmentPrefix)\n transport = transport || new NodeTransport(settings)\n session = session ?? new NodeSession(settings, transport)\n return new Looker40SDK(session)\n }\n}\n"],"mappings":";;;;;;AA2BA;AACA;AAQO,MAAMA,aAAa,CAAC;EAUzB,OAAOC,MAAM,CACXC,QAAuB,EACvBC,SAAsB,EACtBC,OAAsB,EACtB;IACAF,QAAQ,GAAGA,QAAQ,IAAI,IAAIG,qBAAmB,CAACC,sBAAiB,CAAC;IACjEH,SAAS,GAAGA,SAAS,IAAI,IAAII,eAAa,CAACL,QAAQ,CAAC;IACpDE,OAAO,GAAGA,OAAO,IAAI,IAAII,aAAW,CAACN,QAAQ,EAAEC,SAAS,CAAC;IACzD,OAAO,IAAIM,gBAAW,CAACL,OAAO,CAAC;EACjC;EAWA,OAAOM,MAAM,CACXR,QAAuB,EACvBC,SAAsB,EACtBC,OAAsB,EACtB;IAAA;IACAF,QAAQ,GAAGA,QAAQ,IAAI,IAAIG,qBAAmB,CAACC,sBAAiB,CAAC;IACjEH,SAAS,GAAGA,SAAS,IAAI,IAAII,eAAa,CAACL,QAAQ,CAAC;IACpDE,OAAO,eAAGA,OAAO,+CAAI,IAAII,aAAW,CAACN,QAAQ,EAAEC,SAAS,CAAC;IACzD,OAAO,IAAIQ,gBAAW,CAACP,OAAO,CAAC;EACjC;AACF;AAAC"}
|
package/lib/nodeServices.js
CHANGED
|
@@ -4,33 +4,25 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.NodeServices = void 0;
|
|
7
|
-
|
|
8
7
|
var _sdkRtl = require("@looker/sdk-rtl");
|
|
9
|
-
|
|
10
8
|
var _nodeTransport = require("./nodeTransport");
|
|
11
|
-
|
|
12
|
-
function
|
|
13
|
-
|
|
9
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
10
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
11
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
14
12
|
class NodeServices {
|
|
15
13
|
constructor(services) {
|
|
16
14
|
_defineProperty(this, "crypto", void 0);
|
|
17
|
-
|
|
18
15
|
_defineProperty(this, "settings", void 0);
|
|
19
|
-
|
|
20
16
|
_defineProperty(this, "transport", void 0);
|
|
21
|
-
|
|
22
17
|
if (!services.settings) {
|
|
23
18
|
throw (0, _sdkRtl.sdkError)({
|
|
24
19
|
message: 'Missing required IApiSettings'
|
|
25
20
|
});
|
|
26
21
|
}
|
|
27
|
-
|
|
28
22
|
this.settings = services.settings;
|
|
29
23
|
this.transport = services.transport || new _nodeTransport.NodeTransport(this.settings);
|
|
30
24
|
this.crypto = services.crypto || new _nodeTransport.NodeCryptoHash();
|
|
31
25
|
}
|
|
32
|
-
|
|
33
26
|
}
|
|
34
|
-
|
|
35
27
|
exports.NodeServices = NodeServices;
|
|
36
28
|
//# sourceMappingURL=nodeServices.js.map
|
package/lib/nodeServices.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"nodeServices.js","names":["NodeServices","constructor","services","settings","sdkError","message","transport","NodeTransport","crypto","NodeCryptoHash"],"sources":["../src/nodeServices.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type {\n ICryptoHash,\n IApiSettings,\n ITransport,\n IPlatformServices,\n} from '@looker/sdk-rtl'\nimport { sdkError } from '@looker/sdk-rtl'\nimport { NodeCryptoHash, NodeTransport } from './nodeTransport'\n\nexport class NodeServices implements IPlatformServices {\n /** Cryptography service interface */\n crypto: ICryptoHash\n /** SDK configuration interface */\n settings: IApiSettings\n transport: ITransport\n\n constructor(services: Partial<IPlatformServices>) {\n if (!services.settings) {\n throw sdkError({ message: 'Missing required IApiSettings' })\n }\n this.settings = services.settings\n this.transport = services.transport || new NodeTransport(this.settings)\n this.crypto = services.crypto || new NodeCryptoHash()\n }\n}\n"],"mappings":";;;;;;AAgCA;AACA;AAA+D;AAAA;AAAA;AAExD,MAAMA,YAAY,CAA8B;EAOrDC,WAAW,CAACC,QAAoC,EAAE;IAAA;IAAA;IAAA;IAChD,IAAI,CAACA,QAAQ,CAACC,QAAQ,EAAE;MACtB,MAAM,IAAAC,gBAAQ,EAAC;QAAEC,OAAO,EAAE;MAAgC,CAAC,CAAC;IAC9D;IACA,IAAI,CAACF,QAAQ,GAAGD,QAAQ,CAACC,QAAQ;IACjC,IAAI,CAACG,SAAS,GAAGJ,QAAQ,CAACI,SAAS,IAAI,IAAIC,4BAAa,CAAC,IAAI,CAACJ,QAAQ,CAAC;IACvE,IAAI,CAACK,MAAM,GAAGN,QAAQ,CAACM,MAAM,IAAI,IAAIC,6BAAc,EAAE;EACvD;AACF;AAAC"}
|
package/lib/nodeSession.js
CHANGED
|
@@ -4,87 +4,63 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.NodeSession = void 0;
|
|
7
|
-
|
|
8
7
|
var _sdkRtl = require("@looker/sdk-rtl");
|
|
9
|
-
|
|
10
8
|
var _nodeTransport = require("./nodeTransport");
|
|
11
|
-
|
|
12
9
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
13
|
-
|
|
14
10
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
15
|
-
|
|
16
|
-
function
|
|
17
|
-
|
|
11
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
12
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
13
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
18
14
|
var strPost = 'POST';
|
|
19
15
|
var strDelete = 'DELETE';
|
|
20
|
-
|
|
21
16
|
class NodeSession extends _sdkRtl.AuthSession {
|
|
22
17
|
constructor(settings, transport) {
|
|
23
18
|
super(settings, transport || new _nodeTransport.NodeTransport(settings));
|
|
24
19
|
this.settings = settings;
|
|
25
|
-
|
|
26
20
|
_defineProperty(this, "apiPath", '/api/4.0');
|
|
27
|
-
|
|
28
21
|
_defineProperty(this, "_authToken", new _sdkRtl.AuthToken());
|
|
29
|
-
|
|
30
22
|
_defineProperty(this, "_sudoToken", new _sdkRtl.AuthToken());
|
|
31
23
|
}
|
|
32
|
-
|
|
33
24
|
get activeToken() {
|
|
34
25
|
if (this._sudoToken.access_token) {
|
|
35
26
|
return this._sudoToken;
|
|
36
27
|
}
|
|
37
|
-
|
|
38
28
|
return this._authToken;
|
|
39
29
|
}
|
|
40
|
-
|
|
41
30
|
isAuthenticated() {
|
|
42
31
|
var token = this.activeToken;
|
|
43
32
|
if (!(token && token.access_token)) return false;
|
|
44
33
|
return token.isActive();
|
|
45
34
|
}
|
|
46
|
-
|
|
47
35
|
authenticate(props) {
|
|
48
36
|
var _this = this;
|
|
49
|
-
|
|
50
37
|
return _asyncToGenerator(function* () {
|
|
51
38
|
var token = yield _this.getToken();
|
|
52
|
-
|
|
53
39
|
if (token && token.access_token) {
|
|
54
40
|
props.headers.Authorization = "Bearer ".concat(token.access_token);
|
|
55
41
|
}
|
|
56
|
-
|
|
57
42
|
return props;
|
|
58
43
|
})();
|
|
59
44
|
}
|
|
60
|
-
|
|
61
45
|
isSudo() {
|
|
62
46
|
return !!this.sudoId && this._sudoToken.isActive();
|
|
63
47
|
}
|
|
64
|
-
|
|
65
48
|
getToken() {
|
|
66
49
|
var _this2 = this;
|
|
67
|
-
|
|
68
50
|
return _asyncToGenerator(function* () {
|
|
69
51
|
if (!_this2.isAuthenticated()) {
|
|
70
52
|
yield _this2.login();
|
|
71
53
|
}
|
|
72
|
-
|
|
73
54
|
return _this2.activeToken;
|
|
74
55
|
})();
|
|
75
56
|
}
|
|
76
|
-
|
|
77
57
|
reset() {
|
|
78
58
|
this.sudoId = '';
|
|
79
|
-
|
|
80
59
|
this._authToken.reset();
|
|
81
|
-
|
|
82
60
|
this._sudoToken.reset();
|
|
83
61
|
}
|
|
84
|
-
|
|
85
62
|
login(sudoId) {
|
|
86
63
|
var _this3 = this;
|
|
87
|
-
|
|
88
64
|
return _asyncToGenerator(function* () {
|
|
89
65
|
if (sudoId || sudoId !== _this3.sudoId || !_this3.isAuthenticated()) {
|
|
90
66
|
if (sudoId) {
|
|
@@ -93,127 +69,91 @@ class NodeSession extends _sdkRtl.AuthSession {
|
|
|
93
69
|
yield _this3._login();
|
|
94
70
|
}
|
|
95
71
|
}
|
|
96
|
-
|
|
97
72
|
return _this3.activeToken;
|
|
98
73
|
})();
|
|
99
74
|
}
|
|
100
|
-
|
|
101
75
|
logout() {
|
|
102
76
|
var _this4 = this;
|
|
103
|
-
|
|
104
77
|
return _asyncToGenerator(function* () {
|
|
105
78
|
var result = false;
|
|
106
|
-
|
|
107
79
|
if (_this4.isAuthenticated()) {
|
|
108
80
|
result = yield _this4._logout();
|
|
109
81
|
}
|
|
110
|
-
|
|
111
82
|
return result;
|
|
112
83
|
})();
|
|
113
84
|
}
|
|
114
|
-
|
|
115
85
|
sudoLogout() {
|
|
116
86
|
var _this5 = this;
|
|
117
|
-
|
|
118
87
|
return _asyncToGenerator(function* () {
|
|
119
88
|
var result = false;
|
|
120
|
-
|
|
121
89
|
if (_this5.isSudo()) {
|
|
122
90
|
result = yield _this5.logout();
|
|
123
|
-
|
|
124
91
|
_this5._sudoToken.reset();
|
|
125
92
|
}
|
|
126
|
-
|
|
127
93
|
return result;
|
|
128
94
|
})();
|
|
129
95
|
}
|
|
130
|
-
|
|
131
96
|
_login(newId) {
|
|
132
97
|
var _this6 = this;
|
|
133
|
-
|
|
134
98
|
return _asyncToGenerator(function* () {
|
|
135
99
|
yield _this6.sudoLogout();
|
|
136
|
-
|
|
137
100
|
if (newId !== _this6.sudoId) {
|
|
138
101
|
_this6.sudoId = newId || '';
|
|
139
102
|
}
|
|
140
|
-
|
|
141
103
|
if (!_this6._authToken.isActive()) {
|
|
142
104
|
_this6.reset();
|
|
143
|
-
|
|
144
105
|
var section = _this6.settings.readConfig();
|
|
145
|
-
|
|
146
106
|
var clientId = section.client_id;
|
|
147
107
|
var clientSecret = section.client_secret;
|
|
148
|
-
|
|
149
108
|
if (!clientId || !clientSecret) {
|
|
150
109
|
throw (0, _sdkRtl.sdkError)({
|
|
151
110
|
message: 'API credentials client_id and/or client_secret are not set'
|
|
152
111
|
});
|
|
153
112
|
}
|
|
154
|
-
|
|
155
113
|
var body = (0, _sdkRtl.encodeParams)({
|
|
156
114
|
client_id: clientId,
|
|
157
115
|
client_secret: clientSecret
|
|
158
116
|
});
|
|
159
117
|
var token = yield _this6.ok(_this6.transport.request(strPost, "".concat(_this6.apiPath, "/login"), undefined, body));
|
|
160
|
-
|
|
161
118
|
_this6._authToken.setToken(token);
|
|
162
119
|
}
|
|
163
|
-
|
|
164
120
|
if (_this6.sudoId) {
|
|
165
121
|
var _token = _this6.activeToken;
|
|
166
|
-
|
|
167
122
|
var promise = _this6.transport.request(strPost, encodeURI("".concat(_this6.apiPath, "/login/").concat(newId)), null, null, init => {
|
|
168
123
|
if (_token.access_token) {
|
|
169
124
|
init.headers.Authorization = "Bearer ".concat(_token.access_token);
|
|
170
125
|
}
|
|
171
|
-
|
|
172
126
|
return init;
|
|
173
127
|
}, _this6.settings);
|
|
174
|
-
|
|
175
128
|
var accessToken = yield _this6.ok(promise);
|
|
176
|
-
|
|
177
129
|
_this6._sudoToken.setToken(accessToken);
|
|
178
130
|
}
|
|
179
|
-
|
|
180
131
|
return _this6.activeToken;
|
|
181
132
|
})();
|
|
182
133
|
}
|
|
183
|
-
|
|
184
134
|
_logout() {
|
|
185
135
|
var _this7 = this;
|
|
186
|
-
|
|
187
136
|
return _asyncToGenerator(function* () {
|
|
188
137
|
var token = _this7.activeToken;
|
|
189
|
-
|
|
190
138
|
var promise = _this7.transport.request(strDelete, "".concat(_this7.apiPath, "/logout"), null, null, init => {
|
|
191
139
|
if (token.access_token) {
|
|
192
140
|
init.headers.Authorization = "Bearer ".concat(token.access_token);
|
|
193
141
|
}
|
|
194
|
-
|
|
195
142
|
return init;
|
|
196
143
|
}, _this7.settings);
|
|
197
|
-
|
|
198
144
|
yield _this7.ok(promise);
|
|
199
|
-
|
|
200
145
|
if (_this7.sudoId) {
|
|
201
146
|
_this7.sudoId = '';
|
|
202
|
-
|
|
203
147
|
_this7._sudoToken.reset();
|
|
204
|
-
|
|
205
148
|
if (!_this7._authToken.isActive()) {
|
|
206
149
|
yield _this7.login();
|
|
207
150
|
}
|
|
208
151
|
} else {
|
|
209
152
|
_this7.reset();
|
|
210
153
|
}
|
|
211
|
-
|
|
212
154
|
return true;
|
|
213
155
|
})();
|
|
214
156
|
}
|
|
215
|
-
|
|
216
157
|
}
|
|
217
|
-
|
|
218
158
|
exports.NodeSession = NodeSession;
|
|
219
159
|
//# sourceMappingURL=nodeSession.js.map
|