@looker/run-it 0.9.23 → 0.9.27

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. package/CHANGELOG.md +82 -1
  2. package/lib/RunIt.d.ts +2 -2
  3. package/lib/RunIt.js +18 -30
  4. package/lib/RunIt.js.map +1 -1
  5. package/lib/RunItProvider.d.ts +0 -4
  6. package/lib/RunItProvider.js +2 -7
  7. package/lib/RunItProvider.js.map +1 -1
  8. package/lib/components/ConfigForm/ConfigForm.d.ts +1 -6
  9. package/lib/components/ConfigForm/ConfigForm.js +39 -48
  10. package/lib/components/ConfigForm/ConfigForm.js.map +1 -1
  11. package/lib/components/ConfigForm/index.d.ts +1 -1
  12. package/lib/components/ConfigForm/index.js +4 -4
  13. package/lib/components/ConfigForm/index.js.map +1 -1
  14. package/lib/components/ConfigForm/utils.d.ts +11 -0
  15. package/lib/components/ConfigForm/utils.js +81 -0
  16. package/lib/components/ConfigForm/utils.js.map +1 -0
  17. package/lib/components/LoginForm/LoginForm.d.ts +3 -8
  18. package/lib/components/LoginForm/LoginForm.js +9 -8
  19. package/lib/components/LoginForm/LoginForm.js.map +1 -1
  20. package/lib/components/PerfTracker/PerfTracker.d.ts +0 -2
  21. package/lib/components/PerfTracker/PerfTracker.js +7 -8
  22. package/lib/components/PerfTracker/PerfTracker.js.map +1 -1
  23. package/lib/components/RequestForm/RequestForm.d.ts +0 -6
  24. package/lib/components/RequestForm/RequestForm.js +0 -7
  25. package/lib/components/RequestForm/RequestForm.js.map +1 -1
  26. package/lib/components/common/index.d.ts +0 -1
  27. package/lib/components/common/index.js +0 -18
  28. package/lib/components/common/index.js.map +1 -1
  29. package/lib/esm/RunIt.js +19 -32
  30. package/lib/esm/RunIt.js.map +1 -1
  31. package/lib/esm/RunItProvider.js +2 -7
  32. package/lib/esm/RunItProvider.js.map +1 -1
  33. package/lib/esm/components/ConfigForm/ConfigForm.js +36 -46
  34. package/lib/esm/components/ConfigForm/ConfigForm.js.map +1 -1
  35. package/lib/esm/components/ConfigForm/index.js +1 -1
  36. package/lib/esm/components/ConfigForm/index.js.map +1 -1
  37. package/lib/esm/components/ConfigForm/utils.js +61 -0
  38. package/lib/esm/components/ConfigForm/utils.js.map +1 -0
  39. package/lib/esm/components/LoginForm/LoginForm.js +7 -7
  40. package/lib/esm/components/LoginForm/LoginForm.js.map +1 -1
  41. package/lib/esm/components/PerfTracker/PerfTracker.js +7 -8
  42. package/lib/esm/components/PerfTracker/PerfTracker.js.map +1 -1
  43. package/lib/esm/components/RequestForm/RequestForm.js +0 -7
  44. package/lib/esm/components/RequestForm/RequestForm.js.map +1 -1
  45. package/lib/esm/components/common/index.js +0 -1
  46. package/lib/esm/components/common/index.js.map +1 -1
  47. package/lib/esm/index.js +0 -1
  48. package/lib/esm/index.js.map +1 -1
  49. package/lib/esm/utils/RunItSDK.js +8 -78
  50. package/lib/esm/utils/RunItSDK.js.map +1 -1
  51. package/lib/esm/utils/requestUtils.js +21 -14
  52. package/lib/esm/utils/requestUtils.js.map +1 -1
  53. package/lib/index.d.ts +0 -1
  54. package/lib/index.js +0 -13
  55. package/lib/index.js.map +1 -1
  56. package/lib/test-data/responses.js +9 -0
  57. package/lib/test-data/responses.js.map +1 -1
  58. package/lib/utils/RunItSDK.d.ts +1 -17
  59. package/lib/utils/RunItSDK.js +10 -88
  60. package/lib/utils/RunItSDK.js.map +1 -1
  61. package/lib/utils/requestUtils.d.ts +2 -3
  62. package/lib/utils/requestUtils.js +22 -15
  63. package/lib/utils/requestUtils.js.map +1 -1
  64. package/package.json +8 -7
  65. package/lib/components/ConfigForm/configUtils.d.ts +0 -39
  66. package/lib/components/ConfigForm/configUtils.js +0 -232
  67. package/lib/components/ConfigForm/configUtils.js.map +0 -1
  68. package/lib/components/common/StandaloneConfigurator.d.ts +0 -7
  69. package/lib/components/common/StandaloneConfigurator.js +0 -61
  70. package/lib/components/common/StandaloneConfigurator.js.map +0 -1
  71. package/lib/esm/components/ConfigForm/configUtils.js +0 -196
  72. package/lib/esm/components/ConfigForm/configUtils.js.map +0 -1
  73. package/lib/esm/components/common/StandaloneConfigurator.js +0 -51
  74. package/lib/esm/components/common/StandaloneConfigurator.js.map +0 -1
  75. package/lib/esm/scenes/OAuthScene/OAuthScene.js +0 -64
  76. package/lib/esm/scenes/OAuthScene/OAuthScene.js.map +0 -1
  77. package/lib/esm/scenes/OAuthScene/index.js +0 -2
  78. package/lib/esm/scenes/OAuthScene/index.js.map +0 -1
  79. package/lib/esm/scenes/index.js +0 -2
  80. package/lib/esm/scenes/index.js.map +0 -1
  81. package/lib/scenes/OAuthScene/OAuthScene.d.ts +0 -2
  82. package/lib/scenes/OAuthScene/OAuthScene.js +0 -81
  83. package/lib/scenes/OAuthScene/OAuthScene.js.map +0 -1
  84. package/lib/scenes/OAuthScene/index.d.ts +0 -1
  85. package/lib/scenes/OAuthScene/index.js +0 -14
  86. package/lib/scenes/OAuthScene/index.js.map +0 -1
  87. package/lib/scenes/index.d.ts +0 -1
  88. package/lib/scenes/index.js +0 -14
  89. package/lib/scenes/index.js.map +0 -1
@@ -1,232 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.fallbackFetch = exports.sdkSpecFetch = exports.loadSpecsFromVersions = exports.specUrlFetch = exports.funFetch = exports.fullify = exports.getUrl = exports.validateUrl = exports.RunItNoConfig = exports.RunItFormKey = exports.RunItConfigKey = void 0;
7
-
8
- var _sdkCodegen = require("@looker/sdk-codegen");
9
-
10
- var _sdkRtl = require("@looker/sdk-rtl");
11
-
12
- var _sdk = require("@looker/sdk");
13
-
14
- var _ = require("../..");
15
-
16
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
17
-
18
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
19
-
20
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
21
-
22
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
23
-
24
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
25
-
26
- var RunItConfigKey = 'RunItConfig';
27
- exports.RunItConfigKey = RunItConfigKey;
28
- var RunItFormKey = 'RunItForm';
29
- exports.RunItFormKey = RunItFormKey;
30
- var RunItNoConfig = {
31
- base_url: '',
32
- looker_url: ''
33
- };
34
- exports.RunItNoConfig = RunItNoConfig;
35
-
36
- var validateUrl = url => {
37
- try {
38
- var result = new URL(url);
39
- if (url.endsWith(':')) return url;
40
- return result.origin;
41
- } catch (_unused) {
42
- return '';
43
- }
44
- };
45
-
46
- exports.validateUrl = validateUrl;
47
-
48
- var makeApi = content => {
49
- var json;
50
-
51
- if (typeof content === 'string') {
52
- json = JSON.parse(content);
53
- } else {
54
- json = content;
55
- }
56
-
57
- json = (0, _sdkCodegen.upgradeSpecObject)(json);
58
- return _sdkCodegen.ApiModel.fromJson(json);
59
- };
60
-
61
- var getUrl = function () {
62
- var _ref = _asyncToGenerator(function* (url) {
63
- var settings = _objectSpread(_objectSpread({}, (0, _sdkRtl.DefaultSettings)()), {
64
- base_url: url,
65
- verify_ssl: false
66
- });
67
-
68
- var xp = new _sdkRtl.BrowserTransport(settings);
69
- var response = yield xp.rawRequest('GET', url);
70
- return response.body;
71
- });
72
-
73
- return function getUrl(_x) {
74
- return _ref.apply(this, arguments);
75
- };
76
- }();
77
-
78
- exports.getUrl = getUrl;
79
-
80
- var fullify = (uri, baseUrl) => {
81
- if (uri.match(/^https?:/)) {
82
- return uri;
83
- }
84
-
85
- var url = new URL(uri, baseUrl);
86
- return url.toString();
87
- };
88
-
89
- exports.fullify = fullify;
90
-
91
- var apiSpecBits = spec => {
92
- var _spec$specURL;
93
-
94
- return ((_spec$specURL = spec.specURL) === null || _spec$specURL === void 0 ? void 0 : _spec$specURL.split('/').slice(-2)) || [];
95
- };
96
-
97
- var funFetch = (version, name) => {
98
- return _.runItSDK.ok((0, _sdk.api_spec)(_.runItSDK, version, name));
99
- };
100
-
101
- exports.funFetch = funFetch;
102
-
103
- var specUrlFetch = function () {
104
- var _ref2 = _asyncToGenerator(function* (url) {
105
- try {
106
- var content = yield getUrl(url);
107
- return makeApi(content);
108
- } catch (error) {
109
- return undefined;
110
- }
111
- });
112
-
113
- return function specUrlFetch(_x2) {
114
- return _ref2.apply(this, arguments);
115
- };
116
- }();
117
-
118
- exports.specUrlFetch = specUrlFetch;
119
-
120
- var loadSpecsFromVersions = function () {
121
- var _ref3 = _asyncToGenerator(function* (url) {
122
- var content = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
123
- var defer = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
124
- var fetchResult = '';
125
- var specs = {};
126
- var baseUrl = '';
127
- var webUrl = '';
128
- var headless = false;
129
-
130
- try {
131
- if (!content) {
132
- content = yield getUrl(url);
133
- }
134
-
135
- var versions = typeof content === 'string' ? JSON.parse(content) : content;
136
- var origin = window.location.origin;
137
- baseUrl = versions.api_server_url;
138
- webUrl = versions.web_server_url;
139
-
140
- if (versions.headless !== undefined) {
141
- headless = versions.headless;
142
- }
143
-
144
- var fetchSpec = function () {
145
- var _ref4 = _asyncToGenerator(function* (spec) {
146
- if (spec.specURL) {
147
- spec.specURL = fullify(spec.specURL, origin);
148
-
149
- if (!defer) {
150
- spec.api = yield fallbackFetch(spec, funFetch);
151
- }
152
- }
153
-
154
- return spec.api;
155
- });
156
-
157
- return function fetchSpec(_x4) {
158
- return _ref4.apply(this, arguments);
159
- };
160
- }();
161
-
162
- specs = yield (0, _sdkCodegen.getSpecsFromVersions)(versions, fetchSpec);
163
- } catch (e) {
164
- fetchResult = e.message;
165
- }
166
-
167
- return {
168
- baseUrl,
169
- webUrl,
170
- specs,
171
- headless,
172
- fetchResult: fetchResult
173
- };
174
- });
175
-
176
- return function loadSpecsFromVersions(_x3) {
177
- return _ref3.apply(this, arguments);
178
- };
179
- }();
180
-
181
- exports.loadSpecsFromVersions = loadSpecsFromVersions;
182
-
183
- var sdkSpecFetch = function () {
184
- var _ref5 = _asyncToGenerator(function* (spec, fetcher) {
185
- if (spec.api) return spec.api;
186
- if (!spec.specURL) return undefined;
187
- var [version, name] = apiSpecBits(spec);
188
- var content = yield fetcher(version, name);
189
- return makeApi(content);
190
- });
191
-
192
- return function sdkSpecFetch(_x5, _x6) {
193
- return _ref5.apply(this, arguments);
194
- };
195
- }();
196
-
197
- exports.sdkSpecFetch = sdkSpecFetch;
198
-
199
- var fallbackFetch = function () {
200
- var _ref6 = _asyncToGenerator(function* (spec, fetcher) {
201
- if (spec.api) return spec.api;
202
- if (!spec.specURL) return undefined;
203
- var api;
204
-
205
- try {
206
- api = yield specUrlFetch(spec.specURL);
207
- } catch (error) {
208
- console.error({
209
- error
210
- });
211
- }
212
-
213
- if (!api) {
214
- var authed = _.runItSDK.authSession.isAuthenticated();
215
-
216
- if (!authed) {
217
- yield _.runItSDK.authSession.login();
218
- }
219
-
220
- api = yield sdkSpecFetch(spec, fetcher);
221
- }
222
-
223
- return api;
224
- });
225
-
226
- return function fallbackFetch(_x7, _x8) {
227
- return _ref6.apply(this, arguments);
228
- };
229
- }();
230
-
231
- exports.fallbackFetch = fallbackFetch;
232
- //# sourceMappingURL=configUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/ConfigForm/configUtils.ts"],"names":["RunItConfigKey","RunItFormKey","RunItNoConfig","base_url","looker_url","validateUrl","url","result","URL","endsWith","origin","makeApi","content","json","JSON","parse","ApiModel","fromJson","getUrl","settings","verify_ssl","xp","BrowserTransport","response","rawRequest","body","fullify","uri","baseUrl","match","toString","apiSpecBits","spec","specURL","split","slice","funFetch","version","name","runItSDK","ok","specUrlFetch","error","undefined","loadSpecsFromVersions","defer","fetchResult","specs","webUrl","headless","versions","window","location","api_server_url","web_server_url","fetchSpec","api","fallbackFetch","e","message","sdkSpecFetch","fetcher","console","authed","authSession","isAuthenticated","login"],"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 { ILookerVersions, SpecItem, SpecList } from '@looker/sdk-codegen'\nimport {\n ApiModel,\n getSpecsFromVersions,\n upgradeSpecObject,\n} from '@looker/sdk-codegen'\nimport { BrowserTransport, DefaultSettings } from '@looker/sdk-rtl'\nimport { api_spec } from '@looker/sdk'\nimport type { RunItValues } from '../..'\nimport { runItSDK } from '../..'\n\nexport type StorageLocation = 'session' | 'local'\nexport const RunItConfigKey = 'RunItConfig'\nexport const RunItFormKey = 'RunItForm'\nexport const RunItNoConfig = { base_url: '', looker_url: '' }\n\n/** Object returned from storage service */\nexport interface IStorageValue {\n /** Location of the stored object */\n location: StorageLocation\n /** Stored string representation of the value (usually JSON) */\n value: string\n}\n\n/** function to retrieve a spec based on version and name */\nexport type ApiSpecFetcher = (\n version: string,\n name: string\n) => Promise<string | RunItValues>\n\n/** Either the spec is parsed or it's undefined */\nexport type ParsedSpec = ApiModel | undefined\n\n/** service abstraction for extension and browser based usage */\nexport interface RunItConfigurator {\n getStorage: (key: string, defaultValue?: string) => IStorageValue\n setStorage(key: string, value: string, location: 'local' | 'session'): string\n removeStorage(key: string): void\n}\n\n/** Processed specifications */\nexport interface ILoadedSpecs {\n /** API server url */\n baseUrl: string\n /** Web server url */\n webUrl: string\n /** should APIX run headless? */\n headless: boolean\n /** loaded specifications */\n specs: SpecList\n /** communication errors */\n fetchResult: string\n}\n\n/** Extends versions payload with headless toggle for API Explorer */\nexport interface IAPIXConfig extends ILookerVersions {\n headless?: boolean\n}\n\n/**\n * Validates URL and standardizes it\n * @param url to validate\n * @returns the standardized url.origin if it's valid, or an empty string if it's not\n */\nexport const validateUrl = (url: string): string => {\n try {\n const result = new URL(url)\n if (url.endsWith(':')) return url\n return result.origin\n } catch {\n return ''\n }\n}\n\n/**\n * Convert content into an ApiModel\n * @param content to convert\n */\nconst makeApi = (content: string | RunItValues) => {\n let json\n if (typeof content === 'string') {\n json = JSON.parse(content)\n } else {\n json = content\n }\n json = upgradeSpecObject(json)\n return ApiModel.fromJson(json)\n}\n\n/**\n * Use the browser transport to GET a url\n * @param url to fetch\n */\nexport const getUrl = async (url: string): Promise<string | RunItValues> => {\n const settings = {\n ...DefaultSettings(),\n ...{ base_url: url, verify_ssl: false },\n }\n const xp = new BrowserTransport(settings)\n const response = await xp.rawRequest('GET', url)\n return response.body\n}\n\n/**\n * Ensure the URI is a full URL\n * @param uri possible relative path\n * @param baseUrl base url for qualifying full path\n */\nexport const fullify = (uri: string, baseUrl: string): string => {\n if (uri.match(/^https?:/)) {\n return uri\n }\n const url = new URL(uri, baseUrl)\n return url.toString()\n}\n/**\n * parse spec url into version and name for api_spec cccall\n * @param spec to parse\n */\nconst apiSpecBits = (spec: SpecItem): string[] =>\n spec.specURL?.split('/').slice(-2) || []\n\n/**\n * Use the functional api_spec fetch\n * @param version to retrieve\n * @param name to retrieve\n */\nexport const funFetch = (version: string, name: string): Promise<string> => {\n return runItSDK.ok(api_spec(runItSDK, version, name))\n}\n\n/**\n * try to fetch a spec by URL, trap any errors and return undefined\n * @param url to convert to an API spec\n */\nexport const specUrlFetch = async (url: string): Promise<ParsedSpec> => {\n try {\n const content = await getUrl(url)\n return makeApi(content)\n } catch (error) {\n return undefined\n }\n}\n\n/**\n * Load versions payload and retrieve all supported specs\n *\n * The versions payload should match the structure of Looker's /versions endpoint\n *\n * @param url that has an unauthenticated versions payload. For Looker, this is <LookerHostName>/versions\n * @param content content of versions payload that may already be assigned\n * @param defer true to defer fetching and parsing the spec. Defaults to true.\n */\nexport const loadSpecsFromVersions = async (\n url: string,\n content: string | Record<string, unknown> = '',\n defer = true\n): Promise<ILoadedSpecs> => {\n let fetchResult = ''\n let specs: SpecList = {}\n let baseUrl = ''\n let webUrl = ''\n let headless = false\n try {\n if (!content) {\n content = await getUrl(url)\n }\n const versions = (\n typeof content === 'string' ? JSON.parse(content) : content\n ) as IAPIXConfig\n const origin = (window as any).location.origin\n baseUrl = versions.api_server_url\n webUrl = versions.web_server_url\n if (versions.headless !== undefined) {\n headless = versions.headless\n }\n const fetchSpec = async (spec: SpecItem) => {\n if (spec.specURL) {\n spec.specURL = fullify(spec.specURL, origin)\n if (!defer) {\n spec.api = await fallbackFetch(spec, funFetch)\n }\n }\n return spec.api\n }\n specs = await getSpecsFromVersions(versions, fetchSpec)\n } catch (e: any) {\n fetchResult = e.message\n }\n\n return {\n baseUrl,\n webUrl,\n specs,\n headless,\n fetchResult: fetchResult,\n }\n}\n\n/**\n * fetch and compile an API specification to an ApiModel if it's not already available\n *\n * **NOTE**: This uses Looker API 4.0 to fetch the specification so fetch works with CORS\n *\n * @param spec to fetch and compile\n * @param fetcher function to retrieve API spec content\n */\nexport const sdkSpecFetch = async (\n spec: SpecItem,\n fetcher: ApiSpecFetcher\n): Promise<ParsedSpec> => {\n if (spec.api) return spec.api\n if (!spec.specURL) return undefined\n const [version, name] = apiSpecBits(spec)\n const content = await fetcher(version, name)\n return makeApi(content)\n}\n\n/** Attempt to retrieve spec by URL, then api_spec SDK call\n *\n * @param spec to fetch\n * @param fetcher function to retrieve and parse spec\n */\nexport const fallbackFetch = async (\n spec: SpecItem,\n fetcher: ApiSpecFetcher\n): Promise<ParsedSpec> => {\n if (spec.api) return spec.api\n if (!spec.specURL) return undefined\n let api: ParsedSpec\n try {\n api = await specUrlFetch(spec.specURL)\n } catch (error) {\n console.error({ error })\n }\n if (!api) {\n const authed = runItSDK.authSession.isAuthenticated()\n if (!authed) {\n await runItSDK.authSession.login()\n }\n api = await sdkSpecFetch(spec, fetcher)\n }\n return api\n}\n"],"file":"configUtils.js"}
@@ -1,7 +0,0 @@
1
- import type { IStorageValue, RunItConfigurator, StorageLocation } from '..';
2
- export declare class StandaloneConfigurator implements RunItConfigurator {
3
- getStorage(key: string, defaultValue?: string): IStorageValue;
4
- setStorage(key: string, value: string, location?: StorageLocation): string;
5
- removeStorage(key: string): void;
6
- }
7
- export declare const defaultConfigurator: StandaloneConfigurator;
@@ -1,61 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.defaultConfigurator = exports.StandaloneConfigurator = void 0;
7
-
8
- class StandaloneConfigurator {
9
- getStorage(key) {
10
- var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
11
- var value = sessionStorage.getItem(key);
12
-
13
- if (value) {
14
- return {
15
- location: 'session',
16
- value
17
- };
18
- }
19
-
20
- value = localStorage.getItem(key);
21
-
22
- if (value) {
23
- return {
24
- location: 'local',
25
- value
26
- };
27
- }
28
-
29
- return {
30
- location: 'session',
31
- value: defaultValue
32
- };
33
- }
34
-
35
- setStorage(key, value) {
36
- var location = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'session';
37
-
38
- switch (location.toLocaleLowerCase()) {
39
- case 'local':
40
- localStorage.setItem(key, value);
41
- break;
42
-
43
- case 'session':
44
- sessionStorage.setItem(key, value);
45
- break;
46
- }
47
-
48
- return value;
49
- }
50
-
51
- removeStorage(key) {
52
- localStorage.removeItem(key);
53
- sessionStorage.removeItem(key);
54
- }
55
-
56
- }
57
-
58
- exports.StandaloneConfigurator = StandaloneConfigurator;
59
- var defaultConfigurator = new StandaloneConfigurator();
60
- exports.defaultConfigurator = defaultConfigurator;
61
- //# sourceMappingURL=StandaloneConfigurator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/common/StandaloneConfigurator.ts"],"names":["StandaloneConfigurator","getStorage","key","defaultValue","value","sessionStorage","getItem","location","localStorage","setStorage","toLocaleLowerCase","setItem","removeStorage","removeItem","defaultConfigurator"],"mappings":";;;;;;;AA2BO,MAAMA,sBAAN,CAA0D;AAC/DC,EAAAA,UAAU,CAACC,GAAD,EAAgD;AAAA,QAAlCC,YAAkC,uEAAnB,EAAmB;AACxD,QAAIC,KAAK,GAAGC,cAAc,CAACC,OAAf,CAAuBJ,GAAvB,CAAZ;;AACA,QAAIE,KAAJ,EAAW;AACT,aAAO;AACLG,QAAAA,QAAQ,EAAE,SADL;AAELH,QAAAA;AAFK,OAAP;AAID;;AACDA,IAAAA,KAAK,GAAGI,YAAY,CAACF,OAAb,CAAqBJ,GAArB,CAAR;;AACA,QAAIE,KAAJ,EAAW;AACT,aAAO;AACLG,QAAAA,QAAQ,EAAE,OADL;AAELH,QAAAA;AAFK,OAAP;AAID;;AACD,WAAO;AACLG,MAAAA,QAAQ,EAAE,SADL;AAELH,MAAAA,KAAK,EAAED;AAFF,KAAP;AAID;;AAEDM,EAAAA,UAAU,CACRP,GADQ,EAERE,KAFQ,EAIA;AAAA,QADRG,QACQ,uEADoB,SACpB;;AACR,YAAQA,QAAQ,CAACG,iBAAT,EAAR;AACE,WAAK,OAAL;AACEF,QAAAA,YAAY,CAACG,OAAb,CAAqBT,GAArB,EAA0BE,KAA1B;AACA;;AACF,WAAK,SAAL;AACEC,QAAAA,cAAc,CAACM,OAAf,CAAuBT,GAAvB,EAA4BE,KAA5B;AACA;AANJ;;AAQA,WAAOA,KAAP;AACD;;AAEDQ,EAAAA,aAAa,CAACV,GAAD,EAAc;AACzBM,IAAAA,YAAY,CAACK,UAAb,CAAwBX,GAAxB;AACAG,IAAAA,cAAc,CAACQ,UAAf,CAA0BX,GAA1B;AACD;;AAzC8D;;;AA4C1D,IAAMY,mBAAmB,GAAG,IAAId,sBAAJ,EAA5B","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 */\nimport type { IStorageValue, RunItConfigurator, StorageLocation } from '..'\n\nexport class StandaloneConfigurator implements RunItConfigurator {\n getStorage(key: string, defaultValue = ''): IStorageValue {\n let value = sessionStorage.getItem(key)\n if (value) {\n return {\n location: 'session',\n value,\n }\n }\n value = localStorage.getItem(key)\n if (value) {\n return {\n location: 'local',\n value,\n }\n }\n return {\n location: 'session',\n value: defaultValue,\n }\n }\n\n setStorage(\n key: string,\n value: string,\n location: StorageLocation = 'session'\n ): string {\n switch (location.toLocaleLowerCase()) {\n case 'local':\n localStorage.setItem(key, value)\n break\n case 'session':\n sessionStorage.setItem(key, value)\n break\n }\n return value\n }\n\n removeStorage(key: string) {\n localStorage.removeItem(key)\n sessionStorage.removeItem(key)\n }\n}\n\nexport const defaultConfigurator = new StandaloneConfigurator()\n"],"file":"StandaloneConfigurator.js"}
@@ -1,196 +0,0 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
2
-
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4
-
5
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
-
7
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
8
-
9
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
10
-
11
- import { ApiModel, getSpecsFromVersions, upgradeSpecObject } from '@looker/sdk-codegen';
12
- import { BrowserTransport, DefaultSettings } from '@looker/sdk-rtl';
13
- import { api_spec } from '@looker/sdk';
14
- import { runItSDK } from '../..';
15
- export var RunItConfigKey = 'RunItConfig';
16
- export var RunItFormKey = 'RunItForm';
17
- export var RunItNoConfig = {
18
- base_url: '',
19
- looker_url: ''
20
- };
21
- export var validateUrl = url => {
22
- try {
23
- var result = new URL(url);
24
- if (url.endsWith(':')) return url;
25
- return result.origin;
26
- } catch (_unused) {
27
- return '';
28
- }
29
- };
30
-
31
- var makeApi = content => {
32
- var json;
33
-
34
- if (typeof content === 'string') {
35
- json = JSON.parse(content);
36
- } else {
37
- json = content;
38
- }
39
-
40
- json = upgradeSpecObject(json);
41
- return ApiModel.fromJson(json);
42
- };
43
-
44
- export var getUrl = function () {
45
- var _ref = _asyncToGenerator(function* (url) {
46
- var settings = _objectSpread(_objectSpread({}, DefaultSettings()), {
47
- base_url: url,
48
- verify_ssl: false
49
- });
50
-
51
- var xp = new BrowserTransport(settings);
52
- var response = yield xp.rawRequest('GET', url);
53
- return response.body;
54
- });
55
-
56
- return function getUrl(_x) {
57
- return _ref.apply(this, arguments);
58
- };
59
- }();
60
- export var fullify = (uri, baseUrl) => {
61
- if (uri.match(/^https?:/)) {
62
- return uri;
63
- }
64
-
65
- var url = new URL(uri, baseUrl);
66
- return url.toString();
67
- };
68
-
69
- var apiSpecBits = spec => {
70
- var _spec$specURL;
71
-
72
- return ((_spec$specURL = spec.specURL) === null || _spec$specURL === void 0 ? void 0 : _spec$specURL.split('/').slice(-2)) || [];
73
- };
74
-
75
- export var funFetch = (version, name) => {
76
- return runItSDK.ok(api_spec(runItSDK, version, name));
77
- };
78
- export var specUrlFetch = function () {
79
- var _ref2 = _asyncToGenerator(function* (url) {
80
- try {
81
- var content = yield getUrl(url);
82
- return makeApi(content);
83
- } catch (error) {
84
- return undefined;
85
- }
86
- });
87
-
88
- return function specUrlFetch(_x2) {
89
- return _ref2.apply(this, arguments);
90
- };
91
- }();
92
- export var loadSpecsFromVersions = function () {
93
- var _ref3 = _asyncToGenerator(function* (url) {
94
- var content = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
95
- var defer = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
96
- var fetchResult = '';
97
- var specs = {};
98
- var baseUrl = '';
99
- var webUrl = '';
100
- var headless = false;
101
-
102
- try {
103
- if (!content) {
104
- content = yield getUrl(url);
105
- }
106
-
107
- var versions = typeof content === 'string' ? JSON.parse(content) : content;
108
- var origin = window.location.origin;
109
- baseUrl = versions.api_server_url;
110
- webUrl = versions.web_server_url;
111
-
112
- if (versions.headless !== undefined) {
113
- headless = versions.headless;
114
- }
115
-
116
- var fetchSpec = function () {
117
- var _ref4 = _asyncToGenerator(function* (spec) {
118
- if (spec.specURL) {
119
- spec.specURL = fullify(spec.specURL, origin);
120
-
121
- if (!defer) {
122
- spec.api = yield fallbackFetch(spec, funFetch);
123
- }
124
- }
125
-
126
- return spec.api;
127
- });
128
-
129
- return function fetchSpec(_x4) {
130
- return _ref4.apply(this, arguments);
131
- };
132
- }();
133
-
134
- specs = yield getSpecsFromVersions(versions, fetchSpec);
135
- } catch (e) {
136
- fetchResult = e.message;
137
- }
138
-
139
- return {
140
- baseUrl,
141
- webUrl,
142
- specs,
143
- headless,
144
- fetchResult: fetchResult
145
- };
146
- });
147
-
148
- return function loadSpecsFromVersions(_x3) {
149
- return _ref3.apply(this, arguments);
150
- };
151
- }();
152
- export var sdkSpecFetch = function () {
153
- var _ref5 = _asyncToGenerator(function* (spec, fetcher) {
154
- if (spec.api) return spec.api;
155
- if (!spec.specURL) return undefined;
156
- var [version, name] = apiSpecBits(spec);
157
- var content = yield fetcher(version, name);
158
- return makeApi(content);
159
- });
160
-
161
- return function sdkSpecFetch(_x5, _x6) {
162
- return _ref5.apply(this, arguments);
163
- };
164
- }();
165
- export var fallbackFetch = function () {
166
- var _ref6 = _asyncToGenerator(function* (spec, fetcher) {
167
- if (spec.api) return spec.api;
168
- if (!spec.specURL) return undefined;
169
- var api;
170
-
171
- try {
172
- api = yield specUrlFetch(spec.specURL);
173
- } catch (error) {
174
- console.error({
175
- error
176
- });
177
- }
178
-
179
- if (!api) {
180
- var authed = runItSDK.authSession.isAuthenticated();
181
-
182
- if (!authed) {
183
- yield runItSDK.authSession.login();
184
- }
185
-
186
- api = yield sdkSpecFetch(spec, fetcher);
187
- }
188
-
189
- return api;
190
- });
191
-
192
- return function fallbackFetch(_x7, _x8) {
193
- return _ref6.apply(this, arguments);
194
- };
195
- }();
196
- //# sourceMappingURL=configUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/ConfigForm/configUtils.ts"],"names":["ApiModel","getSpecsFromVersions","upgradeSpecObject","BrowserTransport","DefaultSettings","api_spec","runItSDK","RunItConfigKey","RunItFormKey","RunItNoConfig","base_url","looker_url","validateUrl","url","result","URL","endsWith","origin","makeApi","content","json","JSON","parse","fromJson","getUrl","settings","verify_ssl","xp","response","rawRequest","body","fullify","uri","baseUrl","match","toString","apiSpecBits","spec","specURL","split","slice","funFetch","version","name","ok","specUrlFetch","error","undefined","loadSpecsFromVersions","defer","fetchResult","specs","webUrl","headless","versions","window","location","api_server_url","web_server_url","fetchSpec","api","fallbackFetch","e","message","sdkSpecFetch","fetcher","console","authed","authSession","isAuthenticated","login"],"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 { ILookerVersions, SpecItem, SpecList } from '@looker/sdk-codegen'\nimport {\n ApiModel,\n getSpecsFromVersions,\n upgradeSpecObject,\n} from '@looker/sdk-codegen'\nimport { BrowserTransport, DefaultSettings } from '@looker/sdk-rtl'\nimport { api_spec } from '@looker/sdk'\nimport type { RunItValues } from '../..'\nimport { runItSDK } from '../..'\n\nexport type StorageLocation = 'session' | 'local'\nexport const RunItConfigKey = 'RunItConfig'\nexport const RunItFormKey = 'RunItForm'\nexport const RunItNoConfig = { base_url: '', looker_url: '' }\n\n/** Object returned from storage service */\nexport interface IStorageValue {\n /** Location of the stored object */\n location: StorageLocation\n /** Stored string representation of the value (usually JSON) */\n value: string\n}\n\n/** function to retrieve a spec based on version and name */\nexport type ApiSpecFetcher = (\n version: string,\n name: string\n) => Promise<string | RunItValues>\n\n/** Either the spec is parsed or it's undefined */\nexport type ParsedSpec = ApiModel | undefined\n\n/** service abstraction for extension and browser based usage */\nexport interface RunItConfigurator {\n getStorage: (key: string, defaultValue?: string) => IStorageValue\n setStorage(key: string, value: string, location: 'local' | 'session'): string\n removeStorage(key: string): void\n}\n\n/** Processed specifications */\nexport interface ILoadedSpecs {\n /** API server url */\n baseUrl: string\n /** Web server url */\n webUrl: string\n /** should APIX run headless? */\n headless: boolean\n /** loaded specifications */\n specs: SpecList\n /** communication errors */\n fetchResult: string\n}\n\n/** Extends versions payload with headless toggle for API Explorer */\nexport interface IAPIXConfig extends ILookerVersions {\n headless?: boolean\n}\n\n/**\n * Validates URL and standardizes it\n * @param url to validate\n * @returns the standardized url.origin if it's valid, or an empty string if it's not\n */\nexport const validateUrl = (url: string): string => {\n try {\n const result = new URL(url)\n if (url.endsWith(':')) return url\n return result.origin\n } catch {\n return ''\n }\n}\n\n/**\n * Convert content into an ApiModel\n * @param content to convert\n */\nconst makeApi = (content: string | RunItValues) => {\n let json\n if (typeof content === 'string') {\n json = JSON.parse(content)\n } else {\n json = content\n }\n json = upgradeSpecObject(json)\n return ApiModel.fromJson(json)\n}\n\n/**\n * Use the browser transport to GET a url\n * @param url to fetch\n */\nexport const getUrl = async (url: string): Promise<string | RunItValues> => {\n const settings = {\n ...DefaultSettings(),\n ...{ base_url: url, verify_ssl: false },\n }\n const xp = new BrowserTransport(settings)\n const response = await xp.rawRequest('GET', url)\n return response.body\n}\n\n/**\n * Ensure the URI is a full URL\n * @param uri possible relative path\n * @param baseUrl base url for qualifying full path\n */\nexport const fullify = (uri: string, baseUrl: string): string => {\n if (uri.match(/^https?:/)) {\n return uri\n }\n const url = new URL(uri, baseUrl)\n return url.toString()\n}\n/**\n * parse spec url into version and name for api_spec cccall\n * @param spec to parse\n */\nconst apiSpecBits = (spec: SpecItem): string[] =>\n spec.specURL?.split('/').slice(-2) || []\n\n/**\n * Use the functional api_spec fetch\n * @param version to retrieve\n * @param name to retrieve\n */\nexport const funFetch = (version: string, name: string): Promise<string> => {\n return runItSDK.ok(api_spec(runItSDK, version, name))\n}\n\n/**\n * try to fetch a spec by URL, trap any errors and return undefined\n * @param url to convert to an API spec\n */\nexport const specUrlFetch = async (url: string): Promise<ParsedSpec> => {\n try {\n const content = await getUrl(url)\n return makeApi(content)\n } catch (error) {\n return undefined\n }\n}\n\n/**\n * Load versions payload and retrieve all supported specs\n *\n * The versions payload should match the structure of Looker's /versions endpoint\n *\n * @param url that has an unauthenticated versions payload. For Looker, this is <LookerHostName>/versions\n * @param content content of versions payload that may already be assigned\n * @param defer true to defer fetching and parsing the spec. Defaults to true.\n */\nexport const loadSpecsFromVersions = async (\n url: string,\n content: string | Record<string, unknown> = '',\n defer = true\n): Promise<ILoadedSpecs> => {\n let fetchResult = ''\n let specs: SpecList = {}\n let baseUrl = ''\n let webUrl = ''\n let headless = false\n try {\n if (!content) {\n content = await getUrl(url)\n }\n const versions = (\n typeof content === 'string' ? JSON.parse(content) : content\n ) as IAPIXConfig\n const origin = (window as any).location.origin\n baseUrl = versions.api_server_url\n webUrl = versions.web_server_url\n if (versions.headless !== undefined) {\n headless = versions.headless\n }\n const fetchSpec = async (spec: SpecItem) => {\n if (spec.specURL) {\n spec.specURL = fullify(spec.specURL, origin)\n if (!defer) {\n spec.api = await fallbackFetch(spec, funFetch)\n }\n }\n return spec.api\n }\n specs = await getSpecsFromVersions(versions, fetchSpec)\n } catch (e: any) {\n fetchResult = e.message\n }\n\n return {\n baseUrl,\n webUrl,\n specs,\n headless,\n fetchResult: fetchResult,\n }\n}\n\n/**\n * fetch and compile an API specification to an ApiModel if it's not already available\n *\n * **NOTE**: This uses Looker API 4.0 to fetch the specification so fetch works with CORS\n *\n * @param spec to fetch and compile\n * @param fetcher function to retrieve API spec content\n */\nexport const sdkSpecFetch = async (\n spec: SpecItem,\n fetcher: ApiSpecFetcher\n): Promise<ParsedSpec> => {\n if (spec.api) return spec.api\n if (!spec.specURL) return undefined\n const [version, name] = apiSpecBits(spec)\n const content = await fetcher(version, name)\n return makeApi(content)\n}\n\n/** Attempt to retrieve spec by URL, then api_spec SDK call\n *\n * @param spec to fetch\n * @param fetcher function to retrieve and parse spec\n */\nexport const fallbackFetch = async (\n spec: SpecItem,\n fetcher: ApiSpecFetcher\n): Promise<ParsedSpec> => {\n if (spec.api) return spec.api\n if (!spec.specURL) return undefined\n let api: ParsedSpec\n try {\n api = await specUrlFetch(spec.specURL)\n } catch (error) {\n console.error({ error })\n }\n if (!api) {\n const authed = runItSDK.authSession.isAuthenticated()\n if (!authed) {\n await runItSDK.authSession.login()\n }\n api = await sdkSpecFetch(spec, fetcher)\n }\n return api\n}\n"],"file":"configUtils.js"}
@@ -1,51 +0,0 @@
1
- export class StandaloneConfigurator {
2
- getStorage(key) {
3
- var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
4
- var value = sessionStorage.getItem(key);
5
-
6
- if (value) {
7
- return {
8
- location: 'session',
9
- value
10
- };
11
- }
12
-
13
- value = localStorage.getItem(key);
14
-
15
- if (value) {
16
- return {
17
- location: 'local',
18
- value
19
- };
20
- }
21
-
22
- return {
23
- location: 'session',
24
- value: defaultValue
25
- };
26
- }
27
-
28
- setStorage(key, value) {
29
- var location = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'session';
30
-
31
- switch (location.toLocaleLowerCase()) {
32
- case 'local':
33
- localStorage.setItem(key, value);
34
- break;
35
-
36
- case 'session':
37
- sessionStorage.setItem(key, value);
38
- break;
39
- }
40
-
41
- return value;
42
- }
43
-
44
- removeStorage(key) {
45
- localStorage.removeItem(key);
46
- sessionStorage.removeItem(key);
47
- }
48
-
49
- }
50
- export var defaultConfigurator = new StandaloneConfigurator();
51
- //# sourceMappingURL=StandaloneConfigurator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/common/StandaloneConfigurator.ts"],"names":["StandaloneConfigurator","getStorage","key","defaultValue","value","sessionStorage","getItem","location","localStorage","setStorage","toLocaleLowerCase","setItem","removeStorage","removeItem","defaultConfigurator"],"mappings":"AA2BA,OAAO,MAAMA,sBAAN,CAA0D;AAC/DC,EAAAA,UAAU,CAACC,GAAD,EAAgD;AAAA,QAAlCC,YAAkC,uEAAnB,EAAmB;AACxD,QAAIC,KAAK,GAAGC,cAAc,CAACC,OAAf,CAAuBJ,GAAvB,CAAZ;;AACA,QAAIE,KAAJ,EAAW;AACT,aAAO;AACLG,QAAAA,QAAQ,EAAE,SADL;AAELH,QAAAA;AAFK,OAAP;AAID;;AACDA,IAAAA,KAAK,GAAGI,YAAY,CAACF,OAAb,CAAqBJ,GAArB,CAAR;;AACA,QAAIE,KAAJ,EAAW;AACT,aAAO;AACLG,QAAAA,QAAQ,EAAE,OADL;AAELH,QAAAA;AAFK,OAAP;AAID;;AACD,WAAO;AACLG,MAAAA,QAAQ,EAAE,SADL;AAELH,MAAAA,KAAK,EAAED;AAFF,KAAP;AAID;;AAEDM,EAAAA,UAAU,CACRP,GADQ,EAERE,KAFQ,EAIA;AAAA,QADRG,QACQ,uEADoB,SACpB;;AACR,YAAQA,QAAQ,CAACG,iBAAT,EAAR;AACE,WAAK,OAAL;AACEF,QAAAA,YAAY,CAACG,OAAb,CAAqBT,GAArB,EAA0BE,KAA1B;AACA;;AACF,WAAK,SAAL;AACEC,QAAAA,cAAc,CAACM,OAAf,CAAuBT,GAAvB,EAA4BE,KAA5B;AACA;AANJ;;AAQA,WAAOA,KAAP;AACD;;AAEDQ,EAAAA,aAAa,CAACV,GAAD,EAAc;AACzBM,IAAAA,YAAY,CAACK,UAAb,CAAwBX,GAAxB;AACAG,IAAAA,cAAc,CAACQ,UAAf,CAA0BX,GAA1B;AACD;;AAzC8D;AA4CjE,OAAO,IAAMY,mBAAmB,GAAG,IAAId,sBAAJ,EAA5B","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 */\nimport type { IStorageValue, RunItConfigurator, StorageLocation } from '..'\n\nexport class StandaloneConfigurator implements RunItConfigurator {\n getStorage(key: string, defaultValue = ''): IStorageValue {\n let value = sessionStorage.getItem(key)\n if (value) {\n return {\n location: 'session',\n value,\n }\n }\n value = localStorage.getItem(key)\n if (value) {\n return {\n location: 'local',\n value,\n }\n }\n return {\n location: 'session',\n value: defaultValue,\n }\n }\n\n setStorage(\n key: string,\n value: string,\n location: StorageLocation = 'session'\n ): string {\n switch (location.toLocaleLowerCase()) {\n case 'local':\n localStorage.setItem(key, value)\n break\n case 'session':\n sessionStorage.setItem(key, value)\n break\n }\n return value\n }\n\n removeStorage(key: string) {\n localStorage.removeItem(key)\n sessionStorage.removeItem(key)\n }\n}\n\nexport const defaultConfigurator = new StandaloneConfigurator()\n"],"file":"StandaloneConfigurator.js"}