@looker/extension-sdk 22.20.0 → 22.20.1

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 CHANGED
@@ -5,6 +5,21 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ### [22.20.1](https://www.github.com/looker-open-source/sdk-codegen/compare/extension-sdk-v22.20.0...extension-sdk-v22.20.1) (2022-12-09)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * oauth timeout ([#1222](https://www.github.com/looker-open-source/sdk-codegen/issues/1222)) ([5ce073b](https://www.github.com/looker-open-source/sdk-codegen/commit/5ce073bd8171686451330abd4a25edbfb4756852))
14
+
15
+
16
+ ### Dependencies
17
+
18
+ * The following workspace dependencies were updated
19
+ * dependencies
20
+ * @looker/sdk bumped from ^22.20.0 to ^22.20.1
21
+ * @looker/sdk-rtl bumped from ^21.4.0 to ^21.5.0
22
+
8
23
  ## [22.20.0](https://www.github.com/looker-open-source/sdk-codegen/compare/extension-sdk-v22.18.0...extension-sdk-v22.20.0) (2022-11-10)
9
24
 
10
25
 
@@ -378,4 +393,4 @@ in extension builds.
378
393
 
379
394
  ## [21.0.5]
380
395
 
381
- Moved to the /looker-open-source/sdk-codegen github repository.
396
+ Moved to the /looker-open-source/sdk-codegen github repository.
@@ -489,6 +489,8 @@ class ExtensionHostApiImpl {
489
489
  authParameters,
490
490
  httpMethod
491
491
  }
492
+ }, {
493
+ signal: new AbortController().signal
492
494
  });
493
495
  })();
494
496
  }
@@ -513,7 +515,7 @@ class ExtensionHostApiImpl {
513
515
  })();
514
516
  }
515
517
 
516
- sendAndReceive(type, payload) {
518
+ sendAndReceive(type, payload, options) {
517
519
  var _this17 = this;
518
520
 
519
521
  return _asyncToGenerator(function* () {
@@ -521,10 +523,12 @@ class ExtensionHostApiImpl {
521
523
  return Promise.reject(new Error('Looker host connection not established'));
522
524
  }
523
525
 
524
- return _this17.chattyHost.sendAndReceive(_types.ExtensionEvent.EXTENSION_API_REQUEST, {
526
+ var messagePayload = {
525
527
  type,
526
528
  payload
527
- }).then(values => values[0]);
529
+ };
530
+ var chattyPayload = options ? [messagePayload, options] : [messagePayload];
531
+ return _this17.chattyHost.sendAndReceive(_types.ExtensionEvent.EXTENSION_API_REQUEST, ...chattyPayload).then(values => values[0]);
528
532
  })();
529
533
  }
530
534
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/connect/extension_host_api.ts"],"names":["EXTENSION_SDK_VERSION","ExtensionHostApiImpl","constructor","configuration","_configuration","chattyHost","setInitialRoute","hostChangedRoute","lookerHostData","_lookerHostData","handleNotification","message","type","payload","ExtensionNotificationType","ROUTE_CHANGED","route","routeState","undefined","INITIALIZE","contextData","errorMessage","requiredLookerVersion","lookerVersion","verifyLookerVersion","console","error","extensionSdkVersion","Error","createSecretKeyTag","keyName","match","extensionId","replace","verifyHostConnection","sendAndReceive","ExtensionRequestType","VERIFY_HOST","invokeCoreSdk","httpMethod","path","params","body","authenticator","options","apiVersion","INVOKE_CORE_SDK","invokeCoreSdkRaw","RAW_INVOKE_CORE_SDK","updateTitle","title","send","UPDATE_TITLE","updateLocation","url","state","target","UPDATE_LOCATION","spartanLogout","SPARTAN_LOGOUT","openBrowserWindow","closeHostPopovers","CLOSE_HOST_POPOVERS","clientRouteChanged","localStorageSetItem","name","value","Promise","reject","LOCAL_STORAGE","localStorageGetItem","localStorageRemoveItem","clipboardWrite","CLIPBOARD","userAttributeSetItem","USER_ATTRIBUTE","userAttributeGetItem","userAttributeResetItem","getContextData","JSON","parse","saveContextData","context","stringify","err","CONTEXT_DATA","refreshContextData","track","trackAction","attributes","TRACK_ACTION","errorEvent","filename","lineno","colno","ERROR_EVENT","toString","unloaded","EXTENSION_UNLOADED","createFetchProxy","baseUrl","init","responseBodyType","FetchProxyImpl","fetchProxy","resource","INVOKE_EXTERNAL_API","serverProxy","oauth2Authenticate","authEndpoint","authParameters","validateAuthParameters","oauth2ExchangeCodeForToken","ExtensionEvent","EXTENSION_API_REQUEST","then","values","version","client_id","redirect_uri","response_type"],"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 type { ChattyHostConnection } from '@looker/chatty'\nimport intersects from 'semver/ranges/intersects'\nimport { FetchProxyImpl } from './fetch_proxy'\nimport type {\n ExtensionInitializationResponse,\n ExtensionHostApi,\n ExtensionHostApiConfiguration,\n ExtensionNotification,\n FetchCustomParameters,\n FetchResponseBodyType,\n LookerHostData,\n ApiVersion,\n RouteChangeData,\n} from './types'\nimport {\n ExtensionEvent,\n ExtensionNotificationType,\n ExtensionRequestType,\n} from './types'\n\nexport const EXTENSION_SDK_VERSION = '0.10.5'\n\nexport class ExtensionHostApiImpl implements ExtensionHostApi {\n private _configuration: ExtensionHostApiConfiguration\n private _lookerHostData?: Readonly<LookerHostData>\n private chattyHost: ChattyHostConnection\n private setInitialRoute?: (route: string, routeState?: any) => void\n private hostChangedRoute?: (route: string, routeState?: any) => void\n private contextData?: string\n\n constructor(configuration: ExtensionHostApiConfiguration) {\n this._configuration = configuration\n const { chattyHost, setInitialRoute, hostChangedRoute } =\n this._configuration\n this.chattyHost = chattyHost\n this.setInitialRoute = setInitialRoute\n this.hostChangedRoute = hostChangedRoute\n }\n\n get lookerHostData() {\n return this._lookerHostData\n }\n\n handleNotification(\n message?: ExtensionNotification\n ): ExtensionInitializationResponse | undefined {\n const { type, payload } = message || {}\n switch (type) {\n case ExtensionNotificationType.ROUTE_CHANGED:\n if (this.hostChangedRoute && payload) {\n const { route, routeState } = payload as RouteChangeData\n if (route) {\n this.hostChangedRoute(route, routeState)\n }\n }\n return undefined\n case ExtensionNotificationType.INITIALIZE: {\n this._lookerHostData = payload as LookerHostData\n if (this._lookerHostData) {\n this.contextData = this._lookerHostData.contextData\n }\n let errorMessage\n if (\n this._configuration.requiredLookerVersion &&\n this._lookerHostData &&\n this._lookerHostData.lookerVersion\n ) {\n errorMessage = this.verifyLookerVersion(\n this._configuration.requiredLookerVersion\n )\n if (errorMessage) {\n console.error(errorMessage)\n }\n }\n if (this.setInitialRoute && payload) {\n const { route, routeState } = payload as LookerHostData\n if (route) {\n this.setInitialRoute(route, routeState)\n }\n }\n return {\n extensionSdkVersion: EXTENSION_SDK_VERSION,\n errorMessage,\n }\n }\n default:\n console.error('Unrecognized extension notification', message)\n throw new Error(`Unrecognized extension notification type ${type}`)\n }\n }\n\n createSecretKeyTag(keyName: string): string {\n const errorMessage = this.verifyLookerVersion('>=7.11')\n if (errorMessage) {\n throw new Error(errorMessage)\n }\n if (!keyName.match(/^[A-Za-z0-9_.]+$/)) {\n throw new Error('Unsupported characters in key name')\n }\n return `{{${this._lookerHostData!.extensionId.replace(\n /::|-/g,\n '_'\n )}_${keyName}}}`\n }\n\n async verifyHostConnection() {\n return this.sendAndReceive(ExtensionRequestType.VERIFY_HOST)\n }\n\n async invokeCoreSdk(\n httpMethod: string,\n path: string,\n params?: any,\n body?: any,\n authenticator?: any,\n options?: any,\n apiVersion?: ApiVersion\n ): Promise<any> {\n return this.sendAndReceive(ExtensionRequestType.INVOKE_CORE_SDK, {\n httpMethod,\n path,\n params,\n body,\n authenticator,\n options,\n apiVersion,\n })\n }\n\n async invokeCoreSdkRaw(\n httpMethod: string,\n path: string,\n params?: any,\n body?: any,\n apiVersion?: ApiVersion\n ): Promise<any> {\n return this.sendAndReceive(ExtensionRequestType.RAW_INVOKE_CORE_SDK, {\n httpMethod,\n path,\n params,\n body,\n apiVersion,\n })\n }\n\n updateTitle(title: string) {\n this.send(ExtensionRequestType.UPDATE_TITLE, { title })\n }\n\n updateLocation(url: string, state?: any, target?: string) {\n this.send(ExtensionRequestType.UPDATE_LOCATION, { url, state, target })\n }\n\n spartanLogout() {\n this.send(ExtensionRequestType.SPARTAN_LOGOUT)\n }\n\n openBrowserWindow(url: string, target?: string) {\n this.send(ExtensionRequestType.UPDATE_LOCATION, {\n url,\n undefined,\n target: target || '_blank',\n })\n }\n\n closeHostPopovers() {\n this.send(ExtensionRequestType.CLOSE_HOST_POPOVERS)\n }\n\n clientRouteChanged(route: string, routeState?: any) {\n this.send(ExtensionRequestType.ROUTE_CHANGED, {\n route,\n routeState,\n })\n }\n\n async localStorageSetItem(name: string, value = ''): Promise<boolean> {\n if (this._lookerHostData && !this._lookerHostData.lookerVersion) {\n return Promise.reject(\n new Error(\n 'localStorageSetItem not supported by the current Looker host'\n )\n )\n }\n return this.sendAndReceive(ExtensionRequestType.LOCAL_STORAGE, {\n type: 'set',\n name,\n value,\n })\n }\n\n async localStorageGetItem(name: string): Promise<string | null> {\n if (this._lookerHostData && !this._lookerHostData.lookerVersion) {\n return Promise.reject(\n new Error(\n 'localStorageGetItem not supported by the current Looker host'\n )\n )\n }\n return this.sendAndReceive(ExtensionRequestType.LOCAL_STORAGE, {\n type: 'get',\n name,\n })\n }\n\n async localStorageRemoveItem(name: string): Promise<boolean> {\n if (this._lookerHostData && !this._lookerHostData.lookerVersion) {\n return Promise.reject(\n new Error(\n 'localStorageRemoveItem not supported by the current Looker host'\n )\n )\n }\n return this.sendAndReceive(ExtensionRequestType.LOCAL_STORAGE, {\n type: 'remove',\n name,\n })\n }\n\n async clipboardWrite(value: string): Promise<void> {\n const errorMessage = this.verifyLookerVersion('>=21.7')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.CLIPBOARD, {\n type: 'write',\n value,\n })\n }\n\n async userAttributeSetItem(name: string, value = ''): Promise<boolean> {\n // User attributes added in Looker version 7.13, updated in 7.15\n const errorMessage = this.verifyLookerVersion('>=7.15')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.USER_ATTRIBUTE, {\n type: 'set',\n name,\n value,\n })\n }\n\n async userAttributeGetItem(name: string): Promise<string | null> {\n // User attributes added in Looker version 7.13, updated in 7.15\n const errorMessage = this.verifyLookerVersion('>=7.15')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.USER_ATTRIBUTE, {\n type: 'get',\n name,\n })\n }\n\n async userAttributeResetItem(name: string): Promise<void> {\n // User attributes added in Looker version 7.13, updated in 7.15\n const errorMessage = this.verifyLookerVersion('>=7.15')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.USER_ATTRIBUTE, {\n type: 'reset',\n name,\n })\n }\n\n getContextData() {\n const errorMessage = this.verifyLookerVersion('>=7.13')\n if (errorMessage) {\n throw new Error(errorMessage)\n }\n if (this.contextData) {\n return JSON.parse(this.contextData)\n } else {\n return undefined\n }\n }\n\n async saveContextData(context: any): Promise<any> {\n const errorMessage = this.verifyLookerVersion('>=7.13')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n let contextData: string | undefined\n if (context) {\n try {\n contextData = JSON.stringify(context)\n } catch (err) {\n return Promise.reject(new Error('context cannot be serialized'))\n }\n } else {\n contextData = undefined\n }\n await this.sendAndReceive(ExtensionRequestType.CONTEXT_DATA, {\n type: 'save',\n contextData,\n })\n return this.getContextData()\n }\n\n async refreshContextData(): Promise<any> {\n const errorMessage = this.verifyLookerVersion('>=7.13')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n this.contextData = await this.sendAndReceive(\n ExtensionRequestType.CONTEXT_DATA,\n {\n type: 'refresh',\n }\n )\n return this.getContextData()\n }\n\n track(name: string, trackAction: string, attributes?: Record<string, any>) {\n this.send(ExtensionRequestType.TRACK_ACTION, {\n name,\n trackAction,\n attributes,\n })\n }\n\n error(errorEvent: ErrorEvent) {\n if (this._lookerHostData) {\n const { message, filename, lineno, colno, error } = errorEvent || {}\n this.send(ExtensionRequestType.ERROR_EVENT, {\n message,\n filename,\n lineno,\n colno,\n error: error && error.toString ? error.toString() : error,\n })\n } else {\n console.error(\n 'Unhandled error but Looker host connection not established',\n errorEvent\n )\n }\n }\n\n unloaded() {\n this.send(ExtensionRequestType.EXTENSION_UNLOADED, {})\n }\n\n createFetchProxy(\n baseUrl?: string,\n init?: FetchCustomParameters,\n responseBodyType?: FetchResponseBodyType\n ) {\n return new FetchProxyImpl(this, baseUrl, init, responseBodyType)\n }\n\n async fetchProxy(\n resource: string,\n init?: FetchCustomParameters,\n responseBodyType?: FetchResponseBodyType\n ) {\n // Fetch proxy support added to Looker 7.9\n const errorMessage = this.verifyLookerVersion('>=7.9')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.INVOKE_EXTERNAL_API, {\n type: 'fetch',\n payload: {\n resource,\n init,\n responseBodyType,\n },\n })\n }\n\n async serverProxy(\n resource: string,\n init?: FetchCustomParameters,\n responseBodyType?: FetchResponseBodyType\n ) {\n // Server proxy support added to Looker 7.11\n const errorMessage = this.verifyLookerVersion('>=7.11')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.INVOKE_EXTERNAL_API, {\n type: 'server-proxy',\n payload: {\n resource,\n init,\n responseBodyType,\n },\n })\n }\n\n async oauth2Authenticate(\n authEndpoint: string,\n authParameters: Record<string, string>,\n httpMethod = 'POST'\n ) {\n // oauth2Authenticate proxy support added to Looker 7.9\n let errorMessage = this.verifyLookerVersion('>=7.9')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n errorMessage = this.validateAuthParameters(authParameters)\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.INVOKE_EXTERNAL_API, {\n type: 'oauth2_authenticate',\n payload: {\n authEndpoint,\n authParameters,\n httpMethod,\n },\n })\n }\n\n async oauth2ExchangeCodeForToken(\n authEndpoint: string,\n authParameters: Record<string, string>\n ) {\n const errorMessage = this.verifyLookerVersion('>=7.11')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.INVOKE_EXTERNAL_API, {\n type: 'oauth2_exchange_code',\n payload: {\n authEndpoint,\n authParameters,\n },\n })\n }\n\n private async sendAndReceive(type: string, payload?: any): Promise<any> {\n if (!this._lookerHostData) {\n return Promise.reject(new Error('Looker host connection not established'))\n }\n return this.chattyHost\n .sendAndReceive(ExtensionEvent.EXTENSION_API_REQUEST, {\n type,\n payload,\n })\n .then((values) => values[0])\n }\n\n private send(type: string, payload?: any) {\n if (!this._lookerHostData) {\n throw new Error('Looker host connection not established')\n }\n this.chattyHost.send(ExtensionEvent.EXTENSION_API_REQUEST, {\n type,\n payload,\n })\n }\n\n private verifyLookerVersion(version: string): string | undefined {\n // Default version to 7.0 as that's the first Looker version that officially\n // supported extensions. Version 6.24 has some support for extensions but most\n // likely will fail before reaching this point\n const lookerVersion = this._lookerHostData\n ? this._lookerHostData.lookerVersion || '7.0'\n : '7.0'\n if (!this._lookerHostData || !intersects(version, lookerVersion, true)) {\n return `Extension requires Looker version ${version}, got ${lookerVersion}`\n }\n return undefined\n }\n\n private validateAuthParameters(authParameters: Record<string, string>) {\n if (!authParameters.client_id) {\n return 'client_id missing'\n }\n if (authParameters.redirect_uri) {\n return 'redirect_uri must NOT be included'\n }\n if (\n authParameters.response_type !== 'token' &&\n authParameters.response_type !== 'id_token' &&\n authParameters.response_type !== 'code'\n ) {\n return `invalid response_type, must be token, id_token or code, ${authParameters.response_type}`\n }\n return undefined\n }\n}\n"],"file":"extension_host_api.js"}
1
+ {"version":3,"sources":["../../src/connect/extension_host_api.ts"],"names":["EXTENSION_SDK_VERSION","ExtensionHostApiImpl","constructor","configuration","_configuration","chattyHost","setInitialRoute","hostChangedRoute","lookerHostData","_lookerHostData","handleNotification","message","type","payload","ExtensionNotificationType","ROUTE_CHANGED","route","routeState","undefined","INITIALIZE","contextData","errorMessage","requiredLookerVersion","lookerVersion","verifyLookerVersion","console","error","extensionSdkVersion","Error","createSecretKeyTag","keyName","match","extensionId","replace","verifyHostConnection","sendAndReceive","ExtensionRequestType","VERIFY_HOST","invokeCoreSdk","httpMethod","path","params","body","authenticator","options","apiVersion","INVOKE_CORE_SDK","invokeCoreSdkRaw","RAW_INVOKE_CORE_SDK","updateTitle","title","send","UPDATE_TITLE","updateLocation","url","state","target","UPDATE_LOCATION","spartanLogout","SPARTAN_LOGOUT","openBrowserWindow","closeHostPopovers","CLOSE_HOST_POPOVERS","clientRouteChanged","localStorageSetItem","name","value","Promise","reject","LOCAL_STORAGE","localStorageGetItem","localStorageRemoveItem","clipboardWrite","CLIPBOARD","userAttributeSetItem","USER_ATTRIBUTE","userAttributeGetItem","userAttributeResetItem","getContextData","JSON","parse","saveContextData","context","stringify","err","CONTEXT_DATA","refreshContextData","track","trackAction","attributes","TRACK_ACTION","errorEvent","filename","lineno","colno","ERROR_EVENT","toString","unloaded","EXTENSION_UNLOADED","createFetchProxy","baseUrl","init","responseBodyType","FetchProxyImpl","fetchProxy","resource","INVOKE_EXTERNAL_API","serverProxy","oauth2Authenticate","authEndpoint","authParameters","validateAuthParameters","signal","AbortController","oauth2ExchangeCodeForToken","messagePayload","chattyPayload","ExtensionEvent","EXTENSION_API_REQUEST","then","values","version","client_id","redirect_uri","response_type"],"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 type { ChattyHostConnection, Options } from '@looker/chatty'\nimport intersects from 'semver/ranges/intersects'\nimport { FetchProxyImpl } from './fetch_proxy'\nimport type {\n ExtensionInitializationResponse,\n ExtensionHostApi,\n ExtensionHostApiConfiguration,\n ExtensionNotification,\n FetchCustomParameters,\n FetchResponseBodyType,\n LookerHostData,\n ApiVersion,\n RouteChangeData,\n} from './types'\nimport {\n ExtensionEvent,\n ExtensionNotificationType,\n ExtensionRequestType,\n} from './types'\n\nexport const EXTENSION_SDK_VERSION = '0.10.5'\n\nexport class ExtensionHostApiImpl implements ExtensionHostApi {\n private _configuration: ExtensionHostApiConfiguration\n private _lookerHostData?: Readonly<LookerHostData>\n private chattyHost: ChattyHostConnection\n private setInitialRoute?: (route: string, routeState?: any) => void\n private hostChangedRoute?: (route: string, routeState?: any) => void\n private contextData?: string\n\n constructor(configuration: ExtensionHostApiConfiguration) {\n this._configuration = configuration\n const { chattyHost, setInitialRoute, hostChangedRoute } =\n this._configuration\n this.chattyHost = chattyHost\n this.setInitialRoute = setInitialRoute\n this.hostChangedRoute = hostChangedRoute\n }\n\n get lookerHostData() {\n return this._lookerHostData\n }\n\n handleNotification(\n message?: ExtensionNotification\n ): ExtensionInitializationResponse | undefined {\n const { type, payload } = message || {}\n switch (type) {\n case ExtensionNotificationType.ROUTE_CHANGED:\n if (this.hostChangedRoute && payload) {\n const { route, routeState } = payload as RouteChangeData\n if (route) {\n this.hostChangedRoute(route, routeState)\n }\n }\n return undefined\n case ExtensionNotificationType.INITIALIZE: {\n this._lookerHostData = payload as LookerHostData\n if (this._lookerHostData) {\n this.contextData = this._lookerHostData.contextData\n }\n let errorMessage\n if (\n this._configuration.requiredLookerVersion &&\n this._lookerHostData &&\n this._lookerHostData.lookerVersion\n ) {\n errorMessage = this.verifyLookerVersion(\n this._configuration.requiredLookerVersion\n )\n if (errorMessage) {\n console.error(errorMessage)\n }\n }\n if (this.setInitialRoute && payload) {\n const { route, routeState } = payload as LookerHostData\n if (route) {\n this.setInitialRoute(route, routeState)\n }\n }\n return {\n extensionSdkVersion: EXTENSION_SDK_VERSION,\n errorMessage,\n }\n }\n default:\n console.error('Unrecognized extension notification', message)\n throw new Error(`Unrecognized extension notification type ${type}`)\n }\n }\n\n createSecretKeyTag(keyName: string): string {\n const errorMessage = this.verifyLookerVersion('>=7.11')\n if (errorMessage) {\n throw new Error(errorMessage)\n }\n if (!keyName.match(/^[A-Za-z0-9_.]+$/)) {\n throw new Error('Unsupported characters in key name')\n }\n return `{{${this._lookerHostData!.extensionId.replace(\n /::|-/g,\n '_'\n )}_${keyName}}}`\n }\n\n async verifyHostConnection() {\n return this.sendAndReceive(ExtensionRequestType.VERIFY_HOST)\n }\n\n async invokeCoreSdk(\n httpMethod: string,\n path: string,\n params?: any,\n body?: any,\n authenticator?: any,\n options?: any,\n apiVersion?: ApiVersion\n ): Promise<any> {\n return this.sendAndReceive(ExtensionRequestType.INVOKE_CORE_SDK, {\n httpMethod,\n path,\n params,\n body,\n authenticator,\n options,\n apiVersion,\n })\n }\n\n async invokeCoreSdkRaw(\n httpMethod: string,\n path: string,\n params?: any,\n body?: any,\n apiVersion?: ApiVersion\n ): Promise<any> {\n return this.sendAndReceive(ExtensionRequestType.RAW_INVOKE_CORE_SDK, {\n httpMethod,\n path,\n params,\n body,\n apiVersion,\n })\n }\n\n updateTitle(title: string) {\n this.send(ExtensionRequestType.UPDATE_TITLE, { title })\n }\n\n updateLocation(url: string, state?: any, target?: string) {\n this.send(ExtensionRequestType.UPDATE_LOCATION, { url, state, target })\n }\n\n spartanLogout() {\n this.send(ExtensionRequestType.SPARTAN_LOGOUT)\n }\n\n openBrowserWindow(url: string, target?: string) {\n this.send(ExtensionRequestType.UPDATE_LOCATION, {\n url,\n undefined,\n target: target || '_blank',\n })\n }\n\n closeHostPopovers() {\n this.send(ExtensionRequestType.CLOSE_HOST_POPOVERS)\n }\n\n clientRouteChanged(route: string, routeState?: any) {\n this.send(ExtensionRequestType.ROUTE_CHANGED, {\n route,\n routeState,\n })\n }\n\n async localStorageSetItem(name: string, value = ''): Promise<boolean> {\n if (this._lookerHostData && !this._lookerHostData.lookerVersion) {\n return Promise.reject(\n new Error(\n 'localStorageSetItem not supported by the current Looker host'\n )\n )\n }\n return this.sendAndReceive(ExtensionRequestType.LOCAL_STORAGE, {\n type: 'set',\n name,\n value,\n })\n }\n\n async localStorageGetItem(name: string): Promise<string | null> {\n if (this._lookerHostData && !this._lookerHostData.lookerVersion) {\n return Promise.reject(\n new Error(\n 'localStorageGetItem not supported by the current Looker host'\n )\n )\n }\n return this.sendAndReceive(ExtensionRequestType.LOCAL_STORAGE, {\n type: 'get',\n name,\n })\n }\n\n async localStorageRemoveItem(name: string): Promise<boolean> {\n if (this._lookerHostData && !this._lookerHostData.lookerVersion) {\n return Promise.reject(\n new Error(\n 'localStorageRemoveItem not supported by the current Looker host'\n )\n )\n }\n return this.sendAndReceive(ExtensionRequestType.LOCAL_STORAGE, {\n type: 'remove',\n name,\n })\n }\n\n async clipboardWrite(value: string): Promise<void> {\n const errorMessage = this.verifyLookerVersion('>=21.7')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.CLIPBOARD, {\n type: 'write',\n value,\n })\n }\n\n async userAttributeSetItem(name: string, value = ''): Promise<boolean> {\n // User attributes added in Looker version 7.13, updated in 7.15\n const errorMessage = this.verifyLookerVersion('>=7.15')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.USER_ATTRIBUTE, {\n type: 'set',\n name,\n value,\n })\n }\n\n async userAttributeGetItem(name: string): Promise<string | null> {\n // User attributes added in Looker version 7.13, updated in 7.15\n const errorMessage = this.verifyLookerVersion('>=7.15')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.USER_ATTRIBUTE, {\n type: 'get',\n name,\n })\n }\n\n async userAttributeResetItem(name: string): Promise<void> {\n // User attributes added in Looker version 7.13, updated in 7.15\n const errorMessage = this.verifyLookerVersion('>=7.15')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.USER_ATTRIBUTE, {\n type: 'reset',\n name,\n })\n }\n\n getContextData() {\n const errorMessage = this.verifyLookerVersion('>=7.13')\n if (errorMessage) {\n throw new Error(errorMessage)\n }\n if (this.contextData) {\n return JSON.parse(this.contextData)\n } else {\n return undefined\n }\n }\n\n async saveContextData(context: any): Promise<any> {\n const errorMessage = this.verifyLookerVersion('>=7.13')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n let contextData: string | undefined\n if (context) {\n try {\n contextData = JSON.stringify(context)\n } catch (err) {\n return Promise.reject(new Error('context cannot be serialized'))\n }\n } else {\n contextData = undefined\n }\n await this.sendAndReceive(ExtensionRequestType.CONTEXT_DATA, {\n type: 'save',\n contextData,\n })\n return this.getContextData()\n }\n\n async refreshContextData(): Promise<any> {\n const errorMessage = this.verifyLookerVersion('>=7.13')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n this.contextData = await this.sendAndReceive(\n ExtensionRequestType.CONTEXT_DATA,\n {\n type: 'refresh',\n }\n )\n return this.getContextData()\n }\n\n track(name: string, trackAction: string, attributes?: Record<string, any>) {\n this.send(ExtensionRequestType.TRACK_ACTION, {\n name,\n trackAction,\n attributes,\n })\n }\n\n error(errorEvent: ErrorEvent) {\n if (this._lookerHostData) {\n const { message, filename, lineno, colno, error } = errorEvent || {}\n this.send(ExtensionRequestType.ERROR_EVENT, {\n message,\n filename,\n lineno,\n colno,\n error: error && error.toString ? error.toString() : error,\n })\n } else {\n console.error(\n 'Unhandled error but Looker host connection not established',\n errorEvent\n )\n }\n }\n\n unloaded() {\n this.send(ExtensionRequestType.EXTENSION_UNLOADED, {})\n }\n\n createFetchProxy(\n baseUrl?: string,\n init?: FetchCustomParameters,\n responseBodyType?: FetchResponseBodyType\n ) {\n return new FetchProxyImpl(this, baseUrl, init, responseBodyType)\n }\n\n async fetchProxy(\n resource: string,\n init?: FetchCustomParameters,\n responseBodyType?: FetchResponseBodyType\n ) {\n // Fetch proxy support added to Looker 7.9\n const errorMessage = this.verifyLookerVersion('>=7.9')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.INVOKE_EXTERNAL_API, {\n type: 'fetch',\n payload: {\n resource,\n init,\n responseBodyType,\n },\n })\n }\n\n async serverProxy(\n resource: string,\n init?: FetchCustomParameters,\n responseBodyType?: FetchResponseBodyType\n ) {\n // Server proxy support added to Looker 7.11\n const errorMessage = this.verifyLookerVersion('>=7.11')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.INVOKE_EXTERNAL_API, {\n type: 'server-proxy',\n payload: {\n resource,\n init,\n responseBodyType,\n },\n })\n }\n\n async oauth2Authenticate(\n authEndpoint: string,\n authParameters: Record<string, string>,\n httpMethod = 'POST'\n ) {\n // oauth2Authenticate proxy support added to Looker 7.9\n let errorMessage = this.verifyLookerVersion('>=7.9')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n errorMessage = this.validateAuthParameters(authParameters)\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(\n ExtensionRequestType.INVOKE_EXTERNAL_API,\n {\n type: 'oauth2_authenticate',\n payload: {\n authEndpoint,\n authParameters,\n httpMethod,\n },\n },\n // Adding the signal disables the default timeout\n { signal: new AbortController().signal }\n )\n }\n\n async oauth2ExchangeCodeForToken(\n authEndpoint: string,\n authParameters: Record<string, string>\n ) {\n const errorMessage = this.verifyLookerVersion('>=7.11')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.INVOKE_EXTERNAL_API, {\n type: 'oauth2_exchange_code',\n payload: {\n authEndpoint,\n authParameters,\n },\n })\n }\n\n private async sendAndReceive(\n type: string,\n payload?: any,\n options?: Options\n ): Promise<any> {\n if (!this._lookerHostData) {\n return Promise.reject(new Error('Looker host connection not established'))\n }\n const messagePayload = {\n type,\n payload,\n }\n const chattyPayload = options ? [messagePayload, options] : [messagePayload]\n return this.chattyHost\n .sendAndReceive(ExtensionEvent.EXTENSION_API_REQUEST, ...chattyPayload)\n .then((values) => values[0])\n }\n\n private send(type: string, payload?: any) {\n if (!this._lookerHostData) {\n throw new Error('Looker host connection not established')\n }\n this.chattyHost.send(ExtensionEvent.EXTENSION_API_REQUEST, {\n type,\n payload,\n })\n }\n\n private verifyLookerVersion(version: string): string | undefined {\n // Default version to 7.0 as that's the first Looker version that officially\n // supported extensions. Version 6.24 has some support for extensions but most\n // likely will fail before reaching this point\n const lookerVersion = this._lookerHostData\n ? this._lookerHostData.lookerVersion || '7.0'\n : '7.0'\n if (!this._lookerHostData || !intersects(version, lookerVersion, true)) {\n return `Extension requires Looker version ${version}, got ${lookerVersion}`\n }\n return undefined\n }\n\n private validateAuthParameters(authParameters: Record<string, string>) {\n if (!authParameters.client_id) {\n return 'client_id missing'\n }\n if (authParameters.redirect_uri) {\n return 'redirect_uri must NOT be included'\n }\n if (\n authParameters.response_type !== 'token' &&\n authParameters.response_type !== 'id_token' &&\n authParameters.response_type !== 'code'\n ) {\n return `invalid response_type, must be token, id_token or code, ${authParameters.response_type}`\n }\n return undefined\n }\n}\n"],"file":"extension_host_api.js"}
@@ -475,6 +475,8 @@ export class ExtensionHostApiImpl {
475
475
  authParameters,
476
476
  httpMethod
477
477
  }
478
+ }, {
479
+ signal: new AbortController().signal
478
480
  });
479
481
  })();
480
482
  }
@@ -499,7 +501,7 @@ export class ExtensionHostApiImpl {
499
501
  })();
500
502
  }
501
503
 
502
- sendAndReceive(type, payload) {
504
+ sendAndReceive(type, payload, options) {
503
505
  var _this17 = this;
504
506
 
505
507
  return _asyncToGenerator(function* () {
@@ -507,10 +509,12 @@ export class ExtensionHostApiImpl {
507
509
  return Promise.reject(new Error('Looker host connection not established'));
508
510
  }
509
511
 
510
- return _this17.chattyHost.sendAndReceive(ExtensionEvent.EXTENSION_API_REQUEST, {
512
+ var messagePayload = {
511
513
  type,
512
514
  payload
513
- }).then(values => values[0]);
515
+ };
516
+ var chattyPayload = options ? [messagePayload, options] : [messagePayload];
517
+ return _this17.chattyHost.sendAndReceive(ExtensionEvent.EXTENSION_API_REQUEST, ...chattyPayload).then(values => values[0]);
514
518
  })();
515
519
  }
516
520
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/connect/extension_host_api.ts"],"names":["intersects","FetchProxyImpl","ExtensionEvent","ExtensionNotificationType","ExtensionRequestType","EXTENSION_SDK_VERSION","ExtensionHostApiImpl","constructor","configuration","_configuration","chattyHost","setInitialRoute","hostChangedRoute","lookerHostData","_lookerHostData","handleNotification","message","type","payload","ROUTE_CHANGED","route","routeState","undefined","INITIALIZE","contextData","errorMessage","requiredLookerVersion","lookerVersion","verifyLookerVersion","console","error","extensionSdkVersion","Error","createSecretKeyTag","keyName","match","extensionId","replace","verifyHostConnection","sendAndReceive","VERIFY_HOST","invokeCoreSdk","httpMethod","path","params","body","authenticator","options","apiVersion","INVOKE_CORE_SDK","invokeCoreSdkRaw","RAW_INVOKE_CORE_SDK","updateTitle","title","send","UPDATE_TITLE","updateLocation","url","state","target","UPDATE_LOCATION","spartanLogout","SPARTAN_LOGOUT","openBrowserWindow","closeHostPopovers","CLOSE_HOST_POPOVERS","clientRouteChanged","localStorageSetItem","name","value","Promise","reject","LOCAL_STORAGE","localStorageGetItem","localStorageRemoveItem","clipboardWrite","CLIPBOARD","userAttributeSetItem","USER_ATTRIBUTE","userAttributeGetItem","userAttributeResetItem","getContextData","JSON","parse","saveContextData","context","stringify","err","CONTEXT_DATA","refreshContextData","track","trackAction","attributes","TRACK_ACTION","errorEvent","filename","lineno","colno","ERROR_EVENT","toString","unloaded","EXTENSION_UNLOADED","createFetchProxy","baseUrl","init","responseBodyType","fetchProxy","resource","INVOKE_EXTERNAL_API","serverProxy","oauth2Authenticate","authEndpoint","authParameters","validateAuthParameters","oauth2ExchangeCodeForToken","EXTENSION_API_REQUEST","then","values","version","client_id","redirect_uri","response_type"],"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 type { ChattyHostConnection } from '@looker/chatty'\nimport intersects from 'semver/ranges/intersects'\nimport { FetchProxyImpl } from './fetch_proxy'\nimport type {\n ExtensionInitializationResponse,\n ExtensionHostApi,\n ExtensionHostApiConfiguration,\n ExtensionNotification,\n FetchCustomParameters,\n FetchResponseBodyType,\n LookerHostData,\n ApiVersion,\n RouteChangeData,\n} from './types'\nimport {\n ExtensionEvent,\n ExtensionNotificationType,\n ExtensionRequestType,\n} from './types'\n\nexport const EXTENSION_SDK_VERSION = '0.10.5'\n\nexport class ExtensionHostApiImpl implements ExtensionHostApi {\n private _configuration: ExtensionHostApiConfiguration\n private _lookerHostData?: Readonly<LookerHostData>\n private chattyHost: ChattyHostConnection\n private setInitialRoute?: (route: string, routeState?: any) => void\n private hostChangedRoute?: (route: string, routeState?: any) => void\n private contextData?: string\n\n constructor(configuration: ExtensionHostApiConfiguration) {\n this._configuration = configuration\n const { chattyHost, setInitialRoute, hostChangedRoute } =\n this._configuration\n this.chattyHost = chattyHost\n this.setInitialRoute = setInitialRoute\n this.hostChangedRoute = hostChangedRoute\n }\n\n get lookerHostData() {\n return this._lookerHostData\n }\n\n handleNotification(\n message?: ExtensionNotification\n ): ExtensionInitializationResponse | undefined {\n const { type, payload } = message || {}\n switch (type) {\n case ExtensionNotificationType.ROUTE_CHANGED:\n if (this.hostChangedRoute && payload) {\n const { route, routeState } = payload as RouteChangeData\n if (route) {\n this.hostChangedRoute(route, routeState)\n }\n }\n return undefined\n case ExtensionNotificationType.INITIALIZE: {\n this._lookerHostData = payload as LookerHostData\n if (this._lookerHostData) {\n this.contextData = this._lookerHostData.contextData\n }\n let errorMessage\n if (\n this._configuration.requiredLookerVersion &&\n this._lookerHostData &&\n this._lookerHostData.lookerVersion\n ) {\n errorMessage = this.verifyLookerVersion(\n this._configuration.requiredLookerVersion\n )\n if (errorMessage) {\n console.error(errorMessage)\n }\n }\n if (this.setInitialRoute && payload) {\n const { route, routeState } = payload as LookerHostData\n if (route) {\n this.setInitialRoute(route, routeState)\n }\n }\n return {\n extensionSdkVersion: EXTENSION_SDK_VERSION,\n errorMessage,\n }\n }\n default:\n console.error('Unrecognized extension notification', message)\n throw new Error(`Unrecognized extension notification type ${type}`)\n }\n }\n\n createSecretKeyTag(keyName: string): string {\n const errorMessage = this.verifyLookerVersion('>=7.11')\n if (errorMessage) {\n throw new Error(errorMessage)\n }\n if (!keyName.match(/^[A-Za-z0-9_.]+$/)) {\n throw new Error('Unsupported characters in key name')\n }\n return `{{${this._lookerHostData!.extensionId.replace(\n /::|-/g,\n '_'\n )}_${keyName}}}`\n }\n\n async verifyHostConnection() {\n return this.sendAndReceive(ExtensionRequestType.VERIFY_HOST)\n }\n\n async invokeCoreSdk(\n httpMethod: string,\n path: string,\n params?: any,\n body?: any,\n authenticator?: any,\n options?: any,\n apiVersion?: ApiVersion\n ): Promise<any> {\n return this.sendAndReceive(ExtensionRequestType.INVOKE_CORE_SDK, {\n httpMethod,\n path,\n params,\n body,\n authenticator,\n options,\n apiVersion,\n })\n }\n\n async invokeCoreSdkRaw(\n httpMethod: string,\n path: string,\n params?: any,\n body?: any,\n apiVersion?: ApiVersion\n ): Promise<any> {\n return this.sendAndReceive(ExtensionRequestType.RAW_INVOKE_CORE_SDK, {\n httpMethod,\n path,\n params,\n body,\n apiVersion,\n })\n }\n\n updateTitle(title: string) {\n this.send(ExtensionRequestType.UPDATE_TITLE, { title })\n }\n\n updateLocation(url: string, state?: any, target?: string) {\n this.send(ExtensionRequestType.UPDATE_LOCATION, { url, state, target })\n }\n\n spartanLogout() {\n this.send(ExtensionRequestType.SPARTAN_LOGOUT)\n }\n\n openBrowserWindow(url: string, target?: string) {\n this.send(ExtensionRequestType.UPDATE_LOCATION, {\n url,\n undefined,\n target: target || '_blank',\n })\n }\n\n closeHostPopovers() {\n this.send(ExtensionRequestType.CLOSE_HOST_POPOVERS)\n }\n\n clientRouteChanged(route: string, routeState?: any) {\n this.send(ExtensionRequestType.ROUTE_CHANGED, {\n route,\n routeState,\n })\n }\n\n async localStorageSetItem(name: string, value = ''): Promise<boolean> {\n if (this._lookerHostData && !this._lookerHostData.lookerVersion) {\n return Promise.reject(\n new Error(\n 'localStorageSetItem not supported by the current Looker host'\n )\n )\n }\n return this.sendAndReceive(ExtensionRequestType.LOCAL_STORAGE, {\n type: 'set',\n name,\n value,\n })\n }\n\n async localStorageGetItem(name: string): Promise<string | null> {\n if (this._lookerHostData && !this._lookerHostData.lookerVersion) {\n return Promise.reject(\n new Error(\n 'localStorageGetItem not supported by the current Looker host'\n )\n )\n }\n return this.sendAndReceive(ExtensionRequestType.LOCAL_STORAGE, {\n type: 'get',\n name,\n })\n }\n\n async localStorageRemoveItem(name: string): Promise<boolean> {\n if (this._lookerHostData && !this._lookerHostData.lookerVersion) {\n return Promise.reject(\n new Error(\n 'localStorageRemoveItem not supported by the current Looker host'\n )\n )\n }\n return this.sendAndReceive(ExtensionRequestType.LOCAL_STORAGE, {\n type: 'remove',\n name,\n })\n }\n\n async clipboardWrite(value: string): Promise<void> {\n const errorMessage = this.verifyLookerVersion('>=21.7')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.CLIPBOARD, {\n type: 'write',\n value,\n })\n }\n\n async userAttributeSetItem(name: string, value = ''): Promise<boolean> {\n // User attributes added in Looker version 7.13, updated in 7.15\n const errorMessage = this.verifyLookerVersion('>=7.15')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.USER_ATTRIBUTE, {\n type: 'set',\n name,\n value,\n })\n }\n\n async userAttributeGetItem(name: string): Promise<string | null> {\n // User attributes added in Looker version 7.13, updated in 7.15\n const errorMessage = this.verifyLookerVersion('>=7.15')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.USER_ATTRIBUTE, {\n type: 'get',\n name,\n })\n }\n\n async userAttributeResetItem(name: string): Promise<void> {\n // User attributes added in Looker version 7.13, updated in 7.15\n const errorMessage = this.verifyLookerVersion('>=7.15')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.USER_ATTRIBUTE, {\n type: 'reset',\n name,\n })\n }\n\n getContextData() {\n const errorMessage = this.verifyLookerVersion('>=7.13')\n if (errorMessage) {\n throw new Error(errorMessage)\n }\n if (this.contextData) {\n return JSON.parse(this.contextData)\n } else {\n return undefined\n }\n }\n\n async saveContextData(context: any): Promise<any> {\n const errorMessage = this.verifyLookerVersion('>=7.13')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n let contextData: string | undefined\n if (context) {\n try {\n contextData = JSON.stringify(context)\n } catch (err) {\n return Promise.reject(new Error('context cannot be serialized'))\n }\n } else {\n contextData = undefined\n }\n await this.sendAndReceive(ExtensionRequestType.CONTEXT_DATA, {\n type: 'save',\n contextData,\n })\n return this.getContextData()\n }\n\n async refreshContextData(): Promise<any> {\n const errorMessage = this.verifyLookerVersion('>=7.13')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n this.contextData = await this.sendAndReceive(\n ExtensionRequestType.CONTEXT_DATA,\n {\n type: 'refresh',\n }\n )\n return this.getContextData()\n }\n\n track(name: string, trackAction: string, attributes?: Record<string, any>) {\n this.send(ExtensionRequestType.TRACK_ACTION, {\n name,\n trackAction,\n attributes,\n })\n }\n\n error(errorEvent: ErrorEvent) {\n if (this._lookerHostData) {\n const { message, filename, lineno, colno, error } = errorEvent || {}\n this.send(ExtensionRequestType.ERROR_EVENT, {\n message,\n filename,\n lineno,\n colno,\n error: error && error.toString ? error.toString() : error,\n })\n } else {\n console.error(\n 'Unhandled error but Looker host connection not established',\n errorEvent\n )\n }\n }\n\n unloaded() {\n this.send(ExtensionRequestType.EXTENSION_UNLOADED, {})\n }\n\n createFetchProxy(\n baseUrl?: string,\n init?: FetchCustomParameters,\n responseBodyType?: FetchResponseBodyType\n ) {\n return new FetchProxyImpl(this, baseUrl, init, responseBodyType)\n }\n\n async fetchProxy(\n resource: string,\n init?: FetchCustomParameters,\n responseBodyType?: FetchResponseBodyType\n ) {\n // Fetch proxy support added to Looker 7.9\n const errorMessage = this.verifyLookerVersion('>=7.9')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.INVOKE_EXTERNAL_API, {\n type: 'fetch',\n payload: {\n resource,\n init,\n responseBodyType,\n },\n })\n }\n\n async serverProxy(\n resource: string,\n init?: FetchCustomParameters,\n responseBodyType?: FetchResponseBodyType\n ) {\n // Server proxy support added to Looker 7.11\n const errorMessage = this.verifyLookerVersion('>=7.11')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.INVOKE_EXTERNAL_API, {\n type: 'server-proxy',\n payload: {\n resource,\n init,\n responseBodyType,\n },\n })\n }\n\n async oauth2Authenticate(\n authEndpoint: string,\n authParameters: Record<string, string>,\n httpMethod = 'POST'\n ) {\n // oauth2Authenticate proxy support added to Looker 7.9\n let errorMessage = this.verifyLookerVersion('>=7.9')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n errorMessage = this.validateAuthParameters(authParameters)\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.INVOKE_EXTERNAL_API, {\n type: 'oauth2_authenticate',\n payload: {\n authEndpoint,\n authParameters,\n httpMethod,\n },\n })\n }\n\n async oauth2ExchangeCodeForToken(\n authEndpoint: string,\n authParameters: Record<string, string>\n ) {\n const errorMessage = this.verifyLookerVersion('>=7.11')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.INVOKE_EXTERNAL_API, {\n type: 'oauth2_exchange_code',\n payload: {\n authEndpoint,\n authParameters,\n },\n })\n }\n\n private async sendAndReceive(type: string, payload?: any): Promise<any> {\n if (!this._lookerHostData) {\n return Promise.reject(new Error('Looker host connection not established'))\n }\n return this.chattyHost\n .sendAndReceive(ExtensionEvent.EXTENSION_API_REQUEST, {\n type,\n payload,\n })\n .then((values) => values[0])\n }\n\n private send(type: string, payload?: any) {\n if (!this._lookerHostData) {\n throw new Error('Looker host connection not established')\n }\n this.chattyHost.send(ExtensionEvent.EXTENSION_API_REQUEST, {\n type,\n payload,\n })\n }\n\n private verifyLookerVersion(version: string): string | undefined {\n // Default version to 7.0 as that's the first Looker version that officially\n // supported extensions. Version 6.24 has some support for extensions but most\n // likely will fail before reaching this point\n const lookerVersion = this._lookerHostData\n ? this._lookerHostData.lookerVersion || '7.0'\n : '7.0'\n if (!this._lookerHostData || !intersects(version, lookerVersion, true)) {\n return `Extension requires Looker version ${version}, got ${lookerVersion}`\n }\n return undefined\n }\n\n private validateAuthParameters(authParameters: Record<string, string>) {\n if (!authParameters.client_id) {\n return 'client_id missing'\n }\n if (authParameters.redirect_uri) {\n return 'redirect_uri must NOT be included'\n }\n if (\n authParameters.response_type !== 'token' &&\n authParameters.response_type !== 'id_token' &&\n authParameters.response_type !== 'code'\n ) {\n return `invalid response_type, must be token, id_token or code, ${authParameters.response_type}`\n }\n return undefined\n }\n}\n"],"file":"extension_host_api.js"}
1
+ {"version":3,"sources":["../../../src/connect/extension_host_api.ts"],"names":["intersects","FetchProxyImpl","ExtensionEvent","ExtensionNotificationType","ExtensionRequestType","EXTENSION_SDK_VERSION","ExtensionHostApiImpl","constructor","configuration","_configuration","chattyHost","setInitialRoute","hostChangedRoute","lookerHostData","_lookerHostData","handleNotification","message","type","payload","ROUTE_CHANGED","route","routeState","undefined","INITIALIZE","contextData","errorMessage","requiredLookerVersion","lookerVersion","verifyLookerVersion","console","error","extensionSdkVersion","Error","createSecretKeyTag","keyName","match","extensionId","replace","verifyHostConnection","sendAndReceive","VERIFY_HOST","invokeCoreSdk","httpMethod","path","params","body","authenticator","options","apiVersion","INVOKE_CORE_SDK","invokeCoreSdkRaw","RAW_INVOKE_CORE_SDK","updateTitle","title","send","UPDATE_TITLE","updateLocation","url","state","target","UPDATE_LOCATION","spartanLogout","SPARTAN_LOGOUT","openBrowserWindow","closeHostPopovers","CLOSE_HOST_POPOVERS","clientRouteChanged","localStorageSetItem","name","value","Promise","reject","LOCAL_STORAGE","localStorageGetItem","localStorageRemoveItem","clipboardWrite","CLIPBOARD","userAttributeSetItem","USER_ATTRIBUTE","userAttributeGetItem","userAttributeResetItem","getContextData","JSON","parse","saveContextData","context","stringify","err","CONTEXT_DATA","refreshContextData","track","trackAction","attributes","TRACK_ACTION","errorEvent","filename","lineno","colno","ERROR_EVENT","toString","unloaded","EXTENSION_UNLOADED","createFetchProxy","baseUrl","init","responseBodyType","fetchProxy","resource","INVOKE_EXTERNAL_API","serverProxy","oauth2Authenticate","authEndpoint","authParameters","validateAuthParameters","signal","AbortController","oauth2ExchangeCodeForToken","messagePayload","chattyPayload","EXTENSION_API_REQUEST","then","values","version","client_id","redirect_uri","response_type"],"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 type { ChattyHostConnection, Options } from '@looker/chatty'\nimport intersects from 'semver/ranges/intersects'\nimport { FetchProxyImpl } from './fetch_proxy'\nimport type {\n ExtensionInitializationResponse,\n ExtensionHostApi,\n ExtensionHostApiConfiguration,\n ExtensionNotification,\n FetchCustomParameters,\n FetchResponseBodyType,\n LookerHostData,\n ApiVersion,\n RouteChangeData,\n} from './types'\nimport {\n ExtensionEvent,\n ExtensionNotificationType,\n ExtensionRequestType,\n} from './types'\n\nexport const EXTENSION_SDK_VERSION = '0.10.5'\n\nexport class ExtensionHostApiImpl implements ExtensionHostApi {\n private _configuration: ExtensionHostApiConfiguration\n private _lookerHostData?: Readonly<LookerHostData>\n private chattyHost: ChattyHostConnection\n private setInitialRoute?: (route: string, routeState?: any) => void\n private hostChangedRoute?: (route: string, routeState?: any) => void\n private contextData?: string\n\n constructor(configuration: ExtensionHostApiConfiguration) {\n this._configuration = configuration\n const { chattyHost, setInitialRoute, hostChangedRoute } =\n this._configuration\n this.chattyHost = chattyHost\n this.setInitialRoute = setInitialRoute\n this.hostChangedRoute = hostChangedRoute\n }\n\n get lookerHostData() {\n return this._lookerHostData\n }\n\n handleNotification(\n message?: ExtensionNotification\n ): ExtensionInitializationResponse | undefined {\n const { type, payload } = message || {}\n switch (type) {\n case ExtensionNotificationType.ROUTE_CHANGED:\n if (this.hostChangedRoute && payload) {\n const { route, routeState } = payload as RouteChangeData\n if (route) {\n this.hostChangedRoute(route, routeState)\n }\n }\n return undefined\n case ExtensionNotificationType.INITIALIZE: {\n this._lookerHostData = payload as LookerHostData\n if (this._lookerHostData) {\n this.contextData = this._lookerHostData.contextData\n }\n let errorMessage\n if (\n this._configuration.requiredLookerVersion &&\n this._lookerHostData &&\n this._lookerHostData.lookerVersion\n ) {\n errorMessage = this.verifyLookerVersion(\n this._configuration.requiredLookerVersion\n )\n if (errorMessage) {\n console.error(errorMessage)\n }\n }\n if (this.setInitialRoute && payload) {\n const { route, routeState } = payload as LookerHostData\n if (route) {\n this.setInitialRoute(route, routeState)\n }\n }\n return {\n extensionSdkVersion: EXTENSION_SDK_VERSION,\n errorMessage,\n }\n }\n default:\n console.error('Unrecognized extension notification', message)\n throw new Error(`Unrecognized extension notification type ${type}`)\n }\n }\n\n createSecretKeyTag(keyName: string): string {\n const errorMessage = this.verifyLookerVersion('>=7.11')\n if (errorMessage) {\n throw new Error(errorMessage)\n }\n if (!keyName.match(/^[A-Za-z0-9_.]+$/)) {\n throw new Error('Unsupported characters in key name')\n }\n return `{{${this._lookerHostData!.extensionId.replace(\n /::|-/g,\n '_'\n )}_${keyName}}}`\n }\n\n async verifyHostConnection() {\n return this.sendAndReceive(ExtensionRequestType.VERIFY_HOST)\n }\n\n async invokeCoreSdk(\n httpMethod: string,\n path: string,\n params?: any,\n body?: any,\n authenticator?: any,\n options?: any,\n apiVersion?: ApiVersion\n ): Promise<any> {\n return this.sendAndReceive(ExtensionRequestType.INVOKE_CORE_SDK, {\n httpMethod,\n path,\n params,\n body,\n authenticator,\n options,\n apiVersion,\n })\n }\n\n async invokeCoreSdkRaw(\n httpMethod: string,\n path: string,\n params?: any,\n body?: any,\n apiVersion?: ApiVersion\n ): Promise<any> {\n return this.sendAndReceive(ExtensionRequestType.RAW_INVOKE_CORE_SDK, {\n httpMethod,\n path,\n params,\n body,\n apiVersion,\n })\n }\n\n updateTitle(title: string) {\n this.send(ExtensionRequestType.UPDATE_TITLE, { title })\n }\n\n updateLocation(url: string, state?: any, target?: string) {\n this.send(ExtensionRequestType.UPDATE_LOCATION, { url, state, target })\n }\n\n spartanLogout() {\n this.send(ExtensionRequestType.SPARTAN_LOGOUT)\n }\n\n openBrowserWindow(url: string, target?: string) {\n this.send(ExtensionRequestType.UPDATE_LOCATION, {\n url,\n undefined,\n target: target || '_blank',\n })\n }\n\n closeHostPopovers() {\n this.send(ExtensionRequestType.CLOSE_HOST_POPOVERS)\n }\n\n clientRouteChanged(route: string, routeState?: any) {\n this.send(ExtensionRequestType.ROUTE_CHANGED, {\n route,\n routeState,\n })\n }\n\n async localStorageSetItem(name: string, value = ''): Promise<boolean> {\n if (this._lookerHostData && !this._lookerHostData.lookerVersion) {\n return Promise.reject(\n new Error(\n 'localStorageSetItem not supported by the current Looker host'\n )\n )\n }\n return this.sendAndReceive(ExtensionRequestType.LOCAL_STORAGE, {\n type: 'set',\n name,\n value,\n })\n }\n\n async localStorageGetItem(name: string): Promise<string | null> {\n if (this._lookerHostData && !this._lookerHostData.lookerVersion) {\n return Promise.reject(\n new Error(\n 'localStorageGetItem not supported by the current Looker host'\n )\n )\n }\n return this.sendAndReceive(ExtensionRequestType.LOCAL_STORAGE, {\n type: 'get',\n name,\n })\n }\n\n async localStorageRemoveItem(name: string): Promise<boolean> {\n if (this._lookerHostData && !this._lookerHostData.lookerVersion) {\n return Promise.reject(\n new Error(\n 'localStorageRemoveItem not supported by the current Looker host'\n )\n )\n }\n return this.sendAndReceive(ExtensionRequestType.LOCAL_STORAGE, {\n type: 'remove',\n name,\n })\n }\n\n async clipboardWrite(value: string): Promise<void> {\n const errorMessage = this.verifyLookerVersion('>=21.7')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.CLIPBOARD, {\n type: 'write',\n value,\n })\n }\n\n async userAttributeSetItem(name: string, value = ''): Promise<boolean> {\n // User attributes added in Looker version 7.13, updated in 7.15\n const errorMessage = this.verifyLookerVersion('>=7.15')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.USER_ATTRIBUTE, {\n type: 'set',\n name,\n value,\n })\n }\n\n async userAttributeGetItem(name: string): Promise<string | null> {\n // User attributes added in Looker version 7.13, updated in 7.15\n const errorMessage = this.verifyLookerVersion('>=7.15')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.USER_ATTRIBUTE, {\n type: 'get',\n name,\n })\n }\n\n async userAttributeResetItem(name: string): Promise<void> {\n // User attributes added in Looker version 7.13, updated in 7.15\n const errorMessage = this.verifyLookerVersion('>=7.15')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.USER_ATTRIBUTE, {\n type: 'reset',\n name,\n })\n }\n\n getContextData() {\n const errorMessage = this.verifyLookerVersion('>=7.13')\n if (errorMessage) {\n throw new Error(errorMessage)\n }\n if (this.contextData) {\n return JSON.parse(this.contextData)\n } else {\n return undefined\n }\n }\n\n async saveContextData(context: any): Promise<any> {\n const errorMessage = this.verifyLookerVersion('>=7.13')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n let contextData: string | undefined\n if (context) {\n try {\n contextData = JSON.stringify(context)\n } catch (err) {\n return Promise.reject(new Error('context cannot be serialized'))\n }\n } else {\n contextData = undefined\n }\n await this.sendAndReceive(ExtensionRequestType.CONTEXT_DATA, {\n type: 'save',\n contextData,\n })\n return this.getContextData()\n }\n\n async refreshContextData(): Promise<any> {\n const errorMessage = this.verifyLookerVersion('>=7.13')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n this.contextData = await this.sendAndReceive(\n ExtensionRequestType.CONTEXT_DATA,\n {\n type: 'refresh',\n }\n )\n return this.getContextData()\n }\n\n track(name: string, trackAction: string, attributes?: Record<string, any>) {\n this.send(ExtensionRequestType.TRACK_ACTION, {\n name,\n trackAction,\n attributes,\n })\n }\n\n error(errorEvent: ErrorEvent) {\n if (this._lookerHostData) {\n const { message, filename, lineno, colno, error } = errorEvent || {}\n this.send(ExtensionRequestType.ERROR_EVENT, {\n message,\n filename,\n lineno,\n colno,\n error: error && error.toString ? error.toString() : error,\n })\n } else {\n console.error(\n 'Unhandled error but Looker host connection not established',\n errorEvent\n )\n }\n }\n\n unloaded() {\n this.send(ExtensionRequestType.EXTENSION_UNLOADED, {})\n }\n\n createFetchProxy(\n baseUrl?: string,\n init?: FetchCustomParameters,\n responseBodyType?: FetchResponseBodyType\n ) {\n return new FetchProxyImpl(this, baseUrl, init, responseBodyType)\n }\n\n async fetchProxy(\n resource: string,\n init?: FetchCustomParameters,\n responseBodyType?: FetchResponseBodyType\n ) {\n // Fetch proxy support added to Looker 7.9\n const errorMessage = this.verifyLookerVersion('>=7.9')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.INVOKE_EXTERNAL_API, {\n type: 'fetch',\n payload: {\n resource,\n init,\n responseBodyType,\n },\n })\n }\n\n async serverProxy(\n resource: string,\n init?: FetchCustomParameters,\n responseBodyType?: FetchResponseBodyType\n ) {\n // Server proxy support added to Looker 7.11\n const errorMessage = this.verifyLookerVersion('>=7.11')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.INVOKE_EXTERNAL_API, {\n type: 'server-proxy',\n payload: {\n resource,\n init,\n responseBodyType,\n },\n })\n }\n\n async oauth2Authenticate(\n authEndpoint: string,\n authParameters: Record<string, string>,\n httpMethod = 'POST'\n ) {\n // oauth2Authenticate proxy support added to Looker 7.9\n let errorMessage = this.verifyLookerVersion('>=7.9')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n errorMessage = this.validateAuthParameters(authParameters)\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(\n ExtensionRequestType.INVOKE_EXTERNAL_API,\n {\n type: 'oauth2_authenticate',\n payload: {\n authEndpoint,\n authParameters,\n httpMethod,\n },\n },\n // Adding the signal disables the default timeout\n { signal: new AbortController().signal }\n )\n }\n\n async oauth2ExchangeCodeForToken(\n authEndpoint: string,\n authParameters: Record<string, string>\n ) {\n const errorMessage = this.verifyLookerVersion('>=7.11')\n if (errorMessage) {\n return Promise.reject(new Error(errorMessage))\n }\n return this.sendAndReceive(ExtensionRequestType.INVOKE_EXTERNAL_API, {\n type: 'oauth2_exchange_code',\n payload: {\n authEndpoint,\n authParameters,\n },\n })\n }\n\n private async sendAndReceive(\n type: string,\n payload?: any,\n options?: Options\n ): Promise<any> {\n if (!this._lookerHostData) {\n return Promise.reject(new Error('Looker host connection not established'))\n }\n const messagePayload = {\n type,\n payload,\n }\n const chattyPayload = options ? [messagePayload, options] : [messagePayload]\n return this.chattyHost\n .sendAndReceive(ExtensionEvent.EXTENSION_API_REQUEST, ...chattyPayload)\n .then((values) => values[0])\n }\n\n private send(type: string, payload?: any) {\n if (!this._lookerHostData) {\n throw new Error('Looker host connection not established')\n }\n this.chattyHost.send(ExtensionEvent.EXTENSION_API_REQUEST, {\n type,\n payload,\n })\n }\n\n private verifyLookerVersion(version: string): string | undefined {\n // Default version to 7.0 as that's the first Looker version that officially\n // supported extensions. Version 6.24 has some support for extensions but most\n // likely will fail before reaching this point\n const lookerVersion = this._lookerHostData\n ? this._lookerHostData.lookerVersion || '7.0'\n : '7.0'\n if (!this._lookerHostData || !intersects(version, lookerVersion, true)) {\n return `Extension requires Looker version ${version}, got ${lookerVersion}`\n }\n return undefined\n }\n\n private validateAuthParameters(authParameters: Record<string, string>) {\n if (!authParameters.client_id) {\n return 'client_id missing'\n }\n if (authParameters.redirect_uri) {\n return 'redirect_uri must NOT be included'\n }\n if (\n authParameters.response_type !== 'token' &&\n authParameters.response_type !== 'id_token' &&\n authParameters.response_type !== 'code'\n ) {\n return `invalid response_type, must be token, id_token or code, ${authParameters.response_type}`\n }\n return undefined\n }\n}\n"],"file":"extension_host_api.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@looker/extension-sdk",
3
- "version": "22.20.0",
3
+ "version": "22.20.1",
4
4
  "description": "Looker Extension SDK",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/esm/index.js",
@@ -39,9 +39,9 @@
39
39
  "@types/semver": "^7.3.4"
40
40
  },
41
41
  "dependencies": {
42
- "@looker/chatty": "^2.3.0",
43
- "@looker/sdk": "^22.20.0",
44
- "@looker/sdk-rtl": "^21.4.0",
42
+ "@looker/chatty": "2.3.9",
43
+ "@looker/sdk": "^22.20.1",
44
+ "@looker/sdk-rtl": "^21.5.0",
45
45
  "deepmerge": "^4.2.2",
46
46
  "readable-stream": "^3.4.0",
47
47
  "request": "^2.88.0",
@@ -52,5 +52,5 @@
52
52
  "Looker",
53
53
  "extension-sdk"
54
54
  ],
55
- "gitHead": "9c51de7916a40fd112b88db56f3ab9fc075a84d0"
55
+ "gitHead": "5545803533abe44ccef1f1b87e99d9f3e5bdc316"
56
56
  }