@looker/extension-sdk 23.10.0 → 23.12.1-alpha.1674

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.
Files changed (72) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +9 -1
  3. package/lib/connect/extension_host_api.d.ts +14 -3
  4. package/lib/connect/extension_host_api.js +83 -20
  5. package/lib/connect/extension_host_api.js.map +1 -1
  6. package/lib/connect/global_listener.js +3 -2
  7. package/lib/connect/global_listener.js.map +1 -1
  8. package/lib/connect/index.d.ts +2 -0
  9. package/lib/connect/index.js +25 -1
  10. package/lib/connect/index.js.map +1 -1
  11. package/lib/connect/tile/index.d.ts +1 -0
  12. package/lib/connect/tile/index.js +17 -0
  13. package/lib/connect/tile/index.js.map +1 -0
  14. package/lib/connect/tile/tile_sdk.d.ts +24 -0
  15. package/lib/connect/tile/tile_sdk.js +129 -0
  16. package/lib/connect/tile/tile_sdk.js.map +1 -0
  17. package/lib/connect/tile/types.d.ts +88 -0
  18. package/lib/connect/tile/types.js +14 -0
  19. package/lib/connect/tile/types.js.map +1 -0
  20. package/lib/connect/types.d.ts +52 -7
  21. package/lib/connect/types.js +23 -1
  22. package/lib/connect/types.js.map +1 -1
  23. package/lib/connect/visualization/index.d.ts +2 -0
  24. package/lib/connect/visualization/index.js +28 -0
  25. package/lib/connect/visualization/index.js.map +1 -0
  26. package/lib/connect/visualization/types.d.ts +66 -0
  27. package/lib/connect/visualization/types.js +2 -0
  28. package/lib/connect/visualization/types.js.map +1 -0
  29. package/lib/connect/visualization/visualization_sdk.d.ts +37 -0
  30. package/lib/connect/visualization/visualization_sdk.js +124 -0
  31. package/lib/connect/visualization/visualization_sdk.js.map +1 -0
  32. package/lib/esm/connect/extension_host_api.js +83 -20
  33. package/lib/esm/connect/extension_host_api.js.map +1 -1
  34. package/lib/esm/connect/global_listener.js +3 -2
  35. package/lib/esm/connect/global_listener.js.map +1 -1
  36. package/lib/esm/connect/index.js +25 -1
  37. package/lib/esm/connect/index.js.map +1 -1
  38. package/lib/esm/connect/tile/index.js +17 -0
  39. package/lib/esm/connect/tile/index.js.map +1 -0
  40. package/lib/esm/connect/tile/tile_sdk.js +129 -0
  41. package/lib/esm/connect/tile/tile_sdk.js.map +1 -0
  42. package/lib/esm/connect/tile/types.js +14 -0
  43. package/lib/esm/connect/tile/types.js.map +1 -0
  44. package/lib/esm/connect/types.js +23 -1
  45. package/lib/esm/connect/types.js.map +1 -1
  46. package/lib/esm/connect/visualization/index.js +28 -0
  47. package/lib/esm/connect/visualization/index.js.map +1 -0
  48. package/lib/esm/connect/visualization/types.js +2 -0
  49. package/lib/esm/connect/visualization/types.js.map +1 -0
  50. package/lib/esm/connect/visualization/visualization_sdk.js +124 -0
  51. package/lib/esm/connect/visualization/visualization_sdk.js.map +1 -0
  52. package/lib/esm/index.js +34 -1
  53. package/lib/esm/index.js.map +1 -1
  54. package/lib/esm/util/errors.js +9 -0
  55. package/lib/esm/util/errors.js.map +1 -0
  56. package/lib/esm/util/index.js +28 -0
  57. package/lib/esm/util/index.js.map +1 -0
  58. package/lib/esm/util/logger.js +21 -0
  59. package/lib/esm/util/logger.js.map +1 -0
  60. package/lib/index.d.ts +3 -0
  61. package/lib/index.js +34 -1
  62. package/lib/index.js.map +1 -1
  63. package/lib/util/errors.d.ts +1 -0
  64. package/lib/util/errors.js +9 -0
  65. package/lib/util/errors.js.map +1 -0
  66. package/lib/util/index.d.ts +2 -0
  67. package/lib/util/index.js +28 -0
  68. package/lib/util/index.js.map +1 -0
  69. package/lib/util/logger.d.ts +2 -0
  70. package/lib/util/logger.js +21 -0
  71. package/lib/util/logger.js.map +1 -0
  72. package/package.json +3 -3
@@ -0,0 +1,66 @@
1
+ import type { Row } from '../tile';
2
+ export declare type VisualizationDataReceivedCallback = (visualizationData: RawVisualizationData) => void;
3
+ export interface RawVisualizationData {
4
+ visConfig: RawVisConfig;
5
+ queryResponse: RawVisQueryResponse;
6
+ }
7
+ export interface RawVisConfig {
8
+ [key: string]: RawVisConfigValue;
9
+ }
10
+ export declare type RawVisConfigValue = any;
11
+ export interface RawVisQueryResponse {
12
+ [key: string]: any;
13
+ data: RawVisData;
14
+ fields: {
15
+ [key: string]: any[];
16
+ };
17
+ pivots: RawPivotConfig[];
18
+ }
19
+ export declare type RawVisData = Row[];
20
+ export interface RawPivotConfig {
21
+ key: string;
22
+ is_total: boolean;
23
+ data: {
24
+ [key: string]: string;
25
+ };
26
+ metadata: {
27
+ [key: string]: {
28
+ [key: string]: string;
29
+ };
30
+ };
31
+ }
32
+ export interface Measure extends RawVisConfig {
33
+ [key: string]: any;
34
+ }
35
+ export interface Dimension extends RawVisConfig {
36
+ [key: string]: any;
37
+ }
38
+ export interface TableCalculation {
39
+ [key: string]: any;
40
+ }
41
+ export interface PivotConfig extends RawPivotConfig {
42
+ [key: string]: any;
43
+ }
44
+ export interface VisualizationConfig {
45
+ queryFieldMeasures: Measure[];
46
+ queryFieldDimensions: Dimension[];
47
+ queryFieldTableCalculations: TableCalculation[];
48
+ queryFieldPivots: PivotConfig[];
49
+ visConfig: RawVisConfig;
50
+ }
51
+ export interface QueryResponse {
52
+ data: Row[];
53
+ fieldMeasures: Measure[];
54
+ fieldDimensions: Dimension[];
55
+ fieldTableCalculations: TableCalculation[];
56
+ fieldPivots: PivotConfig[];
57
+ fieldMeasureLike: Measure[];
58
+ fieldDimensionLike: Dimension[];
59
+ }
60
+ export interface VisualizationSDK {
61
+ visualizationData?: RawVisualizationData;
62
+ visConfig: VisualizationConfig;
63
+ queryResponse: QueryResponse;
64
+ updateVisData: (rawVisData: RawVisualizationData) => void;
65
+ configureVisualization: (options: RawVisConfig) => void;
66
+ }
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/connect/visualization/types.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2022 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 { Row } from '../tile'\n\n/**\n * Callback that is invoked when visualization data is received\n * <code>Looker >=22.8</code>\n */\nexport type VisualizationDataReceivedCallback = (\n visualizationData: RawVisualizationData\n) => void\n\n/**\n * Raw visualization data. Basic typing for configuration data\n * and query data.\n * <code>Looker >=22.8</code>\n */\nexport interface RawVisualizationData {\n visConfig: RawVisConfig\n queryResponse: RawVisQueryResponse\n}\n\n/**\n * Visualization configuration. Configuration data set in the\n * explore.\n * <code>Looker >=22.8</code>\n */\nexport interface RawVisConfig {\n [key: string]: RawVisConfigValue\n}\n\nexport type RawVisConfigValue = any\n\n/**\n * Query response data\n * <code>Looker >=22.8</code>\n */\nexport interface RawVisQueryResponse {\n [key: string]: any\n data: RawVisData\n fields: {\n [key: string]: any[]\n }\n pivots: RawPivotConfig[]\n}\n\nexport type RawVisData = Row[]\n\nexport interface RawPivotConfig {\n key: string\n is_total: boolean\n data: { [key: string]: string }\n metadata: { [key: string]: { [key: string]: string } }\n}\n\nexport interface Measure extends RawVisConfig {\n [key: string]: any\n}\n\nexport interface Dimension extends RawVisConfig {\n [key: string]: any\n}\n\nexport interface TableCalculation {\n [key: string]: any\n}\n\nexport interface PivotConfig extends RawPivotConfig {\n [key: string]: any\n}\n\nexport interface VisualizationConfig {\n queryFieldMeasures: Measure[]\n queryFieldDimensions: Dimension[]\n queryFieldTableCalculations: TableCalculation[]\n queryFieldPivots: PivotConfig[]\n visConfig: RawVisConfig\n}\n\nexport interface QueryResponse {\n data: Row[]\n fieldMeasures: Measure[]\n fieldDimensions: Dimension[]\n fieldTableCalculations: TableCalculation[]\n fieldPivots: PivotConfig[]\n fieldMeasureLike: Measure[]\n fieldDimensionLike: Dimension[]\n}\n\n/**\n * Extension visualization SDK\n */\nexport interface VisualizationSDK {\n visualizationData?: RawVisualizationData\n visConfig: VisualizationConfig\n queryResponse: QueryResponse\n updateVisData: (rawVisData: RawVisualizationData) => void\n configureVisualization: (options: RawVisConfig) => void\n}\n"],"mappings":""}
@@ -0,0 +1,37 @@
1
+ import type { ExtensionHostApiImpl } from '../extension_host_api';
2
+ import type { Row } from '../tile';
3
+ import type { VisualizationSDK, RawVisualizationData, RawVisConfig, VisualizationConfig, QueryResponse, Measure, Dimension, TableCalculation, PivotConfig, RawVisQueryResponse } from './types';
4
+ declare class QueryResponseImpl implements QueryResponse {
5
+ _queryResponse?: RawVisQueryResponse;
6
+ constructor(queryResponse?: RawVisQueryResponse);
7
+ update(queryResponse: RawVisQueryResponse): void;
8
+ get fieldMeasures(): Measure[];
9
+ get fieldDimensions(): Dimension[];
10
+ get fieldTableCalculations(): TableCalculation[];
11
+ get fieldPivots(): PivotConfig[];
12
+ get fieldMeasureLike(): Measure[];
13
+ get fieldDimensionLike(): Dimension[];
14
+ get data(): Row[];
15
+ }
16
+ declare class VisualizationConfigImpl implements VisualizationConfig {
17
+ _visConfig?: RawVisConfig;
18
+ constructor(visConfig?: RawVisConfig);
19
+ update(visConfig: RawVisConfig): void;
20
+ get visConfig(): RawVisConfig;
21
+ get queryFieldMeasures(): Measure[];
22
+ get queryFieldDimensions(): Dimension[];
23
+ get queryFieldTableCalculations(): TableCalculation[];
24
+ get queryFieldPivots(): PivotConfig[];
25
+ }
26
+ export declare class VisualizationSDKImpl implements VisualizationSDK {
27
+ hostApi: ExtensionHostApiImpl;
28
+ visualizationData?: RawVisualizationData;
29
+ _visConfig?: VisualizationConfigImpl;
30
+ _queryResponse?: QueryResponseImpl;
31
+ constructor(hostApi: ExtensionHostApiImpl);
32
+ updateVisData(visualizationData: RawVisualizationData): void;
33
+ configureVisualization(options: RawVisConfig): void;
34
+ get visConfig(): VisualizationConfig;
35
+ get queryResponse(): QueryResponse;
36
+ }
37
+ export {};
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.VisualizationSDKImpl = void 0;
7
+ var _errors = require("../../util/errors");
8
+ var _types = require("../types");
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); }
12
+ class QueryResponseImpl {
13
+ constructor(queryResponse) {
14
+ _defineProperty(this, "_queryResponse", void 0);
15
+ this._queryResponse = queryResponse;
16
+ }
17
+ update(queryResponse) {
18
+ this._queryResponse = queryResponse;
19
+ }
20
+ get fieldMeasures() {
21
+ var _this$_queryResponse, _this$_queryResponse$;
22
+ return ((_this$_queryResponse = this._queryResponse) === null || _this$_queryResponse === void 0 ? void 0 : (_this$_queryResponse$ = _this$_queryResponse.fields) === null || _this$_queryResponse$ === void 0 ? void 0 : _this$_queryResponse$.measures) || [];
23
+ }
24
+ get fieldDimensions() {
25
+ var _this$_queryResponse2, _this$_queryResponse3;
26
+ return ((_this$_queryResponse2 = this._queryResponse) === null || _this$_queryResponse2 === void 0 ? void 0 : (_this$_queryResponse3 = _this$_queryResponse2.fields) === null || _this$_queryResponse3 === void 0 ? void 0 : _this$_queryResponse3.dimensions) || [];
27
+ }
28
+ get fieldTableCalculations() {
29
+ var _this$_queryResponse4, _this$_queryResponse5;
30
+ return ((_this$_queryResponse4 = this._queryResponse) === null || _this$_queryResponse4 === void 0 ? void 0 : (_this$_queryResponse5 = _this$_queryResponse4.fields) === null || _this$_queryResponse5 === void 0 ? void 0 : _this$_queryResponse5.table_calculations) || [];
31
+ }
32
+ get fieldPivots() {
33
+ var _this$_queryResponse6, _this$_queryResponse7;
34
+ return ((_this$_queryResponse6 = this._queryResponse) === null || _this$_queryResponse6 === void 0 ? void 0 : (_this$_queryResponse7 = _this$_queryResponse6.fields) === null || _this$_queryResponse7 === void 0 ? void 0 : _this$_queryResponse7.pivots) || [];
35
+ }
36
+ get fieldMeasureLike() {
37
+ var _this$_queryResponse8, _this$_queryResponse9;
38
+ return ((_this$_queryResponse8 = this._queryResponse) === null || _this$_queryResponse8 === void 0 ? void 0 : (_this$_queryResponse9 = _this$_queryResponse8.fields) === null || _this$_queryResponse9 === void 0 ? void 0 : _this$_queryResponse9.measure_like) || [];
39
+ }
40
+ get fieldDimensionLike() {
41
+ var _this$_queryResponse10, _this$_queryResponse11;
42
+ return ((_this$_queryResponse10 = this._queryResponse) === null || _this$_queryResponse10 === void 0 ? void 0 : (_this$_queryResponse11 = _this$_queryResponse10.fields) === null || _this$_queryResponse11 === void 0 ? void 0 : _this$_queryResponse11.dimension_like) || [];
43
+ }
44
+ get data() {
45
+ var _this$_queryResponse12;
46
+ return ((_this$_queryResponse12 = this._queryResponse) === null || _this$_queryResponse12 === void 0 ? void 0 : _this$_queryResponse12.data) || [];
47
+ }
48
+ }
49
+ class VisualizationConfigImpl {
50
+ constructor(visConfig) {
51
+ _defineProperty(this, "_visConfig", void 0);
52
+ this._visConfig = visConfig;
53
+ }
54
+ update(visConfig) {
55
+ this._visConfig = visConfig;
56
+ }
57
+ get visConfig() {
58
+ return this._visConfig || {};
59
+ }
60
+ get queryFieldMeasures() {
61
+ var _this$_visConfig, _this$_visConfig$quer;
62
+ return ((_this$_visConfig = this._visConfig) === null || _this$_visConfig === void 0 ? void 0 : (_this$_visConfig$quer = _this$_visConfig.query_fields) === null || _this$_visConfig$quer === void 0 ? void 0 : _this$_visConfig$quer.measures) || [];
63
+ }
64
+ get queryFieldDimensions() {
65
+ var _this$_visConfig2, _this$_visConfig2$que;
66
+ return ((_this$_visConfig2 = this._visConfig) === null || _this$_visConfig2 === void 0 ? void 0 : (_this$_visConfig2$que = _this$_visConfig2.query_fields) === null || _this$_visConfig2$que === void 0 ? void 0 : _this$_visConfig2$que.dimensions) || [];
67
+ }
68
+ get queryFieldTableCalculations() {
69
+ var _this$_visConfig3, _this$_visConfig3$que;
70
+ return ((_this$_visConfig3 = this._visConfig) === null || _this$_visConfig3 === void 0 ? void 0 : (_this$_visConfig3$que = _this$_visConfig3.query_fields) === null || _this$_visConfig3$que === void 0 ? void 0 : _this$_visConfig3$que.table_calculations) || [];
71
+ }
72
+ get queryFieldPivots() {
73
+ var _this$_visConfig4, _this$_visConfig4$que;
74
+ return ((_this$_visConfig4 = this._visConfig) === null || _this$_visConfig4 === void 0 ? void 0 : (_this$_visConfig4$que = _this$_visConfig4.query_fields) === null || _this$_visConfig4$que === void 0 ? void 0 : _this$_visConfig4$que.pivots) || [];
75
+ }
76
+ }
77
+ class VisualizationSDKImpl {
78
+ constructor(hostApi) {
79
+ _defineProperty(this, "hostApi", void 0);
80
+ _defineProperty(this, "visualizationData", void 0);
81
+ _defineProperty(this, "_visConfig", void 0);
82
+ _defineProperty(this, "_queryResponse", void 0);
83
+ this.hostApi = hostApi;
84
+ }
85
+ updateVisData(visualizationData) {
86
+ if (this.hostApi.isDashboardMountSupported) {
87
+ this.visualizationData = visualizationData;
88
+ if (this.visConfig && this._visConfig) {
89
+ this._visConfig.update(this.visualizationData.visConfig);
90
+ this.hostApi.send(_types.ExtensionRequestType.VIS_CONFIG_UPDATE, {
91
+ updatedConfig: this.visualizationData.visConfig
92
+ });
93
+ }
94
+ if (this.queryResponse && this._queryResponse) {
95
+ this._queryResponse.update(this.visualizationData.queryResponse);
96
+ }
97
+ }
98
+ }
99
+ configureVisualization(options) {
100
+ if (this.hostApi.isDashboardMountSupported) {
101
+ this.hostApi.send(_types.ExtensionRequestType.VIS_DEFAULT_CONFIG, {
102
+ options
103
+ });
104
+ } else {
105
+ throw _errors.NOT_DASHBOARD_MOUNT_NOT_SUPPORTED_ERROR;
106
+ }
107
+ }
108
+ get visConfig() {
109
+ if (!this._visConfig) {
110
+ var _this$visualizationDa;
111
+ this._visConfig = new VisualizationConfigImpl((_this$visualizationDa = this.visualizationData) === null || _this$visualizationDa === void 0 ? void 0 : _this$visualizationDa.visConfig);
112
+ }
113
+ return this._visConfig;
114
+ }
115
+ get queryResponse() {
116
+ if (!this._queryResponse) {
117
+ var _this$visualizationDa2;
118
+ this._queryResponse = new QueryResponseImpl((_this$visualizationDa2 = this.visualizationData) === null || _this$visualizationDa2 === void 0 ? void 0 : _this$visualizationDa2.queryResponse);
119
+ }
120
+ return this._queryResponse;
121
+ }
122
+ }
123
+ exports.VisualizationSDKImpl = VisualizationSDKImpl;
124
+ //# sourceMappingURL=visualization_sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visualization_sdk.js","names":["_errors","require","_types","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","QueryResponseImpl","constructor","queryResponse","_queryResponse","update","fieldMeasures","_this$_queryResponse","_this$_queryResponse$","fields","measures","fieldDimensions","_this$_queryResponse2","_this$_queryResponse3","dimensions","fieldTableCalculations","_this$_queryResponse4","_this$_queryResponse5","table_calculations","fieldPivots","_this$_queryResponse6","_this$_queryResponse7","pivots","fieldMeasureLike","_this$_queryResponse8","_this$_queryResponse9","measure_like","fieldDimensionLike","_this$_queryResponse10","_this$_queryResponse11","dimension_like","data","_this$_queryResponse12","VisualizationConfigImpl","visConfig","_visConfig","queryFieldMeasures","_this$_visConfig","_this$_visConfig$quer","query_fields","queryFieldDimensions","_this$_visConfig2","_this$_visConfig2$que","queryFieldTableCalculations","_this$_visConfig3","_this$_visConfig3$que","queryFieldPivots","_this$_visConfig4","_this$_visConfig4$que","VisualizationSDKImpl","hostApi","updateVisData","visualizationData","isDashboardMountSupported","send","ExtensionRequestType","VIS_CONFIG_UPDATE","updatedConfig","configureVisualization","options","VIS_DEFAULT_CONFIG","NOT_DASHBOARD_MOUNT_NOT_SUPPORTED_ERROR","_this$visualizationDa","_this$visualizationDa2","exports"],"sources":["../../../src/connect/visualization/visualization_sdk.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2022 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 { NOT_DASHBOARD_MOUNT_NOT_SUPPORTED_ERROR } from '../../util/errors'\nimport type { ExtensionHostApiImpl } from '../extension_host_api'\nimport { ExtensionRequestType } from '../types'\nimport type { Row } from '../tile'\nimport type {\n VisualizationSDK,\n RawVisualizationData,\n RawVisConfig,\n VisualizationConfig,\n QueryResponse,\n Measure,\n Dimension,\n TableCalculation,\n PivotConfig,\n RawVisQueryResponse,\n} from './types'\n\nclass QueryResponseImpl implements QueryResponse {\n _queryResponse?: RawVisQueryResponse\n\n constructor(queryResponse?: RawVisQueryResponse) {\n this._queryResponse = queryResponse\n }\n\n update(queryResponse: RawVisQueryResponse) {\n this._queryResponse = queryResponse\n }\n\n get fieldMeasures(): Measure[] {\n return this._queryResponse?.fields?.measures || []\n }\n\n get fieldDimensions(): Dimension[] {\n return this._queryResponse?.fields?.dimensions || []\n }\n\n get fieldTableCalculations(): TableCalculation[] {\n return this._queryResponse?.fields?.table_calculations || []\n }\n\n get fieldPivots(): PivotConfig[] {\n return this._queryResponse?.fields?.pivots || []\n }\n\n get fieldMeasureLike(): Measure[] {\n return this._queryResponse?.fields?.measure_like || []\n }\n\n get fieldDimensionLike(): Dimension[] {\n return this._queryResponse?.fields?.dimension_like || []\n }\n\n get data(): Row[] {\n return this._queryResponse?.data || []\n }\n}\n\nclass VisualizationConfigImpl implements VisualizationConfig {\n _visConfig?: RawVisConfig\n\n constructor(visConfig?: RawVisConfig) {\n this._visConfig = visConfig\n }\n\n update(visConfig: RawVisConfig) {\n this._visConfig = visConfig\n }\n\n get visConfig(): RawVisConfig {\n return this._visConfig || {}\n }\n\n get queryFieldMeasures(): Measure[] {\n return this._visConfig?.query_fields?.measures || []\n }\n\n get queryFieldDimensions(): Dimension[] {\n return this._visConfig?.query_fields?.dimensions || []\n }\n\n get queryFieldTableCalculations(): TableCalculation[] {\n return this._visConfig?.query_fields?.table_calculations || []\n }\n\n get queryFieldPivots(): PivotConfig[] {\n return this._visConfig?.query_fields?.pivots || []\n }\n}\n\nexport class VisualizationSDKImpl implements VisualizationSDK {\n hostApi: ExtensionHostApiImpl\n visualizationData?: RawVisualizationData\n _visConfig?: VisualizationConfigImpl\n _queryResponse?: QueryResponseImpl\n\n constructor(hostApi: ExtensionHostApiImpl) {\n this.hostApi = hostApi\n }\n\n updateVisData(visualizationData: RawVisualizationData) {\n // Ignore update messages if dashboard mounts not supported.\n // Should never happen.\n if (this.hostApi.isDashboardMountSupported) {\n this.visualizationData = visualizationData\n if (this.visConfig && this._visConfig) {\n this._visConfig.update(this.visualizationData.visConfig)\n this.hostApi.send(ExtensionRequestType.VIS_CONFIG_UPDATE, {\n updatedConfig: this.visualizationData.visConfig,\n })\n }\n if (this.queryResponse && this._queryResponse) {\n this._queryResponse.update(this.visualizationData.queryResponse)\n }\n }\n }\n\n configureVisualization(options: RawVisConfig): void {\n if (this.hostApi.isDashboardMountSupported) {\n this.hostApi.send(ExtensionRequestType.VIS_DEFAULT_CONFIG, { options })\n } else {\n throw NOT_DASHBOARD_MOUNT_NOT_SUPPORTED_ERROR\n }\n }\n\n get visConfig(): VisualizationConfig {\n if (!this._visConfig) {\n this._visConfig = new VisualizationConfigImpl(\n this.visualizationData?.visConfig\n )\n }\n return this._visConfig\n }\n\n get queryResponse(): QueryResponse {\n if (!this._queryResponse) {\n this._queryResponse = new QueryResponseImpl(\n this.visualizationData?.queryResponse\n )\n }\n return this._queryResponse\n }\n}\n"],"mappings":"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"}
@@ -5,6 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.ExtensionHostApiImpl = exports.EXTENSION_SDK_VERSION = void 0;
7
7
  var _intersects = _interopRequireDefault(require("semver/ranges/intersects"));
8
+ var _util = require("../util");
9
+ var _visualization_sdk = require("./visualization/visualization_sdk");
10
+ var _tile_sdk = require("./tile/tile_sdk");
8
11
  var _fetch_proxy = require("./fetch_proxy");
9
12
  var _types = require("./types");
10
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -22,55 +25,110 @@ class ExtensionHostApiImpl {
22
25
  _defineProperty(this, "chattyHost", void 0);
23
26
  _defineProperty(this, "setInitialRoute", void 0);
24
27
  _defineProperty(this, "hostChangedRoute", void 0);
28
+ _defineProperty(this, "visualizationDataReceivedCallback", void 0);
29
+ _defineProperty(this, "tileHostDataChangedCallback", void 0);
30
+ _defineProperty(this, "_visualizationSDK", void 0);
31
+ _defineProperty(this, "_tileSDK", void 0);
25
32
  _defineProperty(this, "contextData", void 0);
26
33
  this._configuration = configuration;
27
34
  var {
28
35
  chattyHost,
29
36
  setInitialRoute,
30
- hostChangedRoute
37
+ hostChangedRoute,
38
+ visualizationDataReceivedCallback,
39
+ tileHostDataChangedCallback
31
40
  } = this._configuration;
32
41
  this.chattyHost = chattyHost;
33
42
  this.setInitialRoute = setInitialRoute;
34
43
  this.hostChangedRoute = hostChangedRoute;
44
+ this.visualizationDataReceivedCallback = visualizationDataReceivedCallback;
45
+ this.tileHostDataChangedCallback = tileHostDataChangedCallback;
46
+ }
47
+ get isDashboardMountSupported() {
48
+ var _this$_lookerHostData, _this$lookerHostData, _this$lookerHostData2, _this$lookerHostData3;
49
+ return !!((_this$_lookerHostData = this._lookerHostData) !== null && _this$_lookerHostData !== void 0 && _this$_lookerHostData.extensionDashboardTileEnabled) && (((_this$lookerHostData = this.lookerHostData) === null || _this$lookerHostData === void 0 ? void 0 : _this$lookerHostData.mountPoint) === _types.MountPoint.dashboardTile || ((_this$lookerHostData2 = this.lookerHostData) === null || _this$lookerHostData2 === void 0 ? void 0 : _this$lookerHostData2.mountPoint) === _types.MountPoint.dashboardVisualization || ((_this$lookerHostData3 = this.lookerHostData) === null || _this$lookerHostData3 === void 0 ? void 0 : _this$lookerHostData3.mountPoint) === _types.MountPoint.dashboardTilePopup);
50
+ }
51
+ get visualizationSDK() {
52
+ if (!this._visualizationSDK) {
53
+ this._visualizationSDK = new _visualization_sdk.VisualizationSDKImpl(this);
54
+ }
55
+ return this._visualizationSDK;
56
+ }
57
+ get tileSDK() {
58
+ if (!this._tileSDK) {
59
+ this._tileSDK = new _tile_sdk.TileSDKImpl(this);
60
+ }
61
+ return this._tileSDK;
35
62
  }
36
63
  get lookerHostData() {
37
64
  return this._lookerHostData;
38
65
  }
39
66
  handleNotification(message) {
40
67
  var {
41
- type,
42
- payload
43
- } = message || {};
68
+ type
69
+ } = message;
44
70
  switch (type) {
45
71
  case _types.ExtensionNotificationType.ROUTE_CHANGED:
46
- if (this.hostChangedRoute && payload) {
72
+ {
47
73
  var {
48
- route: _route,
49
- routeState: _routeState
50
- } = payload;
51
- if (_route) {
52
- this.hostChangedRoute(_route, _routeState);
74
+ payload
75
+ } = message;
76
+ if (this.hostChangedRoute && payload) {
77
+ var {
78
+ route: _route,
79
+ routeState: _routeState
80
+ } = payload;
81
+ if (_route) {
82
+ this.hostChangedRoute(_route, _routeState);
83
+ }
53
84
  }
85
+ return undefined;
86
+ }
87
+ case _types.ExtensionNotificationType.VISUALIZATION_DATA:
88
+ {
89
+ var {
90
+ payload: _payload
91
+ } = message;
92
+ this.visualizationSDK.updateVisData(_payload);
93
+ if (this.visualizationDataReceivedCallback) {
94
+ this.visualizationDataReceivedCallback(_payload);
95
+ }
96
+ return undefined;
97
+ }
98
+ case _types.ExtensionNotificationType.TILE_HOST_DATA:
99
+ {
100
+ var {
101
+ payload: _payload2
102
+ } = message;
103
+ this.tileSDK.tileHostDataChanged(_payload2);
104
+ if (this.tileHostDataChangedCallback) {
105
+ this.tileHostDataChangedCallback(_payload2);
106
+ }
107
+ return undefined;
54
108
  }
55
- return undefined;
56
109
  case _types.ExtensionNotificationType.INITIALIZE:
57
110
  {
58
- this._lookerHostData = payload;
59
- if (this._lookerHostData) {
60
- this.contextData = this._lookerHostData.contextData;
111
+ var {
112
+ payload: _payload3
113
+ } = message;
114
+ var lookerHostData = _payload3 || {};
115
+ if (!lookerHostData.mountPoint) {
116
+ lookerHostData.mountPoint = _types.MountPoint.standalone;
61
117
  }
118
+ this._lookerHostData = lookerHostData;
119
+ this.contextData = lookerHostData.contextData;
62
120
  var errorMessage;
63
- if (this._configuration.requiredLookerVersion && this._lookerHostData && this._lookerHostData.lookerVersion) {
121
+ if (this._configuration.requiredLookerVersion && lookerHostData.lookerVersion) {
64
122
  errorMessage = this.verifyLookerVersion(this._configuration.requiredLookerVersion);
65
123
  if (errorMessage) {
66
- console.error(errorMessage);
124
+ (0, _util.logError)(errorMessage);
67
125
  }
68
126
  }
69
- if (this.setInitialRoute && payload) {
127
+ if (this.setInitialRoute && _payload3) {
70
128
  var {
71
129
  route: _route2,
72
130
  routeState: _routeState2
73
- } = payload;
131
+ } = _payload3;
74
132
  if (_route2) {
75
133
  this.setInitialRoute(_route2, _routeState2);
76
134
  }
@@ -81,7 +139,7 @@ class ExtensionHostApiImpl {
81
139
  };
82
140
  }
83
141
  default:
84
- console.error('Unrecognized extension notification', message);
142
+ (0, _util.logError)('Unrecognized extension notification', message);
85
143
  throw new Error("Unrecognized extension notification type ".concat(type));
86
144
  }
87
145
  }
@@ -324,7 +382,7 @@ class ExtensionHostApiImpl {
324
382
  error: error && error.toString ? error.toString() : error
325
383
  });
326
384
  } else {
327
- console.error('Unhandled error but Looker host connection not established', errorEvent);
385
+ (0, _util.logError)('Unhandled error but Looker host connection not established', errorEvent);
328
386
  }
329
387
  }
330
388
  unloaded() {
@@ -408,6 +466,11 @@ class ExtensionHostApiImpl {
408
466
  });
409
467
  })();
410
468
  }
469
+ rendered(failureMessage) {
470
+ this.send(_types.ExtensionRequestType.RENDERED, {
471
+ failureMessage
472
+ });
473
+ }
411
474
  sendAndReceive(type, payload, options) {
412
475
  var _this17 = this;
413
476
  return _asyncToGenerator(function* () {
@@ -1 +1 @@
1
- {"version":3,"file":"extension_host_api.js","names":["_intersects","_interopRequireDefault","require","_fetch_proxy","_types","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_defineProperty","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","res","call","TypeError","Number","EXTENSION_SDK_VERSION","exports","ExtensionHostApiImpl","constructor","configuration","_configuration","chattyHost","setInitialRoute","hostChangedRoute","lookerHostData","_lookerHostData","handleNotification","message","type","payload","ExtensionNotificationType","ROUTE_CHANGED","route","routeState","INITIALIZE","contextData","errorMessage","requiredLookerVersion","lookerVersion","verifyLookerVersion","console","extensionSdkVersion","Error","concat","createSecretKeyTag","keyName","match","extensionId","replace","verifyHostConnection","_this","sendAndReceive","ExtensionRequestType","VERIFY_HOST","invokeCoreSdk","httpMethod","path","params","body","authenticator","options","apiVersion","_this2","INVOKE_CORE_SDK","invokeCoreSdkRaw","_this3","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","_arguments","_this4","length","LOCAL_STORAGE","localStorageGetItem","_this5","localStorageRemoveItem","_this6","clipboardWrite","_this7","CLIPBOARD","userAttributeSetItem","_arguments2","_this8","USER_ATTRIBUTE","userAttributeGetItem","_this9","userAttributeResetItem","_this10","getContextData","JSON","parse","saveContextData","context","_this11","stringify","CONTEXT_DATA","refreshContextData","_this12","track","trackAction","attributes","TRACK_ACTION","errorEvent","filename","lineno","colno","ERROR_EVENT","toString","unloaded","EXTENSION_UNLOADED","createFetchProxy","baseUrl","init","responseBodyType","FetchProxyImpl","fetchProxy","resource","_this13","INVOKE_EXTERNAL_API","serverProxy","_this14","oauth2Authenticate","authEndpoint","authParameters","_arguments3","_this15","validateAuthParameters","signal","AbortController","oauth2ExchangeCodeForToken","_this16","_this17","messagePayload","chattyPayload","ExtensionEvent","EXTENSION_API_REQUEST","values","version","intersects","client_id","redirect_uri","response_type"],"sources":["../../../src/connect/extension_host_api.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 { 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"],"mappings":";;;;;;AA2BA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAYA,IAAAE,MAAA,GAAAF,OAAA;AAIgB,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,mBAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,EAAAC,GAAA,EAAAC,GAAA,cAAAC,IAAA,GAAAP,GAAA,CAAAK,GAAA,EAAAC,GAAA,OAAAE,KAAA,GAAAD,IAAA,CAAAC,KAAA,WAAAC,KAAA,IAAAP,MAAA,CAAAO,KAAA,iBAAAF,IAAA,CAAAG,IAAA,IAAAT,OAAA,CAAAO,KAAA,YAAAG,OAAA,CAAAV,OAAA,CAAAO,KAAA,EAAAI,IAAA,CAAAT,KAAA,EAAAC,MAAA;AAAA,SAAAS,kBAAAC,EAAA,6BAAAC,IAAA,SAAAC,IAAA,GAAAC,SAAA,aAAAN,OAAA,WAAAV,OAAA,EAAAC,MAAA,QAAAF,GAAA,GAAAc,EAAA,CAAAI,KAAA,CAAAH,IAAA,EAAAC,IAAA,YAAAb,MAAAK,KAAA,IAAAT,kBAAA,CAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,UAAAI,KAAA,cAAAJ,OAAAe,GAAA,IAAApB,kBAAA,CAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,WAAAe,GAAA,KAAAhB,KAAA,CAAAiB,SAAA;AAAA,SAAAC,gBAAAzB,GAAA,EAAAS,GAAA,EAAAG,KAAA,IAAAH,GAAA,GAAAiB,cAAA,CAAAjB,GAAA,OAAAA,GAAA,IAAAT,GAAA,IAAA2B,MAAA,CAAAC,cAAA,CAAA5B,GAAA,EAAAS,GAAA,IAAAG,KAAA,EAAAA,KAAA,EAAAiB,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAA/B,GAAA,CAAAS,GAAA,IAAAG,KAAA,WAAAZ,GAAA;AAAA,SAAA0B,eAAAhB,GAAA,QAAAD,GAAA,GAAAuB,YAAA,CAAAtB,GAAA,2BAAAD,GAAA,gBAAAA,GAAA,GAAAwB,MAAA,CAAAxB,GAAA;AAAA,SAAAuB,aAAAE,KAAA,EAAAC,IAAA,eAAAD,KAAA,iBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAG,MAAA,CAAAC,WAAA,OAAAF,IAAA,KAAAZ,SAAA,QAAAe,GAAA,GAAAH,IAAA,CAAAI,IAAA,CAAAN,KAAA,EAAAC,IAAA,2BAAAI,GAAA,sBAAAA,GAAA,YAAAE,SAAA,4DAAAN,IAAA,gBAAAF,MAAA,GAAAS,MAAA,EAAAR,KAAA;AAET,IAAMS,qBAAqB,GAAG,QAAQ;AAAAC,OAAA,CAAAD,qBAAA,GAAAA,qBAAA;AAEtC,MAAME,oBAAoB,CAA6B;EAQ5DC,WAAWA,CAACC,aAA4C,EAAE;IAAAtB,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACxD,IAAI,CAACuB,cAAc,GAAGD,aAAa;IACnC,IAAM;MAAEE,UAAU;MAAEC,eAAe;MAAEC;IAAiB,CAAC,GACrD,IAAI,CAACH,cAAc;IACrB,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACC,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;EAC1C;EAEA,IAAIC,cAAcA,CAAA,EAAG;IACnB,OAAO,IAAI,CAACC,eAAe;EAC7B;EAEAC,kBAAkBA,CAChBC,OAA+B,EACc;IAC7C,IAAM;MAAEC,IAAI;MAAEC;IAAQ,CAAC,GAAGF,OAAO,IAAI,CAAC,CAAC;IACvC,QAAQC,IAAI;MACV,KAAKE,gCAAyB,CAACC,aAAa;QAC1C,IAAI,IAAI,CAACR,gBAAgB,IAAIM,OAAO,EAAE;UACpC,IAAM;YAAEG,KAAK,EAALA,MAAK;YAAEC,UAAU,EAAVA;UAAW,CAAC,GAAGJ,OAA0B;UACxD,IAAIG,MAAK,EAAE;YACT,IAAI,CAACT,gBAAgB,CAACS,MAAK,EAAEC,WAAU,CAAC;UAC1C;QACF;QACA,OAAOrC,SAAS;MAClB,KAAKkC,gCAAyB,CAACI,UAAU;QAAE;UACzC,IAAI,CAACT,eAAe,GAAGI,OAAyB;UAChD,IAAI,IAAI,CAACJ,eAAe,EAAE;YACxB,IAAI,CAACU,WAAW,GAAG,IAAI,CAACV,eAAe,CAACU,WAAW;UACrD;UACA,IAAIC,YAAY;UAChB,IACE,IAAI,CAAChB,cAAc,CAACiB,qBAAqB,IACzC,IAAI,CAACZ,eAAe,IACpB,IAAI,CAACA,eAAe,CAACa,aAAa,EAClC;YACAF,YAAY,GAAG,IAAI,CAACG,mBAAmB,CACrC,IAAI,CAACnB,cAAc,CAACiB,qBAAqB,CAC1C;YACD,IAAID,YAAY,EAAE;cAChBI,OAAO,CAACvD,KAAK,CAACmD,YAAY,CAAC;YAC7B;UACF;UACA,IAAI,IAAI,CAACd,eAAe,IAAIO,OAAO,EAAE;YACnC,IAAM;cAAEG,KAAK,EAALA,OAAK;cAAEC,UAAU,EAAVA;YAAW,CAAC,GAAGJ,OAAyB;YACvD,IAAIG,OAAK,EAAE;cACT,IAAI,CAACV,eAAe,CAACU,OAAK,EAAEC,YAAU,CAAC;YACzC;UACF;UACA,OAAO;YACLQ,mBAAmB,EAAE1B,qBAAqB;YAC1CqB;UACF,CAAC;QACH;MACA;QACEI,OAAO,CAACvD,KAAK,CAAC,qCAAqC,EAAE0C,OAAO,CAAC;QAC7D,MAAM,IAAIe,KAAK,6CAAAC,MAAA,CAA6Cf,IAAI,EAAG;IAAA;EAEzE;EAEAgB,kBAAkBA,CAACC,OAAe,EAAU;IAC1C,IAAMT,YAAY,GAAG,IAAI,CAACG,mBAAmB,CAAC,QAAQ,CAAC;IACvD,IAAIH,YAAY,EAAE;MAChB,MAAM,IAAIM,KAAK,CAACN,YAAY,CAAC;IAC/B;IACA,IAAI,CAACS,OAAO,CAACC,KAAK,CAAC,kBAAkB,CAAC,EAAE;MACtC,MAAM,IAAIJ,KAAK,CAAC,oCAAoC,CAAC;IACvD;IACA,YAAAC,MAAA,CAAY,IAAI,CAAClB,eAAe,CAAEsB,WAAW,CAACC,OAAO,CACnD,OAAO,EACP,GAAG,CACJ,OAAAL,MAAA,CAAIE,OAAO;EACd;EAEMI,oBAAoBA,CAAA,EAAG;IAAA,IAAAC,KAAA;IAAA,OAAA7D,iBAAA;MAC3B,OAAO6D,KAAI,CAACC,cAAc,CAACC,2BAAoB,CAACC,WAAW,CAAC;IAAA;EAC9D;EAEMC,aAAaA,CACjBC,UAAkB,EAClBC,IAAY,EACZC,MAAY,EACZC,IAAU,EACVC,aAAmB,EACnBC,OAAa,EACbC,UAAuB,EACT;IAAA,IAAAC,MAAA;IAAA,OAAAzE,iBAAA;MACd,OAAOyE,MAAI,CAACX,cAAc,CAACC,2BAAoB,CAACW,eAAe,EAAE;QAC/DR,UAAU;QACVC,IAAI;QACJC,MAAM;QACNC,IAAI;QACJC,aAAa;QACbC,OAAO;QACPC;MACF,CAAC,CAAC;IAAA;EACJ;EAEMG,gBAAgBA,CACpBT,UAAkB,EAClBC,IAAY,EACZC,MAAY,EACZC,IAAU,EACVG,UAAuB,EACT;IAAA,IAAAI,MAAA;IAAA,OAAA5E,iBAAA;MACd,OAAO4E,MAAI,CAACd,cAAc,CAACC,2BAAoB,CAACc,mBAAmB,EAAE;QACnEX,UAAU;QACVC,IAAI;QACJC,MAAM;QACNC,IAAI;QACJG;MACF,CAAC,CAAC;IAAA;EACJ;EAEAM,WAAWA,CAACC,KAAa,EAAE;IACzB,IAAI,CAACC,IAAI,CAACjB,2BAAoB,CAACkB,YAAY,EAAE;MAAEF;IAAM,CAAC,CAAC;EACzD;EAEAG,cAAcA,CAACC,GAAW,EAAEC,KAAW,EAAEC,MAAe,EAAE;IACxD,IAAI,CAACL,IAAI,CAACjB,2BAAoB,CAACuB,eAAe,EAAE;MAAEH,GAAG;MAAEC,KAAK;MAAEC;IAAO,CAAC,CAAC;EACzE;EAEAE,aAAaA,CAAA,EAAG;IACd,IAAI,CAACP,IAAI,CAACjB,2BAAoB,CAACyB,cAAc,CAAC;EAChD;EAEAC,iBAAiBA,CAACN,GAAW,EAAEE,MAAe,EAAE;IAC9C,IAAI,CAACL,IAAI,CAACjB,2BAAoB,CAACuB,eAAe,EAAE;MAC9CH,GAAG;MACH5E,SAAS;MACT8E,MAAM,EAAEA,MAAM,IAAI;IACpB,CAAC,CAAC;EACJ;EAEAK,iBAAiBA,CAAA,EAAG;IAClB,IAAI,CAACV,IAAI,CAACjB,2BAAoB,CAAC4B,mBAAmB,CAAC;EACrD;EAEAC,kBAAkBA,CAACjD,KAAa,EAAEC,UAAgB,EAAE;IAClD,IAAI,CAACoC,IAAI,CAACjB,2BAAoB,CAACrB,aAAa,EAAE;MAC5CC,KAAK;MACLC;IACF,CAAC,CAAC;EACJ;EAEMiD,mBAAmBA,CAACC,IAAY,EAAgC;IAAA,IAAAC,UAAA,GAAA3F,SAAA;MAAA4F,MAAA;IAAA,OAAAhG,iBAAA;MAAA,IAA9BL,KAAK,GAAAoG,UAAA,CAAAE,MAAA,QAAAF,UAAA,QAAAxF,SAAA,GAAAwF,UAAA,MAAG,EAAE;MAChD,IAAIC,MAAI,CAAC5D,eAAe,IAAI,CAAC4D,MAAI,CAAC5D,eAAe,CAACa,aAAa,EAAE;QAC/D,OAAOnD,OAAO,CAACT,MAAM,CACnB,IAAIgE,KAAK,CACP,8DAA8D,CAC/D,CACF;MACH;MACA,OAAO2C,MAAI,CAAClC,cAAc,CAACC,2BAAoB,CAACmC,aAAa,EAAE;QAC7D3D,IAAI,EAAE,KAAK;QACXuD,IAAI;QACJnG;MACF,CAAC,CAAC;IAAA;EACJ;EAEMwG,mBAAmBA,CAACL,IAAY,EAA0B;IAAA,IAAAM,MAAA;IAAA,OAAApG,iBAAA;MAC9D,IAAIoG,MAAI,CAAChE,eAAe,IAAI,CAACgE,MAAI,CAAChE,eAAe,CAACa,aAAa,EAAE;QAC/D,OAAOnD,OAAO,CAACT,MAAM,CACnB,IAAIgE,KAAK,CACP,8DAA8D,CAC/D,CACF;MACH;MACA,OAAO+C,MAAI,CAACtC,cAAc,CAACC,2BAAoB,CAACmC,aAAa,EAAE;QAC7D3D,IAAI,EAAE,KAAK;QACXuD;MACF,CAAC,CAAC;IAAA;EACJ;EAEMO,sBAAsBA,CAACP,IAAY,EAAoB;IAAA,IAAAQ,MAAA;IAAA,OAAAtG,iBAAA;MAC3D,IAAIsG,MAAI,CAAClE,eAAe,IAAI,CAACkE,MAAI,CAAClE,eAAe,CAACa,aAAa,EAAE;QAC/D,OAAOnD,OAAO,CAACT,MAAM,CACnB,IAAIgE,KAAK,CACP,iEAAiE,CAClE,CACF;MACH;MACA,OAAOiD,MAAI,CAACxC,cAAc,CAACC,2BAAoB,CAACmC,aAAa,EAAE;QAC7D3D,IAAI,EAAE,QAAQ;QACduD;MACF,CAAC,CAAC;IAAA;EACJ;EAEMS,cAAcA,CAAC5G,KAAa,EAAiB;IAAA,IAAA6G,MAAA;IAAA,OAAAxG,iBAAA;MACjD,IAAM+C,YAAY,GAAGyD,MAAI,CAACtD,mBAAmB,CAAC,QAAQ,CAAC;MACvD,IAAIH,YAAY,EAAE;QAChB,OAAOjD,OAAO,CAACT,MAAM,CAAC,IAAIgE,KAAK,CAACN,YAAY,CAAC,CAAC;MAChD;MACA,OAAOyD,MAAI,CAAC1C,cAAc,CAACC,2BAAoB,CAAC0C,SAAS,EAAE;QACzDlE,IAAI,EAAE,OAAO;QACb5C;MACF,CAAC,CAAC;IAAA;EACJ;EAEM+G,oBAAoBA,CAACZ,IAAY,EAAgC;IAAA,IAAAa,WAAA,GAAAvG,SAAA;MAAAwG,MAAA;IAAA,OAAA5G,iBAAA;MAAA,IAA9BL,KAAK,GAAAgH,WAAA,CAAAV,MAAA,QAAAU,WAAA,QAAApG,SAAA,GAAAoG,WAAA,MAAG,EAAE;MAEjD,IAAM5D,YAAY,GAAG6D,MAAI,CAAC1D,mBAAmB,CAAC,QAAQ,CAAC;MACvD,IAAIH,YAAY,EAAE;QAChB,OAAOjD,OAAO,CAACT,MAAM,CAAC,IAAIgE,KAAK,CAACN,YAAY,CAAC,CAAC;MAChD;MACA,OAAO6D,MAAI,CAAC9C,cAAc,CAACC,2BAAoB,CAAC8C,cAAc,EAAE;QAC9DtE,IAAI,EAAE,KAAK;QACXuD,IAAI;QACJnG;MACF,CAAC,CAAC;IAAA;EACJ;EAEMmH,oBAAoBA,CAAChB,IAAY,EAA0B;IAAA,IAAAiB,MAAA;IAAA,OAAA/G,iBAAA;MAE/D,IAAM+C,YAAY,GAAGgE,MAAI,CAAC7D,mBAAmB,CAAC,QAAQ,CAAC;MACvD,IAAIH,YAAY,EAAE;QAChB,OAAOjD,OAAO,CAACT,MAAM,CAAC,IAAIgE,KAAK,CAACN,YAAY,CAAC,CAAC;MAChD;MACA,OAAOgE,MAAI,CAACjD,cAAc,CAACC,2BAAoB,CAAC8C,cAAc,EAAE;QAC9DtE,IAAI,EAAE,KAAK;QACXuD;MACF,CAAC,CAAC;IAAA;EACJ;EAEMkB,sBAAsBA,CAAClB,IAAY,EAAiB;IAAA,IAAAmB,OAAA;IAAA,OAAAjH,iBAAA;MAExD,IAAM+C,YAAY,GAAGkE,OAAI,CAAC/D,mBAAmB,CAAC,QAAQ,CAAC;MACvD,IAAIH,YAAY,EAAE;QAChB,OAAOjD,OAAO,CAACT,MAAM,CAAC,IAAIgE,KAAK,CAACN,YAAY,CAAC,CAAC;MAChD;MACA,OAAOkE,OAAI,CAACnD,cAAc,CAACC,2BAAoB,CAAC8C,cAAc,EAAE;QAC9DtE,IAAI,EAAE,OAAO;QACbuD;MACF,CAAC,CAAC;IAAA;EACJ;EAEAoB,cAAcA,CAAA,EAAG;IACf,IAAMnE,YAAY,GAAG,IAAI,CAACG,mBAAmB,CAAC,QAAQ,CAAC;IACvD,IAAIH,YAAY,EAAE;MAChB,MAAM,IAAIM,KAAK,CAACN,YAAY,CAAC;IAC/B;IACA,IAAI,IAAI,CAACD,WAAW,EAAE;MACpB,OAAOqE,IAAI,CAACC,KAAK,CAAC,IAAI,CAACtE,WAAW,CAAC;IACrC,CAAC,MAAM;MACL,OAAOvC,SAAS;IAClB;EACF;EAEM8G,eAAeA,CAACC,OAAY,EAAgB;IAAA,IAAAC,OAAA;IAAA,OAAAvH,iBAAA;MAChD,IAAM+C,YAAY,GAAGwE,OAAI,CAACrE,mBAAmB,CAAC,QAAQ,CAAC;MACvD,IAAIH,YAAY,EAAE;QAChB,OAAOjD,OAAO,CAACT,MAAM,CAAC,IAAIgE,KAAK,CAACN,YAAY,CAAC,CAAC;MAChD;MACA,IAAID,WAA+B;MACnC,IAAIwE,OAAO,EAAE;QACX,IAAI;UACFxE,WAAW,GAAGqE,IAAI,CAACK,SAAS,CAACF,OAAO,CAAC;QACvC,CAAC,CAAC,OAAOhH,GAAG,EAAE;UACZ,OAAOR,OAAO,CAACT,MAAM,CAAC,IAAIgE,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClE;MACF,CAAC,MAAM;QACLP,WAAW,GAAGvC,SAAS;MACzB;MACA,MAAMgH,OAAI,CAACzD,cAAc,CAACC,2BAAoB,CAAC0D,YAAY,EAAE;QAC3DlF,IAAI,EAAE,MAAM;QACZO;MACF,CAAC,CAAC;MACF,OAAOyE,OAAI,CAACL,cAAc,EAAE;IAAA;EAC9B;EAEMQ,kBAAkBA,CAAA,EAAiB;IAAA,IAAAC,OAAA;IAAA,OAAA3H,iBAAA;MACvC,IAAM+C,YAAY,GAAG4E,OAAI,CAACzE,mBAAmB,CAAC,QAAQ,CAAC;MACvD,IAAIH,YAAY,EAAE;QAChB,OAAOjD,OAAO,CAACT,MAAM,CAAC,IAAIgE,KAAK,CAACN,YAAY,CAAC,CAAC;MAChD;MACA4E,OAAI,CAAC7E,WAAW,SAAS6E,OAAI,CAAC7D,cAAc,CAC1CC,2BAAoB,CAAC0D,YAAY,EACjC;QACElF,IAAI,EAAE;MACR,CAAC,CACF;MACD,OAAOoF,OAAI,CAACT,cAAc,EAAE;IAAA;EAC9B;EAEAU,KAAKA,CAAC9B,IAAY,EAAE+B,WAAmB,EAAEC,UAAgC,EAAE;IACzE,IAAI,CAAC9C,IAAI,CAACjB,2BAAoB,CAACgE,YAAY,EAAE;MAC3CjC,IAAI;MACJ+B,WAAW;MACXC;IACF,CAAC,CAAC;EACJ;EAEAlI,KAAKA,CAACoI,UAAsB,EAAE;IAC5B,IAAI,IAAI,CAAC5F,eAAe,EAAE;MACxB,IAAM;QAAEE,OAAO;QAAE2F,QAAQ;QAAEC,MAAM;QAAEC,KAAK;QAAEvI;MAAM,CAAC,GAAGoI,UAAU,IAAI,CAAC,CAAC;MACpE,IAAI,CAAChD,IAAI,CAACjB,2BAAoB,CAACqE,WAAW,EAAE;QAC1C9F,OAAO;QACP2F,QAAQ;QACRC,MAAM;QACNC,KAAK;QACLvI,KAAK,EAAEA,KAAK,IAAIA,KAAK,CAACyI,QAAQ,GAAGzI,KAAK,CAACyI,QAAQ,EAAE,GAAGzI;MACtD,CAAC,CAAC;IACJ,CAAC,MAAM;MACLuD,OAAO,CAACvD,KAAK,CACX,4DAA4D,EAC5DoI,UAAU,CACX;IACH;EACF;EAEAM,QAAQA,CAAA,EAAG;IACT,IAAI,CAACtD,IAAI,CAACjB,2BAAoB,CAACwE,kBAAkB,EAAE,CAAC,CAAC,CAAC;EACxD;EAEAC,gBAAgBA,CACdC,OAAgB,EAChBC,IAA4B,EAC5BC,gBAAwC,EACxC;IACA,OAAO,IAAIC,2BAAc,CAAC,IAAI,EAAEH,OAAO,EAAEC,IAAI,EAAEC,gBAAgB,CAAC;EAClE;EAEME,UAAUA,CACdC,QAAgB,EAChBJ,IAA4B,EAC5BC,gBAAwC,EACxC;IAAA,IAAAI,OAAA;IAAA,OAAA/I,iBAAA;MAEA,IAAM+C,YAAY,GAAGgG,OAAI,CAAC7F,mBAAmB,CAAC,OAAO,CAAC;MACtD,IAAIH,YAAY,EAAE;QAChB,OAAOjD,OAAO,CAACT,MAAM,CAAC,IAAIgE,KAAK,CAACN,YAAY,CAAC,CAAC;MAChD;MACA,OAAOgG,OAAI,CAACjF,cAAc,CAACC,2BAAoB,CAACiF,mBAAmB,EAAE;QACnEzG,IAAI,EAAE,OAAO;QACbC,OAAO,EAAE;UACPsG,QAAQ;UACRJ,IAAI;UACJC;QACF;MACF,CAAC,CAAC;IAAA;EACJ;EAEMM,WAAWA,CACfH,QAAgB,EAChBJ,IAA4B,EAC5BC,gBAAwC,EACxC;IAAA,IAAAO,OAAA;IAAA,OAAAlJ,iBAAA;MAEA,IAAM+C,YAAY,GAAGmG,OAAI,CAAChG,mBAAmB,CAAC,QAAQ,CAAC;MACvD,IAAIH,YAAY,EAAE;QAChB,OAAOjD,OAAO,CAACT,MAAM,CAAC,IAAIgE,KAAK,CAACN,YAAY,CAAC,CAAC;MAChD;MACA,OAAOmG,OAAI,CAACpF,cAAc,CAACC,2BAAoB,CAACiF,mBAAmB,EAAE;QACnEzG,IAAI,EAAE,cAAc;QACpBC,OAAO,EAAE;UACPsG,QAAQ;UACRJ,IAAI;UACJC;QACF;MACF,CAAC,CAAC;IAAA;EACJ;EAEMQ,kBAAkBA,CACtBC,YAAoB,EACpBC,cAAsC,EAEtC;IAAA,IAAAC,WAAA,GAAAlJ,SAAA;MAAAmJ,OAAA;IAAA,OAAAvJ,iBAAA;MAAA,IADAkE,UAAU,GAAAoF,WAAA,CAAArD,MAAA,QAAAqD,WAAA,QAAA/I,SAAA,GAAA+I,WAAA,MAAG,MAAM;MAGnB,IAAIvG,YAAY,GAAGwG,OAAI,CAACrG,mBAAmB,CAAC,OAAO,CAAC;MACpD,IAAIH,YAAY,EAAE;QAChB,OAAOjD,OAAO,CAACT,MAAM,CAAC,IAAIgE,KAAK,CAACN,YAAY,CAAC,CAAC;MAChD;MACAA,YAAY,GAAGwG,OAAI,CAACC,sBAAsB,CAACH,cAAc,CAAC;MAC1D,IAAItG,YAAY,EAAE;QAChB,OAAOjD,OAAO,CAACT,MAAM,CAAC,IAAIgE,KAAK,CAACN,YAAY,CAAC,CAAC;MAChD;MACA,OAAOwG,OAAI,CAACzF,cAAc,CACxBC,2BAAoB,CAACiF,mBAAmB,EACxC;QACEzG,IAAI,EAAE,qBAAqB;QAC3BC,OAAO,EAAE;UACP4G,YAAY;UACZC,cAAc;UACdnF;QACF;MACF,CAAC,EAED;QAAEuF,MAAM,EAAE,IAAIC,eAAe,EAAE,CAACD;MAAO,CAAC,CACzC;IAAA;EACH;EAEME,0BAA0BA,CAC9BP,YAAoB,EACpBC,cAAsC,EACtC;IAAA,IAAAO,OAAA;IAAA,OAAA5J,iBAAA;MACA,IAAM+C,YAAY,GAAG6G,OAAI,CAAC1G,mBAAmB,CAAC,QAAQ,CAAC;MACvD,IAAIH,YAAY,EAAE;QAChB,OAAOjD,OAAO,CAACT,MAAM,CAAC,IAAIgE,KAAK,CAACN,YAAY,CAAC,CAAC;MAChD;MACA,OAAO6G,OAAI,CAAC9F,cAAc,CAACC,2BAAoB,CAACiF,mBAAmB,EAAE;QACnEzG,IAAI,EAAE,sBAAsB;QAC5BC,OAAO,EAAE;UACP4G,YAAY;UACZC;QACF;MACF,CAAC,CAAC;IAAA;EACJ;EAEcvF,cAAcA,CAC1BvB,IAAY,EACZC,OAAa,EACb+B,OAAiB,EACH;IAAA,IAAAsF,OAAA;IAAA,OAAA7J,iBAAA;MACd,IAAI,CAAC6J,OAAI,CAACzH,eAAe,EAAE;QACzB,OAAOtC,OAAO,CAACT,MAAM,CAAC,IAAIgE,KAAK,CAAC,wCAAwC,CAAC,CAAC;MAC5E;MACA,IAAMyG,cAAc,GAAG;QACrBvH,IAAI;QACJC;MACF,CAAC;MACD,IAAMuH,aAAa,GAAGxF,OAAO,GAAG,CAACuF,cAAc,EAAEvF,OAAO,CAAC,GAAG,CAACuF,cAAc,CAAC;MAC5E,OAAOD,OAAI,CAAC7H,UAAU,CACnB8B,cAAc,CAACkG,qBAAc,CAACC,qBAAqB,EAAE,GAAGF,aAAa,CAAC,CACtEhK,IAAI,CAAEmK,MAAM,IAAKA,MAAM,CAAC,CAAC,CAAC,CAAC;IAAA;EAChC;EAEQlF,IAAIA,CAACzC,IAAY,EAAEC,OAAa,EAAE;IACxC,IAAI,CAAC,IAAI,CAACJ,eAAe,EAAE;MACzB,MAAM,IAAIiB,KAAK,CAAC,wCAAwC,CAAC;IAC3D;IACA,IAAI,CAACrB,UAAU,CAACgD,IAAI,CAACgF,qBAAc,CAACC,qBAAqB,EAAE;MACzD1H,IAAI;MACJC;IACF,CAAC,CAAC;EACJ;EAEQU,mBAAmBA,CAACiH,OAAe,EAAsB;IAI/D,IAAMlH,aAAa,GAAG,IAAI,CAACb,eAAe,GACtC,IAAI,CAACA,eAAe,CAACa,aAAa,IAAI,KAAK,GAC3C,KAAK;IACT,IAAI,CAAC,IAAI,CAACb,eAAe,IAAI,CAAC,IAAAgI,mBAAU,EAACD,OAAO,EAAElH,aAAa,EAAE,IAAI,CAAC,EAAE;MACtE,4CAAAK,MAAA,CAA4C6G,OAAO,YAAA7G,MAAA,CAASL,aAAa;IAC3E;IACA,OAAO1C,SAAS;EAClB;EAEQiJ,sBAAsBA,CAACH,cAAsC,EAAE;IACrE,IAAI,CAACA,cAAc,CAACgB,SAAS,EAAE;MAC7B,OAAO,mBAAmB;IAC5B;IACA,IAAIhB,cAAc,CAACiB,YAAY,EAAE;MAC/B,OAAO,mCAAmC;IAC5C;IACA,IACEjB,cAAc,CAACkB,aAAa,KAAK,OAAO,IACxClB,cAAc,CAACkB,aAAa,KAAK,UAAU,IAC3ClB,cAAc,CAACkB,aAAa,KAAK,MAAM,EACvC;MACA,kEAAAjH,MAAA,CAAkE+F,cAAc,CAACkB,aAAa;IAChG;IACA,OAAOhK,SAAS;EAClB;AACF;AAACoB,OAAA,CAAAC,oBAAA,GAAAA,oBAAA"}
1
+ {"version":3,"file":"extension_host_api.js","names":["_intersects","_interopRequireDefault","require","_util","_visualization_sdk","_tile_sdk","_fetch_proxy","_types","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_defineProperty","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","res","call","TypeError","Number","EXTENSION_SDK_VERSION","exports","ExtensionHostApiImpl","constructor","configuration","_configuration","chattyHost","setInitialRoute","hostChangedRoute","visualizationDataReceivedCallback","tileHostDataChangedCallback","isDashboardMountSupported","_this$_lookerHostData","_this$lookerHostData","_this$lookerHostData2","_this$lookerHostData3","_lookerHostData","extensionDashboardTileEnabled","lookerHostData","mountPoint","MountPoint","dashboardTile","dashboardVisualization","dashboardTilePopup","visualizationSDK","_visualizationSDK","VisualizationSDKImpl","tileSDK","_tileSDK","TileSDKImpl","handleNotification","message","type","ExtensionNotificationType","ROUTE_CHANGED","payload","route","routeState","VISUALIZATION_DATA","updateVisData","TILE_HOST_DATA","tileHostDataChanged","INITIALIZE","standalone","contextData","errorMessage","requiredLookerVersion","lookerVersion","verifyLookerVersion","logError","extensionSdkVersion","Error","concat","createSecretKeyTag","keyName","match","extensionId","replace","verifyHostConnection","_this","sendAndReceive","ExtensionRequestType","VERIFY_HOST","invokeCoreSdk","httpMethod","path","params","body","authenticator","options","apiVersion","_this2","INVOKE_CORE_SDK","invokeCoreSdkRaw","_this3","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","_arguments","_this4","length","LOCAL_STORAGE","localStorageGetItem","_this5","localStorageRemoveItem","_this6","clipboardWrite","_this7","CLIPBOARD","userAttributeSetItem","_arguments2","_this8","USER_ATTRIBUTE","userAttributeGetItem","_this9","userAttributeResetItem","_this10","getContextData","JSON","parse","saveContextData","context","_this11","stringify","CONTEXT_DATA","refreshContextData","_this12","track","trackAction","attributes","TRACK_ACTION","errorEvent","filename","lineno","colno","ERROR_EVENT","toString","unloaded","EXTENSION_UNLOADED","createFetchProxy","baseUrl","init","responseBodyType","FetchProxyImpl","fetchProxy","resource","_this13","INVOKE_EXTERNAL_API","serverProxy","_this14","oauth2Authenticate","authEndpoint","authParameters","_arguments3","_this15","validateAuthParameters","signal","AbortController","oauth2ExchangeCodeForToken","_this16","rendered","failureMessage","RENDERED","_this17","messagePayload","chattyPayload","ExtensionEvent","EXTENSION_API_REQUEST","values","version","intersects","client_id","redirect_uri","response_type"],"sources":["../../../src/connect/extension_host_api.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 { ChattyHostConnection, Options } from '@looker/chatty'\nimport intersects from 'semver/ranges/intersects'\nimport { logError } from '../util'\nimport type {\n VisualizationDataReceivedCallback,\n VisualizationSDK,\n} from './visualization'\nimport { VisualizationSDKImpl } from './visualization/visualization_sdk'\nimport type { TileHostDataChangedCallback, TileSDK } from './tile'\nimport { TileSDKImpl } from './tile/tile_sdk'\nimport { FetchProxyImpl } from './fetch_proxy'\nimport type {\n ExtensionInitializationResponse,\n ExtensionHostApi,\n ExtensionHostApiConfiguration,\n ExtensionNotification,\n FetchCustomParameters,\n FetchResponseBodyType,\n LookerHostData,\n ApiVersion,\n} from './types'\nimport {\n ExtensionEvent,\n ExtensionNotificationType,\n ExtensionRequestType,\n MountPoint,\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 visualizationDataReceivedCallback?: VisualizationDataReceivedCallback\n private tileHostDataChangedCallback?: TileHostDataChangedCallback\n private _visualizationSDK?: VisualizationSDK\n private _tileSDK?: TileSDK\n\n private contextData?: string\n\n constructor(configuration: ExtensionHostApiConfiguration) {\n this._configuration = configuration\n const {\n chattyHost,\n setInitialRoute,\n hostChangedRoute,\n visualizationDataReceivedCallback,\n tileHostDataChangedCallback,\n } = this._configuration\n this.chattyHost = chattyHost\n this.setInitialRoute = setInitialRoute\n this.hostChangedRoute = hostChangedRoute\n this.visualizationDataReceivedCallback = visualizationDataReceivedCallback\n this.tileHostDataChangedCallback = tileHostDataChangedCallback\n }\n\n get isDashboardMountSupported(): boolean {\n return (\n !!this._lookerHostData?.extensionDashboardTileEnabled &&\n (this.lookerHostData?.mountPoint === MountPoint.dashboardTile ||\n this.lookerHostData?.mountPoint === MountPoint.dashboardVisualization ||\n this.lookerHostData?.mountPoint === MountPoint.dashboardTilePopup)\n )\n }\n\n get visualizationSDK(): VisualizationSDK {\n if (!this._visualizationSDK) {\n this._visualizationSDK = new VisualizationSDKImpl(this)\n }\n return this._visualizationSDK\n }\n\n get tileSDK(): TileSDK {\n if (!this._tileSDK) {\n this._tileSDK = new TileSDKImpl(this)\n }\n return this._tileSDK\n }\n\n get lookerHostData() {\n return this._lookerHostData\n }\n\n handleNotification(\n message: ExtensionNotification\n ): ExtensionInitializationResponse | undefined {\n const { type } = message\n switch (type) {\n case ExtensionNotificationType.ROUTE_CHANGED: {\n const { payload } = message\n if (this.hostChangedRoute && payload) {\n const { route, routeState } = payload\n if (route) {\n this.hostChangedRoute(route, routeState)\n }\n }\n return undefined\n }\n case ExtensionNotificationType.VISUALIZATION_DATA: {\n const { payload } = message\n this.visualizationSDK.updateVisData(payload)\n if (this.visualizationDataReceivedCallback) {\n this.visualizationDataReceivedCallback(payload)\n }\n return undefined\n }\n case ExtensionNotificationType.TILE_HOST_DATA: {\n const { payload } = message\n this.tileSDK.tileHostDataChanged(payload)\n if (this.tileHostDataChangedCallback) {\n this.tileHostDataChangedCallback(payload)\n }\n return undefined\n }\n case ExtensionNotificationType.INITIALIZE: {\n const { payload } = message\n const lookerHostData = payload || {}\n if (!lookerHostData.mountPoint) {\n lookerHostData.mountPoint = MountPoint.standalone\n }\n this._lookerHostData = lookerHostData\n this.contextData = lookerHostData.contextData\n let errorMessage\n if (\n this._configuration.requiredLookerVersion &&\n lookerHostData.lookerVersion\n ) {\n errorMessage = this.verifyLookerVersion(\n this._configuration.requiredLookerVersion\n )\n if (errorMessage) {\n logError(errorMessage)\n }\n }\n if (this.setInitialRoute && payload) {\n const { route, routeState } = payload\n if (route) {\n this.setInitialRoute(route, routeState)\n }\n }\n return {\n extensionSdkVersion: EXTENSION_SDK_VERSION,\n errorMessage,\n }\n }\n default:\n logError('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 as 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 logError(\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 rendered(failureMessage?: string) {\n this.send(ExtensionRequestType.RENDERED, { failureMessage })\n }\n\n 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 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"],"mappings":"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"}
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.registerHostApi = exports.getExtensionSDK = void 0;
7
+ var _util = require("../util");
7
8
  var _hostApi;
8
9
  var errorListener = event => {
9
10
  if (_hostApi) {
@@ -16,13 +17,13 @@ var errorListener = event => {
16
17
  _hostApi.error(event);
17
18
  }
18
19
  } else {
19
- console.error('Extension has unhandled error. Reporting on console as Looker host api not initialized', event);
20
+ (0, _util.logError)('Extension has unhandled error. Reporting on console as Looker host api not initialized', event);
20
21
  }
21
22
  };
22
23
  var beforeUnloadListener = () => {
23
24
  if (_hostApi) {
24
25
  _hostApi.unloaded();
25
- console.warn('Extension is being unloaded');
26
+ (0, _util.logWarn)('Extension is being unloaded');
26
27
  }
27
28
  };
28
29
  var setupGlobalListeners = () => {