@looker/extension-utils 0.1.29 → 0.1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/lib/APIErrorDisplay/APIErrorContent.js.map +1 -1
- package/lib/APIErrorDisplay/APIErrorDetails.js.map +1 -1
- package/lib/APIErrorDisplay/APIErrorDialog.js.map +1 -1
- package/lib/APIErrorDisplay/APIErrorDisplay.js.map +1 -1
- package/lib/APIErrorDisplay/APIErrorDocLink.js.map +1 -1
- package/lib/APIErrorDisplay/utils.js.map +1 -1
- package/lib/ExtMarkdown.js.map +1 -1
- package/lib/OAuthForm/src/components/CollapserCard.js.map +1 -1
- package/lib/OAuthForm/src/components/ConfigHeading.js.map +1 -1
- package/lib/OAuthForm/src/components/OAuthForm.js.map +1 -1
- package/lib/OAuthForm/src/state/sagas.js.map +1 -1
- package/lib/OAuthForm/src/state/slice.js.map +1 -1
- package/lib/OAuthForm/src/utils.js.map +1 -1
- package/lib/OAuthScene.js.map +1 -1
- package/lib/adaptorUtils.js.map +1 -1
- package/lib/authUtils.js.map +1 -1
- package/lib/browserAdaptor.js.map +1 -1
- package/lib/esm/APIErrorDisplay/APIErrorContent.js +16 -25
- package/lib/esm/APIErrorDisplay/APIErrorContent.js.map +1 -1
- package/lib/esm/APIErrorDisplay/APIErrorDetails.js +13 -21
- package/lib/esm/APIErrorDisplay/APIErrorDetails.js.map +1 -1
- package/lib/esm/APIErrorDisplay/APIErrorDialog.js +10 -18
- package/lib/esm/APIErrorDisplay/APIErrorDialog.js.map +1 -1
- package/lib/esm/APIErrorDisplay/APIErrorDisplay.js +7 -15
- package/lib/esm/APIErrorDisplay/APIErrorDisplay.js.map +1 -1
- package/lib/esm/APIErrorDisplay/APIErrorDocLink.js +7 -15
- package/lib/esm/APIErrorDisplay/APIErrorDocLink.js.map +1 -1
- package/lib/esm/APIErrorDisplay/index.js +3 -39
- package/lib/esm/APIErrorDisplay/index.js.map +1 -1
- package/lib/esm/APIErrorDisplay/utils.js +2 -10
- package/lib/esm/APIErrorDisplay/utils.js.map +1 -1
- package/lib/esm/ExtMarkdown.js +6 -14
- package/lib/esm/ExtMarkdown.js.map +1 -1
- package/lib/esm/OAuthForm/index.js +1 -16
- package/lib/esm/OAuthForm/index.js.map +1 -1
- package/lib/esm/OAuthForm/src/components/CollapserCard.js +13 -21
- package/lib/esm/OAuthForm/src/components/CollapserCard.js.map +1 -1
- package/lib/esm/OAuthForm/src/components/ConfigHeading.js +3 -11
- package/lib/esm/OAuthForm/src/components/ConfigHeading.js.map +1 -1
- package/lib/esm/OAuthForm/src/components/OAuthForm.js +41 -51
- package/lib/esm/OAuthForm/src/components/OAuthForm.js.map +1 -1
- package/lib/esm/OAuthForm/src/components/index.js +1 -12
- package/lib/esm/OAuthForm/src/components/index.js.map +1 -1
- package/lib/esm/OAuthForm/src/index.js +2 -27
- package/lib/esm/OAuthForm/src/index.js.map +1 -1
- package/lib/esm/OAuthForm/src/state/index.js +1 -12
- package/lib/esm/OAuthForm/src/state/index.js.map +1 -1
- package/lib/esm/OAuthForm/src/state/sagas.js +38 -44
- package/lib/esm/OAuthForm/src/state/sagas.js.map +1 -1
- package/lib/esm/OAuthForm/src/state/slice.js +11 -24
- package/lib/esm/OAuthForm/src/state/slice.js.map +1 -1
- package/lib/esm/OAuthForm/src/utils.js +6 -15
- package/lib/esm/OAuthForm/src/utils.js.map +1 -1
- package/lib/esm/OAuthScene.js +14 -23
- package/lib/esm/OAuthScene.js.map +1 -1
- package/lib/esm/adaptorUtils.js +9 -22
- package/lib/esm/adaptorUtils.js.map +1 -1
- package/lib/esm/authUtils.js +2 -9
- package/lib/esm/authUtils.js.map +1 -1
- package/lib/esm/browserAdaptor.js +4 -12
- package/lib/esm/browserAdaptor.js.map +1 -1
- package/lib/esm/extensionAdaptor.js +4 -12
- package/lib/esm/extensionAdaptor.js.map +1 -1
- package/lib/esm/index.js +8 -93
- package/lib/esm/index.js.map +1 -1
- package/lib/extensionAdaptor.js.map +1 -1
- package/package.json +5 -5
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.saga = saga;
|
|
7
|
-
var _typedReduxSaga = require("typed-redux-saga");
|
|
8
|
-
var _utils = require("../utils");
|
|
9
|
-
var _slice = require("./slice");
|
|
1
|
+
import { takeEvery, put, call, select } from 'typed-redux-saga';
|
|
2
|
+
import { getVersions, validateUrl } from '../utils';
|
|
3
|
+
import { OAuthFormSlice, OAuthFormActions } from './slice';
|
|
10
4
|
var getLocalStorageConfig = configKey => {
|
|
11
5
|
var EmptyConfig = {
|
|
12
6
|
base_url: '',
|
|
@@ -20,28 +14,28 @@ function* initSaga(action) {
|
|
|
20
14
|
var {
|
|
21
15
|
initSuccessAction,
|
|
22
16
|
setFailureAction
|
|
23
|
-
} =
|
|
17
|
+
} = OAuthFormActions;
|
|
24
18
|
try {
|
|
25
|
-
var result = yield*
|
|
26
|
-
yield*
|
|
19
|
+
var result = yield* call(getLocalStorageConfig, action.payload);
|
|
20
|
+
yield* put(initSuccessAction(result));
|
|
27
21
|
} catch (error) {
|
|
28
|
-
yield*
|
|
22
|
+
yield* put(setFailureAction(error.message));
|
|
29
23
|
}
|
|
30
24
|
}
|
|
31
25
|
function* setUrlSaga(action) {
|
|
32
26
|
var {
|
|
33
27
|
updateValidationMessages,
|
|
34
28
|
setUrlActionSuccess
|
|
35
|
-
} =
|
|
29
|
+
} = OAuthFormActions;
|
|
36
30
|
try {
|
|
37
|
-
var url =
|
|
31
|
+
var url = validateUrl(action.payload.value);
|
|
38
32
|
if (!url) throw new Error("".concat(action.payload.value, " is not a valid url"));
|
|
39
|
-
yield*
|
|
33
|
+
yield* put(updateValidationMessages({
|
|
40
34
|
elementName: action.payload.name,
|
|
41
35
|
newMessage: null
|
|
42
36
|
}));
|
|
43
37
|
} catch (error) {
|
|
44
|
-
yield*
|
|
38
|
+
yield* put(updateValidationMessages({
|
|
45
39
|
elementName: action.payload.name,
|
|
46
40
|
newMessage: {
|
|
47
41
|
message: error.message,
|
|
@@ -49,8 +43,8 @@ function* setUrlSaga(action) {
|
|
|
49
43
|
}
|
|
50
44
|
}));
|
|
51
45
|
} finally {
|
|
52
|
-
var _url =
|
|
53
|
-
yield*
|
|
46
|
+
var _url = validateUrl(action.payload.value);
|
|
47
|
+
yield* put(setUrlActionSuccess(_url || action.payload.value));
|
|
54
48
|
}
|
|
55
49
|
}
|
|
56
50
|
function* clearConfigSaga(action) {
|
|
@@ -58,7 +52,7 @@ function* clearConfigSaga(action) {
|
|
|
58
52
|
clearConfigActionSuccess,
|
|
59
53
|
setFailureAction,
|
|
60
54
|
updateMessageBarAction
|
|
61
|
-
} =
|
|
55
|
+
} = OAuthFormActions;
|
|
62
56
|
try {
|
|
63
57
|
var {
|
|
64
58
|
configKey,
|
|
@@ -68,46 +62,46 @@ function* clearConfigSaga(action) {
|
|
|
68
62
|
localStorage.removeItem(configKey);
|
|
69
63
|
if (setHasConfig) setHasConfig(false);
|
|
70
64
|
if (isAuthenticated) {
|
|
71
|
-
yield*
|
|
65
|
+
yield* put(updateMessageBarAction({
|
|
72
66
|
intent: 'warn',
|
|
73
67
|
text: 'Please reload the browser page to log out'
|
|
74
68
|
}));
|
|
75
69
|
}
|
|
76
|
-
yield*
|
|
70
|
+
yield* put(clearConfigActionSuccess());
|
|
77
71
|
} catch (error) {
|
|
78
|
-
yield*
|
|
72
|
+
yield* put(setFailureAction(error.message));
|
|
79
73
|
}
|
|
80
74
|
}
|
|
81
75
|
function* verifyConfigSaga() {
|
|
82
|
-
var apiServerUrl = yield*
|
|
83
|
-
var formState = storeState[
|
|
76
|
+
var apiServerUrl = yield* select(storeState => {
|
|
77
|
+
var formState = storeState[OAuthFormSlice.name];
|
|
84
78
|
return formState.apiServerUrl;
|
|
85
79
|
});
|
|
86
80
|
var {
|
|
87
81
|
verifyConfigActionFailure,
|
|
88
82
|
verifyConfigActionSuccess,
|
|
89
83
|
clearMessageBarAction
|
|
90
|
-
} =
|
|
84
|
+
} = OAuthFormActions;
|
|
91
85
|
try {
|
|
92
|
-
yield*
|
|
86
|
+
yield* put(clearMessageBarAction());
|
|
93
87
|
var versionsUrl = "".concat(apiServerUrl, "/versions");
|
|
94
|
-
var versions = yield*
|
|
88
|
+
var versions = yield* call(getVersions, versionsUrl);
|
|
95
89
|
if (!versions) throw new Error();
|
|
96
|
-
yield*
|
|
90
|
+
yield* put(verifyConfigActionSuccess(versions.web_server_url));
|
|
97
91
|
} catch (error) {
|
|
98
|
-
yield*
|
|
92
|
+
yield* put(verifyConfigActionFailure(error.message));
|
|
99
93
|
}
|
|
100
94
|
}
|
|
101
95
|
function* saveConfigSaga(action) {
|
|
102
|
-
var apiServerUrl = yield*
|
|
103
|
-
var formState = storeState[
|
|
96
|
+
var apiServerUrl = yield* select(storeState => {
|
|
97
|
+
var formState = storeState[OAuthFormSlice.name];
|
|
104
98
|
return formState.apiServerUrl;
|
|
105
99
|
});
|
|
106
100
|
var {
|
|
107
101
|
verifyConfigActionFailure,
|
|
108
102
|
clearMessageBarAction,
|
|
109
103
|
saveConfigActionSuccess
|
|
110
|
-
} =
|
|
104
|
+
} = OAuthFormActions;
|
|
111
105
|
var {
|
|
112
106
|
configKey,
|
|
113
107
|
setHasConfig,
|
|
@@ -115,9 +109,9 @@ function* saveConfigSaga(action) {
|
|
|
115
109
|
redirect_uri
|
|
116
110
|
} = action.payload;
|
|
117
111
|
try {
|
|
118
|
-
yield*
|
|
112
|
+
yield* put(clearMessageBarAction());
|
|
119
113
|
var versionsUrl = "".concat(apiServerUrl, "/versions");
|
|
120
|
-
var versions = yield*
|
|
114
|
+
var versions = yield* call(getVersions, versionsUrl);
|
|
121
115
|
if (!versions) throw new Error();
|
|
122
116
|
var data = {
|
|
123
117
|
base_url: versions.api_server_url,
|
|
@@ -127,26 +121,26 @@ function* saveConfigSaga(action) {
|
|
|
127
121
|
};
|
|
128
122
|
localStorage.setItem(configKey, JSON.stringify(data));
|
|
129
123
|
if (setHasConfig) setHasConfig(true);
|
|
130
|
-
yield*
|
|
124
|
+
yield* put(saveConfigActionSuccess({
|
|
131
125
|
base_url: versions.api_server_url,
|
|
132
126
|
looker_url: versions.web_server_url
|
|
133
127
|
}));
|
|
134
128
|
} catch (error) {
|
|
135
|
-
yield*
|
|
129
|
+
yield* put(verifyConfigActionFailure(error.message));
|
|
136
130
|
}
|
|
137
131
|
}
|
|
138
|
-
function* saga() {
|
|
132
|
+
export function* saga() {
|
|
139
133
|
var {
|
|
140
134
|
initAction,
|
|
141
135
|
setUrlAction,
|
|
142
136
|
clearConfigAction,
|
|
143
137
|
verifyConfigAction,
|
|
144
138
|
saveConfigAction
|
|
145
|
-
} =
|
|
146
|
-
yield*
|
|
147
|
-
yield*
|
|
148
|
-
yield*
|
|
149
|
-
yield*
|
|
150
|
-
yield*
|
|
139
|
+
} = OAuthFormActions;
|
|
140
|
+
yield* takeEvery(initAction, initSaga);
|
|
141
|
+
yield* takeEvery(setUrlAction, setUrlSaga);
|
|
142
|
+
yield* takeEvery(clearConfigAction, clearConfigSaga);
|
|
143
|
+
yield* takeEvery(verifyConfigAction, verifyConfigSaga);
|
|
144
|
+
yield* takeEvery(saveConfigAction, saveConfigSaga);
|
|
151
145
|
}
|
|
152
146
|
//# sourceMappingURL=sagas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sagas.js","names":["_typedReduxSaga","require","_utils","_slice","getLocalStorageConfig","configKey","EmptyConfig","base_url","looker_url","data","localStorage","getItem","result","JSON","parse","initSaga","action","initSuccessAction","setFailureAction","OAuthFormActions","call","payload","put","error","message","setUrlSaga","updateValidationMessages","setUrlActionSuccess","url","validateUrl","value","Error","concat","elementName","name","newMessage","type","clearConfigSaga","clearConfigActionSuccess","updateMessageBarAction","setHasConfig","isAuthenticated","removeItem","intent","text","verifyConfigSaga","apiServerUrl","select","storeState","formState","OAuthFormSlice","verifyConfigActionFailure","verifyConfigActionSuccess","clearMessageBarAction","versionsUrl","versions","getVersions","web_server_url","saveConfigSaga","saveConfigActionSuccess","client_id","redirect_uri","api_server_url","setItem","stringify","saga","initAction","setUrlAction","clearConfigAction","verifyConfigAction","saveConfigAction","takeEvery"],"sources":["../../../../../src/OAuthForm/src/state/sagas.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2023 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 { PayloadAction } from '@reduxjs/toolkit'\nimport { takeEvery, put, call, select } from 'typed-redux-saga'\nimport type { ConfigValues } from '../utils'\nimport { getVersions, validateUrl } from '../utils'\nimport type {\n ClearConfigActionPayload,\n SetUrlActionPayload,\n OAuthFormState,\n SaveConfigPayload,\n} from './slice'\nimport { OAuthFormSlice, OAuthFormActions } from './slice'\n\n/**\n * get saved configData from localStorage key\n * @param configKey key that config will be saved under in local storage\n * @returns\n */\nconst getLocalStorageConfig = (configKey: string): ConfigValues => {\n const EmptyConfig = {\n base_url: '',\n looker_url: '',\n }\n const data = localStorage.getItem(configKey)\n const result = data ? JSON.parse(data) : EmptyConfig\n\n return result\n}\n\n/**\n * checks for saved configData in localStorage\n */\nfunction* initSaga(action: PayloadAction<string>) {\n const { initSuccessAction, setFailureAction } = OAuthFormActions\n try {\n const result = yield* call(getLocalStorageConfig, action.payload)\n yield* put(initSuccessAction(result))\n } catch (error: any) {\n yield* put(setFailureAction(error.message))\n }\n}\n\n/**\n * updates the new url and adds or removes form validation message\n * @param action containing name and value of form element changed\n */\nfunction* setUrlSaga(action: PayloadAction<SetUrlActionPayload>) {\n const { updateValidationMessages, setUrlActionSuccess } = OAuthFormActions\n try {\n const url = validateUrl(action.payload.value)\n if (!url) throw new Error(`${action.payload.value} is not a valid url`)\n\n // clear the error message if one was there\n yield* put(\n updateValidationMessages({\n elementName: action.payload.name,\n newMessage: null,\n })\n )\n } catch (error: any) {\n yield* put(\n updateValidationMessages({\n elementName: action.payload.name,\n newMessage: {\n message: error.message,\n type: 'error',\n },\n })\n )\n } finally {\n // update the form element\n const url = validateUrl(action.payload.value)\n yield* put(setUrlActionSuccess(url || action.payload.value))\n }\n}\n\n/**\n * clears form, removes local storage config key and triggers callback function\n * @param action containing the localstorage key to clear, a callback function, and if the user is already authenticated\n */\nfunction* clearConfigSaga(action: PayloadAction<ClearConfigActionPayload>) {\n const { clearConfigActionSuccess, setFailureAction, updateMessageBarAction } =\n OAuthFormActions\n try {\n const { configKey, setHasConfig, isAuthenticated } = action.payload\n localStorage.removeItem(configKey)\n if (setHasConfig) setHasConfig(false)\n if (isAuthenticated) {\n yield* put(\n updateMessageBarAction({\n intent: 'warn',\n text: 'Please reload the browser page to log out',\n })\n )\n }\n yield* put(clearConfigActionSuccess())\n } catch (error: any) {\n yield* put(setFailureAction(error.message))\n }\n}\n\n/**\n * verify button clicked, verifies apiServerUrl and populates OAuth server URL if valid\n */\nfunction* verifyConfigSaga() {\n const apiServerUrl = yield* select((storeState) => {\n const formState: OAuthFormState = storeState[OAuthFormSlice.name]\n return formState.apiServerUrl\n })\n const {\n verifyConfigActionFailure,\n verifyConfigActionSuccess,\n clearMessageBarAction,\n } = OAuthFormActions\n\n try {\n yield* put(clearMessageBarAction())\n const versionsUrl = `${apiServerUrl}/versions`\n\n const versions = yield* call(getVersions, versionsUrl)\n if (!versions) throw new Error()\n\n yield* put(verifyConfigActionSuccess(versions.web_server_url))\n } catch (error: any) {\n yield* put(verifyConfigActionFailure(error.message))\n }\n}\n\n/**\n * save button clicked, verify api server url and if valid save config data to localstorage\n * @param action containing configKey, callback function, client_id and redirect_uri\n */\nfunction* saveConfigSaga(action: PayloadAction<SaveConfigPayload>) {\n const apiServerUrl = yield* select((storeState) => {\n const formState: OAuthFormState = storeState[OAuthFormSlice.name]\n return formState.apiServerUrl\n })\n const {\n verifyConfigActionFailure,\n clearMessageBarAction,\n saveConfigActionSuccess,\n } = OAuthFormActions\n const { configKey, setHasConfig, client_id, redirect_uri } = action.payload\n\n try {\n yield* put(clearMessageBarAction())\n const versionsUrl = `${apiServerUrl}/versions`\n\n const versions = yield* call(getVersions, versionsUrl)\n if (!versions) throw new Error()\n\n const data = {\n base_url: versions.api_server_url,\n looker_url: versions.web_server_url,\n client_id,\n redirect_uri,\n }\n localStorage.setItem(configKey, JSON.stringify(data))\n if (setHasConfig) setHasConfig(true)\n\n yield* put(\n saveConfigActionSuccess({\n base_url: versions.api_server_url,\n looker_url: versions.web_server_url,\n })\n )\n } catch (error: any) {\n yield* put(verifyConfigActionFailure(error.message))\n }\n}\n\nexport function* saga() {\n const {\n initAction,\n setUrlAction,\n clearConfigAction,\n verifyConfigAction,\n saveConfigAction,\n } = OAuthFormActions\n yield* takeEvery(initAction, initSaga)\n yield* takeEvery(setUrlAction, setUrlSaga)\n yield* takeEvery(clearConfigAction, clearConfigSaga)\n yield* takeEvery(verifyConfigAction, verifyConfigSaga)\n yield* takeEvery(saveConfigAction, saveConfigSaga)\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sagas.js","names":["takeEvery","put","call","select","getVersions","validateUrl","OAuthFormSlice","OAuthFormActions","getLocalStorageConfig","configKey","EmptyConfig","base_url","looker_url","data","localStorage","getItem","result","JSON","parse","initSaga","action","initSuccessAction","setFailureAction","payload","error","message","setUrlSaga","updateValidationMessages","setUrlActionSuccess","url","value","Error","concat","elementName","name","newMessage","type","clearConfigSaga","clearConfigActionSuccess","updateMessageBarAction","setHasConfig","isAuthenticated","removeItem","intent","text","verifyConfigSaga","apiServerUrl","storeState","formState","verifyConfigActionFailure","verifyConfigActionSuccess","clearMessageBarAction","versionsUrl","versions","web_server_url","saveConfigSaga","saveConfigActionSuccess","client_id","redirect_uri","api_server_url","setItem","stringify","saga","initAction","setUrlAction","clearConfigAction","verifyConfigAction","saveConfigAction"],"sources":["../../../../../src/OAuthForm/src/state/sagas.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2023 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 { PayloadAction } from '@reduxjs/toolkit'\nimport { takeEvery, put, call, select } from 'typed-redux-saga'\nimport type { ConfigValues } from '../utils'\nimport { getVersions, validateUrl } from '../utils'\nimport type {\n ClearConfigActionPayload,\n SetUrlActionPayload,\n OAuthFormState,\n SaveConfigPayload,\n} from './slice'\nimport { OAuthFormSlice, OAuthFormActions } from './slice'\n\n/**\n * get saved configData from localStorage key\n * @param configKey key that config will be saved under in local storage\n * @returns\n */\nconst getLocalStorageConfig = (configKey: string): ConfigValues => {\n const EmptyConfig = {\n base_url: '',\n looker_url: '',\n }\n const data = localStorage.getItem(configKey)\n const result = data ? JSON.parse(data) : EmptyConfig\n\n return result\n}\n\n/**\n * checks for saved configData in localStorage\n */\nfunction* initSaga(action: PayloadAction<string>) {\n const { initSuccessAction, setFailureAction } = OAuthFormActions\n try {\n const result = yield* call(getLocalStorageConfig, action.payload)\n yield* put(initSuccessAction(result))\n } catch (error: any) {\n yield* put(setFailureAction(error.message))\n }\n}\n\n/**\n * updates the new url and adds or removes form validation message\n * @param action containing name and value of form element changed\n */\nfunction* setUrlSaga(action: PayloadAction<SetUrlActionPayload>) {\n const { updateValidationMessages, setUrlActionSuccess } = OAuthFormActions\n try {\n const url = validateUrl(action.payload.value)\n if (!url) throw new Error(`${action.payload.value} is not a valid url`)\n\n // clear the error message if one was there\n yield* put(\n updateValidationMessages({\n elementName: action.payload.name,\n newMessage: null,\n })\n )\n } catch (error: any) {\n yield* put(\n updateValidationMessages({\n elementName: action.payload.name,\n newMessage: {\n message: error.message,\n type: 'error',\n },\n })\n )\n } finally {\n // update the form element\n const url = validateUrl(action.payload.value)\n yield* put(setUrlActionSuccess(url || action.payload.value))\n }\n}\n\n/**\n * clears form, removes local storage config key and triggers callback function\n * @param action containing the localstorage key to clear, a callback function, and if the user is already authenticated\n */\nfunction* clearConfigSaga(action: PayloadAction<ClearConfigActionPayload>) {\n const { clearConfigActionSuccess, setFailureAction, updateMessageBarAction } =\n OAuthFormActions\n try {\n const { configKey, setHasConfig, isAuthenticated } = action.payload\n localStorage.removeItem(configKey)\n if (setHasConfig) setHasConfig(false)\n if (isAuthenticated) {\n yield* put(\n updateMessageBarAction({\n intent: 'warn',\n text: 'Please reload the browser page to log out',\n })\n )\n }\n yield* put(clearConfigActionSuccess())\n } catch (error: any) {\n yield* put(setFailureAction(error.message))\n }\n}\n\n/**\n * verify button clicked, verifies apiServerUrl and populates OAuth server URL if valid\n */\nfunction* verifyConfigSaga() {\n const apiServerUrl = yield* select((storeState) => {\n const formState: OAuthFormState = storeState[OAuthFormSlice.name]\n return formState.apiServerUrl\n })\n const {\n verifyConfigActionFailure,\n verifyConfigActionSuccess,\n clearMessageBarAction,\n } = OAuthFormActions\n\n try {\n yield* put(clearMessageBarAction())\n const versionsUrl = `${apiServerUrl}/versions`\n\n const versions = yield* call(getVersions, versionsUrl)\n if (!versions) throw new Error()\n\n yield* put(verifyConfigActionSuccess(versions.web_server_url))\n } catch (error: any) {\n yield* put(verifyConfigActionFailure(error.message))\n }\n}\n\n/**\n * save button clicked, verify api server url and if valid save config data to localstorage\n * @param action containing configKey, callback function, client_id and redirect_uri\n */\nfunction* saveConfigSaga(action: PayloadAction<SaveConfigPayload>) {\n const apiServerUrl = yield* select((storeState) => {\n const formState: OAuthFormState = storeState[OAuthFormSlice.name]\n return formState.apiServerUrl\n })\n const {\n verifyConfigActionFailure,\n clearMessageBarAction,\n saveConfigActionSuccess,\n } = OAuthFormActions\n const { configKey, setHasConfig, client_id, redirect_uri } = action.payload\n\n try {\n yield* put(clearMessageBarAction())\n const versionsUrl = `${apiServerUrl}/versions`\n\n const versions = yield* call(getVersions, versionsUrl)\n if (!versions) throw new Error()\n\n const data = {\n base_url: versions.api_server_url,\n looker_url: versions.web_server_url,\n client_id,\n redirect_uri,\n }\n localStorage.setItem(configKey, JSON.stringify(data))\n if (setHasConfig) setHasConfig(true)\n\n yield* put(\n saveConfigActionSuccess({\n base_url: versions.api_server_url,\n looker_url: versions.web_server_url,\n })\n )\n } catch (error: any) {\n yield* put(verifyConfigActionFailure(error.message))\n }\n}\n\nexport function* saga() {\n const {\n initAction,\n setUrlAction,\n clearConfigAction,\n verifyConfigAction,\n saveConfigAction,\n } = OAuthFormActions\n yield* takeEvery(initAction, initSaga)\n yield* takeEvery(setUrlAction, setUrlSaga)\n yield* takeEvery(clearConfigAction, clearConfigSaga)\n yield* takeEvery(verifyConfigAction, verifyConfigSaga)\n yield* takeEvery(saveConfigAction, saveConfigSaga)\n}\n"],"mappings":"AA0BA,SAASA,SAAS,EAAEC,GAAG,EAAEC,IAAI,EAAEC,MAAM,QAAQ,kBAAkB;AAE/D,SAASC,WAAW,EAAEC,WAAW,QAAQ,UAAU;AAOnD,SAASC,cAAc,EAAEC,gBAAgB,QAAQ,SAAS;AAO1D,IAAMC,qBAAqB,GAAIC,SAAiB,IAAmB;EACjE,IAAMC,WAAW,GAAG;IAClBC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE;EACd,CAAC;EACD,IAAMC,IAAI,GAAGC,YAAY,CAACC,OAAO,CAACN,SAAS,CAAC;EAC5C,IAAMO,MAAM,GAAGH,IAAI,GAAGI,IAAI,CAACC,KAAK,CAACL,IAAI,CAAC,GAAGH,WAAW;EAEpD,OAAOM,MAAM;AACf,CAAC;AAKD,UAAUG,QAAQA,CAACC,MAA6B,EAAE;EAChD,IAAM;IAAEC,iBAAiB;IAAEC;EAAiB,CAAC,GAAGf,gBAAgB;EAChE,IAAI;IACF,IAAMS,MAAM,GAAG,OAAOd,IAAI,CAACM,qBAAqB,EAAEY,MAAM,CAACG,OAAO,CAAC;IACjE,OAAOtB,GAAG,CAACoB,iBAAiB,CAACL,MAAM,CAAC,CAAC;EACvC,CAAC,CAAC,OAAOQ,KAAU,EAAE;IACnB,OAAOvB,GAAG,CAACqB,gBAAgB,CAACE,KAAK,CAACC,OAAO,CAAC,CAAC;EAC7C;AACF;AAMA,UAAUC,UAAUA,CAACN,MAA0C,EAAE;EAC/D,IAAM;IAAEO,wBAAwB;IAAEC;EAAoB,CAAC,GAAGrB,gBAAgB;EAC1E,IAAI;IACF,IAAMsB,GAAG,GAAGxB,WAAW,CAACe,MAAM,CAACG,OAAO,CAACO,KAAK,CAAC;IAC7C,IAAI,CAACD,GAAG,EAAE,MAAM,IAAIE,KAAK,IAAAC,MAAA,CAAIZ,MAAM,CAACG,OAAO,CAACO,KAAK,wBAAqB,CAAC;IAGvE,OAAO7B,GAAG,CACR0B,wBAAwB,CAAC;MACvBM,WAAW,EAAEb,MAAM,CAACG,OAAO,CAACW,IAAI;MAChCC,UAAU,EAAE;IACd,CAAC,CACH,CAAC;EACH,CAAC,CAAC,OAAOX,KAAU,EAAE;IACnB,OAAOvB,GAAG,CACR0B,wBAAwB,CAAC;MACvBM,WAAW,EAAEb,MAAM,CAACG,OAAO,CAACW,IAAI;MAChCC,UAAU,EAAE;QACVV,OAAO,EAAED,KAAK,CAACC,OAAO;QACtBW,IAAI,EAAE;MACR;IACF,CAAC,CACH,CAAC;EACH,CAAC,SAAS;IAER,IAAMP,IAAG,GAAGxB,WAAW,CAACe,MAAM,CAACG,OAAO,CAACO,KAAK,CAAC;IAC7C,OAAO7B,GAAG,CAAC2B,mBAAmB,CAACC,IAAG,IAAIT,MAAM,CAACG,OAAO,CAACO,KAAK,CAAC,CAAC;EAC9D;AACF;AAMA,UAAUO,eAAeA,CAACjB,MAA+C,EAAE;EACzE,IAAM;IAAEkB,wBAAwB;IAAEhB,gBAAgB;IAAEiB;EAAuB,CAAC,GAC1EhC,gBAAgB;EAClB,IAAI;IACF,IAAM;MAAEE,SAAS;MAAE+B,YAAY;MAAEC;IAAgB,CAAC,GAAGrB,MAAM,CAACG,OAAO;IACnET,YAAY,CAAC4B,UAAU,CAACjC,SAAS,CAAC;IAClC,IAAI+B,YAAY,EAAEA,YAAY,CAAC,KAAK,CAAC;IACrC,IAAIC,eAAe,EAAE;MACnB,OAAOxC,GAAG,CACRsC,sBAAsB,CAAC;QACrBI,MAAM,EAAE,MAAM;QACdC,IAAI,EAAE;MACR,CAAC,CACH,CAAC;IACH;IACA,OAAO3C,GAAG,CAACqC,wBAAwB,CAAC,CAAC,CAAC;EACxC,CAAC,CAAC,OAAOd,KAAU,EAAE;IACnB,OAAOvB,GAAG,CAACqB,gBAAgB,CAACE,KAAK,CAACC,OAAO,CAAC,CAAC;EAC7C;AACF;AAKA,UAAUoB,gBAAgBA,CAAA,EAAG;EAC3B,IAAMC,YAAY,GAAG,OAAO3C,MAAM,CAAE4C,UAAU,IAAK;IACjD,IAAMC,SAAyB,GAAGD,UAAU,CAACzC,cAAc,CAAC4B,IAAI,CAAC;IACjE,OAAOc,SAAS,CAACF,YAAY;EAC/B,CAAC,CAAC;EACF,IAAM;IACJG,yBAAyB;IACzBC,yBAAyB;IACzBC;EACF,CAAC,GAAG5C,gBAAgB;EAEpB,IAAI;IACF,OAAON,GAAG,CAACkD,qBAAqB,CAAC,CAAC,CAAC;IACnC,IAAMC,WAAW,MAAApB,MAAA,CAAMc,YAAY,cAAW;IAE9C,IAAMO,QAAQ,GAAG,OAAOnD,IAAI,CAACE,WAAW,EAAEgD,WAAW,CAAC;IACtD,IAAI,CAACC,QAAQ,EAAE,MAAM,IAAItB,KAAK,CAAC,CAAC;IAEhC,OAAO9B,GAAG,CAACiD,yBAAyB,CAACG,QAAQ,CAACC,cAAc,CAAC,CAAC;EAChE,CAAC,CAAC,OAAO9B,KAAU,EAAE;IACnB,OAAOvB,GAAG,CAACgD,yBAAyB,CAACzB,KAAK,CAACC,OAAO,CAAC,CAAC;EACtD;AACF;AAMA,UAAU8B,cAAcA,CAACnC,MAAwC,EAAE;EACjE,IAAM0B,YAAY,GAAG,OAAO3C,MAAM,CAAE4C,UAAU,IAAK;IACjD,IAAMC,SAAyB,GAAGD,UAAU,CAACzC,cAAc,CAAC4B,IAAI,CAAC;IACjE,OAAOc,SAAS,CAACF,YAAY;EAC/B,CAAC,CAAC;EACF,IAAM;IACJG,yBAAyB;IACzBE,qBAAqB;IACrBK;EACF,CAAC,GAAGjD,gBAAgB;EACpB,IAAM;IAAEE,SAAS;IAAE+B,YAAY;IAAEiB,SAAS;IAAEC;EAAa,CAAC,GAAGtC,MAAM,CAACG,OAAO;EAE3E,IAAI;IACF,OAAOtB,GAAG,CAACkD,qBAAqB,CAAC,CAAC,CAAC;IACnC,IAAMC,WAAW,MAAApB,MAAA,CAAMc,YAAY,cAAW;IAE9C,IAAMO,QAAQ,GAAG,OAAOnD,IAAI,CAACE,WAAW,EAAEgD,WAAW,CAAC;IACtD,IAAI,CAACC,QAAQ,EAAE,MAAM,IAAItB,KAAK,CAAC,CAAC;IAEhC,IAAMlB,IAAI,GAAG;MACXF,QAAQ,EAAE0C,QAAQ,CAACM,cAAc;MACjC/C,UAAU,EAAEyC,QAAQ,CAACC,cAAc;MACnCG,SAAS;MACTC;IACF,CAAC;IACD5C,YAAY,CAAC8C,OAAO,CAACnD,SAAS,EAAEQ,IAAI,CAAC4C,SAAS,CAAChD,IAAI,CAAC,CAAC;IACrD,IAAI2B,YAAY,EAAEA,YAAY,CAAC,IAAI,CAAC;IAEpC,OAAOvC,GAAG,CACRuD,uBAAuB,CAAC;MACtB7C,QAAQ,EAAE0C,QAAQ,CAACM,cAAc;MACjC/C,UAAU,EAAEyC,QAAQ,CAACC;IACvB,CAAC,CACH,CAAC;EACH,CAAC,CAAC,OAAO9B,KAAU,EAAE;IACnB,OAAOvB,GAAG,CAACgD,yBAAyB,CAACzB,KAAK,CAACC,OAAO,CAAC,CAAC;EACtD;AACF;AAEA,OAAO,UAAUqC,IAAIA,CAAA,EAAG;EACtB,IAAM;IACJC,UAAU;IACVC,YAAY;IACZC,iBAAiB;IACjBC,kBAAkB;IAClBC;EACF,CAAC,GAAG5D,gBAAgB;EACpB,OAAOP,SAAS,CAAC+D,UAAU,EAAE5C,QAAQ,CAAC;EACtC,OAAOnB,SAAS,CAACgE,YAAY,EAAEtC,UAAU,CAAC;EAC1C,OAAO1B,SAAS,CAACiE,iBAAiB,EAAE5B,eAAe,CAAC;EACpD,OAAOrC,SAAS,CAACkE,kBAAkB,EAAErB,gBAAgB,CAAC;EACtD,OAAO7C,SAAS,CAACmE,gBAAgB,EAAEZ,cAAc,CAAC;AACpD"}
|
|
@@ -1,22 +1,14 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.useOAuthFormState = exports.useOAuthFormActions = exports.defaultOAuthFormState = exports.SLICE_NAME = exports.OAuthFormSlice = exports.OAuthFormActions = void 0;
|
|
7
|
-
var _redux = require("@looker/redux");
|
|
8
|
-
var _toolkit = require("@reduxjs/toolkit");
|
|
9
|
-
var _omit = _interopRequireDefault(require("lodash/omit"));
|
|
10
|
-
var _sagas = require("./sagas");
|
|
11
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
1
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
13
2
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
14
3
|
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; }
|
|
15
4
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
16
5
|
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); }
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
6
|
+
import { createSliceHooks } from '@looker/redux';
|
|
7
|
+
import { createSlice } from '@reduxjs/toolkit';
|
|
8
|
+
import omit from 'lodash/omit';
|
|
9
|
+
import { saga } from './sagas';
|
|
10
|
+
export var SLICE_NAME = 'OAuthForm';
|
|
11
|
+
export var defaultOAuthFormState = {
|
|
20
12
|
apiServerUrl: '',
|
|
21
13
|
fetchedUrl: '',
|
|
22
14
|
webUrl: '',
|
|
@@ -30,8 +22,7 @@ var defaultOAuthFormState = {
|
|
|
30
22
|
looker_url: ''
|
|
31
23
|
}
|
|
32
24
|
};
|
|
33
|
-
|
|
34
|
-
var OAuthFormSlice = (0, _toolkit.createSlice)({
|
|
25
|
+
export var OAuthFormSlice = createSlice({
|
|
35
26
|
name: SLICE_NAME,
|
|
36
27
|
initialState: defaultOAuthFormState,
|
|
37
28
|
reducers: {
|
|
@@ -50,7 +41,7 @@ var OAuthFormSlice = (0, _toolkit.createSlice)({
|
|
|
50
41
|
if (action.payload.newMessage !== null) {
|
|
51
42
|
newValidationMessages[action.payload.elementName] = action.payload.newMessage;
|
|
52
43
|
} else {
|
|
53
|
-
newValidationMessages = (
|
|
44
|
+
newValidationMessages = omit(newValidationMessages, action.payload.elementName);
|
|
54
45
|
}
|
|
55
46
|
state.validationMessages = newValidationMessages;
|
|
56
47
|
},
|
|
@@ -104,13 +95,9 @@ var OAuthFormSlice = (0, _toolkit.createSlice)({
|
|
|
104
95
|
}
|
|
105
96
|
}
|
|
106
97
|
});
|
|
107
|
-
|
|
108
|
-
var
|
|
109
|
-
exports.OAuthFormActions = OAuthFormActions;
|
|
110
|
-
var {
|
|
98
|
+
export var OAuthFormActions = OAuthFormSlice.actions;
|
|
99
|
+
export var {
|
|
111
100
|
useActions: useOAuthFormActions,
|
|
112
101
|
useStoreState: useOAuthFormState
|
|
113
|
-
} =
|
|
114
|
-
exports.useOAuthFormState = useOAuthFormState;
|
|
115
|
-
exports.useOAuthFormActions = useOAuthFormActions;
|
|
102
|
+
} = createSliceHooks(OAuthFormSlice, saga);
|
|
116
103
|
//# sourceMappingURL=slice.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slice.js","names":["_redux","require","_toolkit","_omit","_interopRequireDefault","_sagas","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","SLICE_NAME","exports","defaultOAuthFormState","apiServerUrl","fetchedUrl","webUrl","messageBar","text","intent","validationMessages","savedConfig","base_url","looker_url","OAuthFormSlice","createSlice","name","initialState","reducers","initAction","_state","_action","initSuccessAction","state","action","payload","setUrlAction","setUrlActionSuccess","updateValidationMessages","newValidationMessages","newMessage","elementName","omit","clearConfigAction","clearConfigActionSuccess","verifyConfigAction","concat","verifyConfigActionSuccess","verifyConfigActionFailure","saveConfigAction","saveConfigActionSuccess","clearMessageBarAction","updateMessageBarAction","setFailureAction","OAuthFormActions","actions","useActions","useOAuthFormActions","useStoreState","useOAuthFormState","createSliceHooks","saga"],"sources":["../../../../../src/OAuthForm/src/state/slice.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2023 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 { Dispatch } from 'react'\nimport { createSliceHooks } from '@looker/redux'\nimport { createSlice } from '@reduxjs/toolkit'\nimport type { PayloadAction } from '@reduxjs/toolkit'\nimport type {\n MessageBarIntent,\n ValidationMessageProps,\n ValidationMessages,\n} from '@looker/components'\nimport omit from 'lodash/omit'\nimport type { ConfigValues } from '../utils'\nimport { saga } from './sagas'\n\nexport const SLICE_NAME = 'OAuthForm'\nexport interface MessageBarData {\n intent: MessageBarIntent\n text: string\n}\n\nexport interface OAuthFormState {\n apiServerUrl: string\n fetchedUrl: string\n webUrl: string\n messageBar: MessageBarData\n validationMessages: ValidationMessages\n savedConfig: ConfigValues\n}\n\nexport const defaultOAuthFormState: OAuthFormState = {\n apiServerUrl: '',\n fetchedUrl: '',\n webUrl: '',\n messageBar: {\n text: '',\n intent: 'positive',\n },\n validationMessages: {},\n savedConfig: { base_url: '', looker_url: '' },\n}\n\nexport interface ClearConfigActionPayload {\n configKey: string\n setHasConfig?: Dispatch<boolean>\n isAuthenticated: boolean\n}\n\nexport interface SetUrlActionPayload {\n name: string\n value: string\n}\n\ninterface UpdateValidationMessagesPayload {\n elementName: string\n newMessage: ValidationMessageProps | null\n}\n\nexport interface SaveConfigPayload {\n configKey: string\n setHasConfig?: Dispatch<boolean>\n client_id: string\n redirect_uri: string\n}\n\nexport interface SaveConfigSuccessPayload {\n base_url: string\n looker_url: string\n}\n\nexport const OAuthFormSlice = createSlice({\n name: SLICE_NAME,\n initialState: defaultOAuthFormState,\n reducers: {\n initAction(_state, _action: PayloadAction<string>) {\n // noop\n },\n initSuccessAction(state, action: PayloadAction<ConfigValues>) {\n state.apiServerUrl = action.payload.base_url\n state.webUrl = action.payload.looker_url\n },\n setUrlAction(_state, _action: PayloadAction<SetUrlActionPayload>) {\n // noop\n },\n setUrlActionSuccess(state, action: PayloadAction<string>) {\n state.apiServerUrl = action.payload\n state.webUrl = ''\n },\n updateValidationMessages(\n state,\n action: PayloadAction<UpdateValidationMessagesPayload>\n ) {\n let newValidationMessages = state.validationMessages\n\n if (action.payload.newMessage !== null) {\n newValidationMessages[action.payload.elementName] =\n action.payload.newMessage\n } else {\n newValidationMessages = omit(\n newValidationMessages,\n action.payload.elementName\n )\n }\n state.validationMessages = newValidationMessages\n },\n clearConfigAction(\n _state,\n _action: PayloadAction<ClearConfigActionPayload>\n ) {\n // noop\n },\n clearConfigActionSuccess() {\n return { ...defaultOAuthFormState }\n },\n verifyConfigAction(state) {\n state.fetchedUrl = `${state.apiServerUrl}/versions`\n },\n verifyConfigActionSuccess(state, action: PayloadAction<string>) {\n state.messageBar = {\n intent: 'positive',\n text: `Configuration is valid`,\n }\n state.webUrl = action.payload\n },\n verifyConfigActionFailure(state, action: PayloadAction<string>) {\n state.messageBar = { intent: 'critical', text: action.payload }\n state.webUrl = ''\n },\n saveConfigAction(_state, _action: PayloadAction<SaveConfigPayload>) {\n // noop\n },\n saveConfigActionSuccess(\n state,\n action: PayloadAction<SaveConfigSuccessPayload>\n ) {\n const { base_url, looker_url } = action.payload\n state.savedConfig = {\n base_url,\n looker_url,\n }\n state.messageBar = {\n intent: 'positive',\n text: `Saved ${looker_url} as OAuth server`,\n }\n },\n clearMessageBarAction(state) {\n state.messageBar.text = ''\n },\n updateMessageBarAction(state, action: PayloadAction<MessageBarData>) {\n state.messageBar = action.payload\n },\n setFailureAction(state, action: PayloadAction<string>) {\n state.messageBar = { intent: 'critical', text: action.payload }\n },\n },\n})\n\nexport const OAuthFormActions = OAuthFormSlice.actions\nexport const {\n useActions: useOAuthFormActions,\n useStoreState: useOAuthFormState,\n} = createSliceHooks(OAuthFormSlice, saga)\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slice.js","names":["createSliceHooks","createSlice","omit","saga","SLICE_NAME","defaultOAuthFormState","apiServerUrl","fetchedUrl","webUrl","messageBar","text","intent","validationMessages","savedConfig","base_url","looker_url","OAuthFormSlice","name","initialState","reducers","initAction","_state","_action","initSuccessAction","state","action","payload","setUrlAction","setUrlActionSuccess","updateValidationMessages","newValidationMessages","newMessage","elementName","clearConfigAction","clearConfigActionSuccess","_objectSpread","verifyConfigAction","concat","verifyConfigActionSuccess","verifyConfigActionFailure","saveConfigAction","saveConfigActionSuccess","clearMessageBarAction","updateMessageBarAction","setFailureAction","OAuthFormActions","actions","useActions","useOAuthFormActions","useStoreState","useOAuthFormState"],"sources":["../../../../../src/OAuthForm/src/state/slice.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2023 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 { Dispatch } from 'react'\nimport { createSliceHooks } from '@looker/redux'\nimport { createSlice } from '@reduxjs/toolkit'\nimport type { PayloadAction } from '@reduxjs/toolkit'\nimport type {\n MessageBarIntent,\n ValidationMessageProps,\n ValidationMessages,\n} from '@looker/components'\nimport omit from 'lodash/omit'\nimport type { ConfigValues } from '../utils'\nimport { saga } from './sagas'\n\nexport const SLICE_NAME = 'OAuthForm'\nexport interface MessageBarData {\n intent: MessageBarIntent\n text: string\n}\n\nexport interface OAuthFormState {\n apiServerUrl: string\n fetchedUrl: string\n webUrl: string\n messageBar: MessageBarData\n validationMessages: ValidationMessages\n savedConfig: ConfigValues\n}\n\nexport const defaultOAuthFormState: OAuthFormState = {\n apiServerUrl: '',\n fetchedUrl: '',\n webUrl: '',\n messageBar: {\n text: '',\n intent: 'positive',\n },\n validationMessages: {},\n savedConfig: { base_url: '', looker_url: '' },\n}\n\nexport interface ClearConfigActionPayload {\n configKey: string\n setHasConfig?: Dispatch<boolean>\n isAuthenticated: boolean\n}\n\nexport interface SetUrlActionPayload {\n name: string\n value: string\n}\n\ninterface UpdateValidationMessagesPayload {\n elementName: string\n newMessage: ValidationMessageProps | null\n}\n\nexport interface SaveConfigPayload {\n configKey: string\n setHasConfig?: Dispatch<boolean>\n client_id: string\n redirect_uri: string\n}\n\nexport interface SaveConfigSuccessPayload {\n base_url: string\n looker_url: string\n}\n\nexport const OAuthFormSlice = createSlice({\n name: SLICE_NAME,\n initialState: defaultOAuthFormState,\n reducers: {\n initAction(_state, _action: PayloadAction<string>) {\n // noop\n },\n initSuccessAction(state, action: PayloadAction<ConfigValues>) {\n state.apiServerUrl = action.payload.base_url\n state.webUrl = action.payload.looker_url\n },\n setUrlAction(_state, _action: PayloadAction<SetUrlActionPayload>) {\n // noop\n },\n setUrlActionSuccess(state, action: PayloadAction<string>) {\n state.apiServerUrl = action.payload\n state.webUrl = ''\n },\n updateValidationMessages(\n state,\n action: PayloadAction<UpdateValidationMessagesPayload>\n ) {\n let newValidationMessages = state.validationMessages\n\n if (action.payload.newMessage !== null) {\n newValidationMessages[action.payload.elementName] =\n action.payload.newMessage\n } else {\n newValidationMessages = omit(\n newValidationMessages,\n action.payload.elementName\n )\n }\n state.validationMessages = newValidationMessages\n },\n clearConfigAction(\n _state,\n _action: PayloadAction<ClearConfigActionPayload>\n ) {\n // noop\n },\n clearConfigActionSuccess() {\n return { ...defaultOAuthFormState }\n },\n verifyConfigAction(state) {\n state.fetchedUrl = `${state.apiServerUrl}/versions`\n },\n verifyConfigActionSuccess(state, action: PayloadAction<string>) {\n state.messageBar = {\n intent: 'positive',\n text: `Configuration is valid`,\n }\n state.webUrl = action.payload\n },\n verifyConfigActionFailure(state, action: PayloadAction<string>) {\n state.messageBar = { intent: 'critical', text: action.payload }\n state.webUrl = ''\n },\n saveConfigAction(_state, _action: PayloadAction<SaveConfigPayload>) {\n // noop\n },\n saveConfigActionSuccess(\n state,\n action: PayloadAction<SaveConfigSuccessPayload>\n ) {\n const { base_url, looker_url } = action.payload\n state.savedConfig = {\n base_url,\n looker_url,\n }\n state.messageBar = {\n intent: 'positive',\n text: `Saved ${looker_url} as OAuth server`,\n }\n },\n clearMessageBarAction(state) {\n state.messageBar.text = ''\n },\n updateMessageBarAction(state, action: PayloadAction<MessageBarData>) {\n state.messageBar = action.payload\n },\n setFailureAction(state, action: PayloadAction<string>) {\n state.messageBar = { intent: 'critical', text: action.payload }\n },\n },\n})\n\nexport const OAuthFormActions = OAuthFormSlice.actions\nexport const {\n useActions: useOAuthFormActions,\n useStoreState: useOAuthFormState,\n} = createSliceHooks(OAuthFormSlice, saga)\n"],"mappings":";;;;;AA0BA,SAASA,gBAAgB,QAAQ,eAAe;AAChD,SAASC,WAAW,QAAQ,kBAAkB;AAO9C,OAAOC,IAAI,MAAM,aAAa;AAE9B,SAASC,IAAI,QAAQ,SAAS;AAE9B,OAAO,IAAMC,UAAU,GAAG,WAAW;AAerC,OAAO,IAAMC,qBAAqC,GAAG;EACnDC,YAAY,EAAE,EAAE;EAChBC,UAAU,EAAE,EAAE;EACdC,MAAM,EAAE,EAAE;EACVC,UAAU,EAAE;IACVC,IAAI,EAAE,EAAE;IACRC,MAAM,EAAE;EACV,CAAC;EACDC,kBAAkB,EAAE,CAAC,CAAC;EACtBC,WAAW,EAAE;IAAEC,QAAQ,EAAE,EAAE;IAAEC,UAAU,EAAE;EAAG;AAC9C,CAAC;AA8BD,OAAO,IAAMC,cAAc,GAAGf,WAAW,CAAC;EACxCgB,IAAI,EAAEb,UAAU;EAChBc,YAAY,EAAEb,qBAAqB;EACnCc,QAAQ,EAAE;IACRC,UAAUA,CAACC,MAAM,EAAEC,OAA8B,EAAE,CAEnD,CAAC;IACDC,iBAAiBA,CAACC,KAAK,EAAEC,MAAmC,EAAE;MAC5DD,KAAK,CAAClB,YAAY,GAAGmB,MAAM,CAACC,OAAO,CAACZ,QAAQ;MAC5CU,KAAK,CAAChB,MAAM,GAAGiB,MAAM,CAACC,OAAO,CAACX,UAAU;IAC1C,CAAC;IACDY,YAAYA,CAACN,MAAM,EAAEC,OAA2C,EAAE,CAElE,CAAC;IACDM,mBAAmBA,CAACJ,KAAK,EAAEC,MAA6B,EAAE;MACxDD,KAAK,CAAClB,YAAY,GAAGmB,MAAM,CAACC,OAAO;MACnCF,KAAK,CAAChB,MAAM,GAAG,EAAE;IACnB,CAAC;IACDqB,wBAAwBA,CACtBL,KAAK,EACLC,MAAsD,EACtD;MACA,IAAIK,qBAAqB,GAAGN,KAAK,CAACZ,kBAAkB;MAEpD,IAAIa,MAAM,CAACC,OAAO,CAACK,UAAU,KAAK,IAAI,EAAE;QACtCD,qBAAqB,CAACL,MAAM,CAACC,OAAO,CAACM,WAAW,CAAC,GAC/CP,MAAM,CAACC,OAAO,CAACK,UAAU;MAC7B,CAAC,MAAM;QACLD,qBAAqB,GAAG5B,IAAI,CAC1B4B,qBAAqB,EACrBL,MAAM,CAACC,OAAO,CAACM,WACjB,CAAC;MACH;MACAR,KAAK,CAACZ,kBAAkB,GAAGkB,qBAAqB;IAClD,CAAC;IACDG,iBAAiBA,CACfZ,MAAM,EACNC,OAAgD,EAChD,CAEF,CAAC;IACDY,wBAAwBA,CAAA,EAAG;MACzB,OAAAC,aAAA,KAAY9B,qBAAqB;IACnC,CAAC;IACD+B,kBAAkBA,CAACZ,KAAK,EAAE;MACxBA,KAAK,CAACjB,UAAU,MAAA8B,MAAA,CAAMb,KAAK,CAAClB,YAAY,cAAW;IACrD,CAAC;IACDgC,yBAAyBA,CAACd,KAAK,EAAEC,MAA6B,EAAE;MAC9DD,KAAK,CAACf,UAAU,GAAG;QACjBE,MAAM,EAAE,UAAU;QAClBD,IAAI;MACN,CAAC;MACDc,KAAK,CAAChB,MAAM,GAAGiB,MAAM,CAACC,OAAO;IAC/B,CAAC;IACDa,yBAAyBA,CAACf,KAAK,EAAEC,MAA6B,EAAE;MAC9DD,KAAK,CAACf,UAAU,GAAG;QAAEE,MAAM,EAAE,UAAU;QAAED,IAAI,EAAEe,MAAM,CAACC;MAAQ,CAAC;MAC/DF,KAAK,CAAChB,MAAM,GAAG,EAAE;IACnB,CAAC;IACDgC,gBAAgBA,CAACnB,MAAM,EAAEC,OAAyC,EAAE,CAEpE,CAAC;IACDmB,uBAAuBA,CACrBjB,KAAK,EACLC,MAA+C,EAC/C;MACA,IAAM;QAAEX,QAAQ;QAAEC;MAAW,CAAC,GAAGU,MAAM,CAACC,OAAO;MAC/CF,KAAK,CAACX,WAAW,GAAG;QAClBC,QAAQ;QACRC;MACF,CAAC;MACDS,KAAK,CAACf,UAAU,GAAG;QACjBE,MAAM,EAAE,UAAU;QAClBD,IAAI,WAAA2B,MAAA,CAAWtB,UAAU;MAC3B,CAAC;IACH,CAAC;IACD2B,qBAAqBA,CAAClB,KAAK,EAAE;MAC3BA,KAAK,CAACf,UAAU,CAACC,IAAI,GAAG,EAAE;IAC5B,CAAC;IACDiC,sBAAsBA,CAACnB,KAAK,EAAEC,MAAqC,EAAE;MACnED,KAAK,CAACf,UAAU,GAAGgB,MAAM,CAACC,OAAO;IACnC,CAAC;IACDkB,gBAAgBA,CAACpB,KAAK,EAAEC,MAA6B,EAAE;MACrDD,KAAK,CAACf,UAAU,GAAG;QAAEE,MAAM,EAAE,UAAU;QAAED,IAAI,EAAEe,MAAM,CAACC;MAAQ,CAAC;IACjE;EACF;AACF,CAAC,CAAC;AAEF,OAAO,IAAMmB,gBAAgB,GAAG7B,cAAc,CAAC8B,OAAO;AACtD,OAAO,IAAM;EACXC,UAAU,EAAEC,mBAAmB;EAC/BC,aAAa,EAAEC;AACjB,CAAC,GAAGlD,gBAAgB,CAACgB,cAAc,EAAEb,IAAI,CAAC"}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.validateUrl = exports.getVersions = exports.getUrl = void 0;
|
|
7
|
-
var _sdkRtl = require("@looker/sdk-rtl");
|
|
8
1
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
9
2
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
10
3
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
@@ -12,13 +5,14 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typ
|
|
|
12
5
|
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); }
|
|
13
6
|
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); } }
|
|
14
7
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
15
|
-
|
|
8
|
+
import { BrowserTransport, DefaultSettings } from '@looker/sdk-rtl';
|
|
9
|
+
export var getUrl = function () {
|
|
16
10
|
var _ref = _asyncToGenerator(function* (url) {
|
|
17
|
-
var settings = _objectSpread(_objectSpread({},
|
|
11
|
+
var settings = _objectSpread(_objectSpread({}, DefaultSettings()), {
|
|
18
12
|
base_url: url,
|
|
19
13
|
verify_ssl: false
|
|
20
14
|
});
|
|
21
|
-
var xp = new
|
|
15
|
+
var xp = new BrowserTransport(settings);
|
|
22
16
|
var response = yield xp.rawRequest('GET', url);
|
|
23
17
|
return response.body;
|
|
24
18
|
});
|
|
@@ -26,8 +20,7 @@ var getUrl = function () {
|
|
|
26
20
|
return _ref.apply(this, arguments);
|
|
27
21
|
};
|
|
28
22
|
}();
|
|
29
|
-
|
|
30
|
-
var getVersions = function () {
|
|
23
|
+
export var getVersions = function () {
|
|
31
24
|
var _ref2 = _asyncToGenerator(function* (versionsUrl) {
|
|
32
25
|
var versions;
|
|
33
26
|
try {
|
|
@@ -42,8 +35,7 @@ var getVersions = function () {
|
|
|
42
35
|
return _ref2.apply(this, arguments);
|
|
43
36
|
};
|
|
44
37
|
}();
|
|
45
|
-
|
|
46
|
-
var validateUrl = url => {
|
|
38
|
+
export var validateUrl = url => {
|
|
47
39
|
try {
|
|
48
40
|
var result = new URL(url);
|
|
49
41
|
if (url.endsWith(':')) return url;
|
|
@@ -52,5 +44,4 @@ var validateUrl = url => {
|
|
|
52
44
|
return '';
|
|
53
45
|
}
|
|
54
46
|
};
|
|
55
|
-
exports.validateUrl = validateUrl;
|
|
56
47
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["
|
|
1
|
+
{"version":3,"file":"utils.js","names":["BrowserTransport","DefaultSettings","getUrl","_ref","_asyncToGenerator","url","settings","_objectSpread","base_url","verify_ssl","xp","response","rawRequest","body","_x","apply","arguments","getVersions","_ref2","versionsUrl","versions","content","JSON","parse","_unused","Error","_x2","validateUrl","result","URL","endsWith","origin","_unused2"],"sources":["../../../../src/OAuthForm/src/utils.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2023 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 { BrowserTransport, DefaultSettings } from '@looker/sdk-rtl'\nimport type { ILookerVersions } from '@looker/sdk-codegen'\n\nexport type ConfigValues = Record<string, any>\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 | ConfigValues> => {\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 * Gets the versions payload given a versions url\n * @param versionsUrl\n */\nexport const getVersions = async (\n versionsUrl: string\n): Promise<ILookerVersions | undefined> => {\n let versions\n try {\n const content = await getUrl(versionsUrl)\n versions = typeof content === 'string' ? JSON.parse(content) : content\n } catch {\n throw new Error('Invalid server configuration')\n }\n return versions\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"],"mappings":";;;;;;;AAyBA,SAASA,gBAAgB,EAAEC,eAAe,QAAQ,iBAAiB;AASnE,OAAO,IAAMC,MAAM;EAAA,IAAAC,IAAA,GAAAC,iBAAA,CAAG,WAAOC,GAAW,EAAqC;IAC3E,IAAMC,QAAQ,GAAAC,aAAA,CAAAA,aAAA,KACTN,eAAe,CAAC,CAAC,GACjB;MAAEO,QAAQ,EAAEH,GAAG;MAAEI,UAAU,EAAE;IAAM,CAAC,CACxC;IACD,IAAMC,EAAE,GAAG,IAAIV,gBAAgB,CAACM,QAAQ,CAAC;IACzC,IAAMK,QAAQ,SAASD,EAAE,CAACE,UAAU,CAAC,KAAK,EAAEP,GAAG,CAAC;IAChD,OAAOM,QAAQ,CAACE,IAAI;EACtB,CAAC;EAAA,gBARYX,MAAMA,CAAAY,EAAA;IAAA,OAAAX,IAAA,CAAAY,KAAA,OAAAC,SAAA;EAAA;AAAA,GAQlB;AAMD,OAAO,IAAMC,WAAW;EAAA,IAAAC,KAAA,GAAAd,iBAAA,CAAG,WACzBe,WAAmB,EACsB;IACzC,IAAIC,QAAQ;IACZ,IAAI;MACF,IAAMC,OAAO,SAASnB,MAAM,CAACiB,WAAW,CAAC;MACzCC,QAAQ,GAAG,OAAOC,OAAO,KAAK,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAACF,OAAO,CAAC,GAAGA,OAAO;IACxE,CAAC,CAAC,OAAAG,OAAA,EAAM;MACN,MAAM,IAAIC,KAAK,CAAC,8BAA8B,CAAC;IACjD;IACA,OAAOL,QAAQ;EACjB,CAAC;EAAA,gBAXYH,WAAWA,CAAAS,GAAA;IAAA,OAAAR,KAAA,CAAAH,KAAA,OAAAC,SAAA;EAAA;AAAA,GAWvB;AAOD,OAAO,IAAMW,WAAW,GAAItB,GAAW,IAAa;EAClD,IAAI;IACF,IAAMuB,MAAM,GAAG,IAAIC,GAAG,CAACxB,GAAG,CAAC;IAC3B,IAAIA,GAAG,CAACyB,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAOzB,GAAG;IACjC,OAAOuB,MAAM,CAACG,MAAM;EACtB,CAAC,CAAC,OAAAC,QAAA,EAAM;IACN,OAAO,EAAE;EACX;AACF,CAAC"}
|
package/lib/esm/OAuthScene.js
CHANGED
|
@@ -1,31 +1,23 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.OAuthScene = void 0;
|
|
7
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
-
var _components = require("@looker/components");
|
|
9
|
-
var _reactRouter = require("react-router");
|
|
10
|
-
var _reactRouterDom = require("react-router-dom");
|
|
11
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
12
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
1
|
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); } }
|
|
14
2
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
15
|
-
|
|
3
|
+
import React, { useEffect } from 'react';
|
|
4
|
+
import { ComponentsProvider, Flex, FlexItem, Heading, ProgressCircular } from '@looker/components';
|
|
5
|
+
import { useHistory } from 'react-router';
|
|
6
|
+
import { useLocation } from 'react-router-dom';
|
|
7
|
+
export var OAuthScene = _ref => {
|
|
16
8
|
var _authSession$returnUr;
|
|
17
9
|
var {
|
|
18
10
|
adaptor
|
|
19
11
|
} = _ref;
|
|
20
|
-
var history =
|
|
21
|
-
var location =
|
|
12
|
+
var history = useHistory();
|
|
13
|
+
var location = useLocation();
|
|
22
14
|
var reactPath = location.pathname;
|
|
23
15
|
var fullPath = window.location.pathname;
|
|
24
16
|
var extraPath = fullPath.substr(0, fullPath.indexOf(reactPath));
|
|
25
17
|
var authSession = adaptor.sdk.authSession;
|
|
26
18
|
var retPath = (_authSession$returnUr = authSession.returnUrl) !== null && _authSession$returnUr !== void 0 ? _authSession$returnUr : '/';
|
|
27
19
|
var oldUrl = retPath.replace(extraPath, '');
|
|
28
|
-
|
|
20
|
+
useEffect(() => {
|
|
29
21
|
var maybeLogin = function () {
|
|
30
22
|
var _ref2 = _asyncToGenerator(function* () {
|
|
31
23
|
var token = yield adaptor.login();
|
|
@@ -46,24 +38,23 @@ var OAuthScene = _ref => {
|
|
|
46
38
|
maybeLogin();
|
|
47
39
|
}, []);
|
|
48
40
|
var themeOverrides = adaptor.themeOverrides();
|
|
49
|
-
return
|
|
41
|
+
return React.createElement(ComponentsProvider, {
|
|
50
42
|
loadGoogleFonts: themeOverrides.loadGoogleFonts,
|
|
51
43
|
themeCustomizations: themeOverrides.themeCustomizations
|
|
52
|
-
},
|
|
44
|
+
}, React.createElement(Flex, {
|
|
53
45
|
flexDirection: "column",
|
|
54
46
|
justifyContent: "center",
|
|
55
47
|
mt: "25%"
|
|
56
|
-
},
|
|
48
|
+
}, React.createElement(FlexItem, {
|
|
57
49
|
alignSelf: "center"
|
|
58
|
-
},
|
|
50
|
+
}, React.createElement(ProgressCircular, {
|
|
59
51
|
size: "large"
|
|
60
|
-
})),
|
|
52
|
+
})), React.createElement(FlexItem, {
|
|
61
53
|
mt: "large",
|
|
62
54
|
alignSelf: "center"
|
|
63
|
-
},
|
|
55
|
+
}, React.createElement(Heading, {
|
|
64
56
|
color: "key",
|
|
65
57
|
as: "h2"
|
|
66
58
|
}, "Returning to ".concat(oldUrl, " after OAuth login ...")))));
|
|
67
59
|
};
|
|
68
|
-
exports.OAuthScene = OAuthScene;
|
|
69
60
|
//# sourceMappingURL=OAuthScene.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuthScene.js","names":["
|
|
1
|
+
{"version":3,"file":"OAuthScene.js","names":["React","useEffect","ComponentsProvider","Flex","FlexItem","Heading","ProgressCircular","useHistory","useLocation","OAuthScene","_ref","_authSession$returnUr","adaptor","history","location","reactPath","pathname","fullPath","window","extraPath","substr","indexOf","authSession","sdk","retPath","returnUrl","oldUrl","replace","maybeLogin","_ref2","_asyncToGenerator","token","login","console","error","push","apply","arguments","themeOverrides","createElement","loadGoogleFonts","themeCustomizations","flexDirection","justifyContent","mt","alignSelf","size","color","as","concat"],"sources":["../../src/OAuthScene.tsx"],"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 { FC } from 'react'\nimport React, { useEffect } from 'react'\nimport type { BrowserSession } from '@looker/sdk-rtl'\nimport {\n ComponentsProvider,\n Flex,\n FlexItem,\n Heading,\n ProgressCircular,\n} from '@looker/components'\nimport { useHistory } from 'react-router'\nimport { useLocation } from 'react-router-dom'\nimport type { IEnvironmentAdaptor } from './adaptorUtils'\n\ninterface OAuthSceneProps {\n adaptor: IEnvironmentAdaptor\n}\n\n/**\n * OAuth scene for sdk session handling and redirection to OAuth flow initiation\n * route\n */\nexport const OAuthScene: FC<OAuthSceneProps> = ({ adaptor }) => {\n const history = useHistory()\n const location = useLocation()\n const reactPath = location.pathname\n const fullPath = (window as any).location.pathname\n const extraPath = fullPath.substr(0, fullPath.indexOf(reactPath))\n const authSession = adaptor.sdk.authSession as BrowserSession\n const retPath = authSession.returnUrl ?? '/'\n /** If this is a nested React app, remove extraPath to prevent recursive return pathing */\n const oldUrl = retPath.replace(extraPath, '')\n\n useEffect(() => {\n const maybeLogin = async () => {\n const token = await adaptor.login()\n if (token) {\n console.error({ push: oldUrl, retPath, extraPath, location })\n history.push(oldUrl)\n }\n }\n maybeLogin()\n }, [])\n\n const themeOverrides = adaptor.themeOverrides()\n return (\n <ComponentsProvider\n loadGoogleFonts={themeOverrides.loadGoogleFonts}\n themeCustomizations={themeOverrides.themeCustomizations}\n >\n <Flex flexDirection=\"column\" justifyContent=\"center\" mt=\"25%\">\n <FlexItem alignSelf=\"center\">\n <ProgressCircular size=\"large\" />\n </FlexItem>\n <FlexItem mt=\"large\" alignSelf=\"center\">\n <Heading color=\"key\" as=\"h2\">\n {`Returning to ${oldUrl} after OAuth login ...`}\n </Heading>\n </FlexItem>\n </Flex>\n </ComponentsProvider>\n )\n}\n"],"mappings":";;AA2BA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AAExC,SACEC,kBAAkB,EAClBC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,gBAAgB,QACX,oBAAoB;AAC3B,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,WAAW,QAAQ,kBAAkB;AAW9C,OAAO,IAAMC,UAA+B,GAAGC,IAAA,IAAiB;EAAA,IAAAC,qBAAA;EAAA,IAAhB;IAAEC;EAAQ,CAAC,GAAAF,IAAA;EACzD,IAAMG,OAAO,GAAGN,UAAU,CAAC,CAAC;EAC5B,IAAMO,QAAQ,GAAGN,WAAW,CAAC,CAAC;EAC9B,IAAMO,SAAS,GAAGD,QAAQ,CAACE,QAAQ;EACnC,IAAMC,QAAQ,GAAIC,MAAM,CAASJ,QAAQ,CAACE,QAAQ;EAClD,IAAMG,SAAS,GAAGF,QAAQ,CAACG,MAAM,CAAC,CAAC,EAAEH,QAAQ,CAACI,OAAO,CAACN,SAAS,CAAC,CAAC;EACjE,IAAMO,WAAW,GAAGV,OAAO,CAACW,GAAG,CAACD,WAA6B;EAC7D,IAAME,OAAO,IAAAb,qBAAA,GAAGW,WAAW,CAACG,SAAS,cAAAd,qBAAA,cAAAA,qBAAA,GAAI,GAAG;EAE5C,IAAMe,MAAM,GAAGF,OAAO,CAACG,OAAO,CAACR,SAAS,EAAE,EAAE,CAAC;EAE7ClB,SAAS,CAAC,MAAM;IACd,IAAM2B,UAAU;MAAA,IAAAC,KAAA,GAAAC,iBAAA,CAAG,aAAY;QAC7B,IAAMC,KAAK,SAASnB,OAAO,CAACoB,KAAK,CAAC,CAAC;QACnC,IAAID,KAAK,EAAE;UACTE,OAAO,CAACC,KAAK,CAAC;YAAEC,IAAI,EAAET,MAAM;YAAEF,OAAO;YAAEL,SAAS;YAAEL;UAAS,CAAC,CAAC;UAC7DD,OAAO,CAACsB,IAAI,CAACT,MAAM,CAAC;QACtB;MACF,CAAC;MAAA,gBANKE,UAAUA,CAAA;QAAA,OAAAC,KAAA,CAAAO,KAAA,OAAAC,SAAA;MAAA;IAAA,GAMf;IACDT,UAAU,CAAC,CAAC;EACd,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMU,cAAc,GAAG1B,OAAO,CAAC0B,cAAc,CAAC,CAAC;EAC/C,OACEtC,KAAA,CAAAuC,aAAA,CAACrC,kBAAkB;IACjBsC,eAAe,EAAEF,cAAc,CAACE,eAAgB;IAChDC,mBAAmB,EAAEH,cAAc,CAACG;EAAoB,GAExDzC,KAAA,CAAAuC,aAAA,CAACpC,IAAI;IAACuC,aAAa,EAAC,QAAQ;IAACC,cAAc,EAAC,QAAQ;IAACC,EAAE,EAAC;EAAK,GAC3D5C,KAAA,CAAAuC,aAAA,CAACnC,QAAQ;IAACyC,SAAS,EAAC;EAAQ,GAC1B7C,KAAA,CAAAuC,aAAA,CAACjC,gBAAgB;IAACwC,IAAI,EAAC;EAAO,CAAE,CACxB,CAAC,EACX9C,KAAA,CAAAuC,aAAA,CAACnC,QAAQ;IAACwC,EAAE,EAAC,OAAO;IAACC,SAAS,EAAC;EAAQ,GACrC7C,KAAA,CAAAuC,aAAA,CAAClC,OAAO;IAAC0C,KAAK,EAAC,KAAK;IAACC,EAAE,EAAC;EAAI,mBAAAC,MAAA,CACTvB,MAAM,2BAChB,CACD,CACN,CACY,CAAC;AAEzB,CAAC"}
|
package/lib/esm/adaptorUtils.js
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.unregisterEnvAdaptor = exports.registerTestEnvAdaptor = exports.registerEnvAdaptor = exports.hostedInternally = exports.getThemeOverrides = exports.getEnvAdaptor = exports.appPath = void 0;
|
|
7
|
-
var _browserAdaptor = require("./browserAdaptor");
|
|
8
|
-
var hostedInternally = hostname => hostname.endsWith('.looker.com') || hostname.endsWith('.google.com') || hostname === 'localhost' || hostname.startsWith('looker-developer-portal') && hostname.endsWith('.web.app');
|
|
9
|
-
exports.hostedInternally = hostedInternally;
|
|
10
|
-
var getThemeOverrides = internalTheming => internalTheming ? {
|
|
1
|
+
import { BrowserAdaptor } from './browserAdaptor';
|
|
2
|
+
export var hostedInternally = hostname => hostname.endsWith('.looker.com') || hostname.endsWith('.google.com') || hostname === 'localhost' || hostname.startsWith('looker-developer-portal') && hostname.endsWith('.web.app');
|
|
3
|
+
export var getThemeOverrides = internalTheming => internalTheming ? {
|
|
11
4
|
loadGoogleFonts: true,
|
|
12
5
|
themeCustomizations: {
|
|
13
6
|
fontFamilies: {
|
|
@@ -24,29 +17,24 @@ var getThemeOverrides = internalTheming => internalTheming ? {
|
|
|
24
17
|
}
|
|
25
18
|
}
|
|
26
19
|
};
|
|
27
|
-
exports.getThemeOverrides = getThemeOverrides;
|
|
28
20
|
var extensionAdaptor;
|
|
29
|
-
var registerEnvAdaptor = adaptor => {
|
|
21
|
+
export var registerEnvAdaptor = adaptor => {
|
|
30
22
|
extensionAdaptor = adaptor;
|
|
31
23
|
};
|
|
32
|
-
|
|
33
|
-
var unregisterEnvAdaptor = () => {
|
|
24
|
+
export var unregisterEnvAdaptor = () => {
|
|
34
25
|
extensionAdaptor = undefined;
|
|
35
26
|
};
|
|
36
|
-
|
|
37
|
-
var getEnvAdaptor = () => {
|
|
27
|
+
export var getEnvAdaptor = () => {
|
|
38
28
|
if (!extensionAdaptor) {
|
|
39
29
|
throw new Error('Environment adaptor not initialized.');
|
|
40
30
|
}
|
|
41
31
|
return extensionAdaptor;
|
|
42
32
|
};
|
|
43
|
-
|
|
44
|
-
var registerTestEnvAdaptor = adaptor => {
|
|
33
|
+
export var registerTestEnvAdaptor = adaptor => {
|
|
45
34
|
var mockSdk = {};
|
|
46
|
-
registerEnvAdaptor(adaptor || new
|
|
35
|
+
registerEnvAdaptor(adaptor || new BrowserAdaptor(mockSdk));
|
|
47
36
|
};
|
|
48
|
-
|
|
49
|
-
var appPath = (location, newPath) => {
|
|
37
|
+
export var appPath = (location, newPath) => {
|
|
50
38
|
var reactPath = location.pathname;
|
|
51
39
|
var wloc = window.location;
|
|
52
40
|
var base = wloc.origin;
|
|
@@ -54,5 +42,4 @@ var appPath = (location, newPath) => {
|
|
|
54
42
|
var result = "".concat(base).concat(wpath.substring(0, wpath.indexOf(reactPath))).concat(newPath);
|
|
55
43
|
return result;
|
|
56
44
|
};
|
|
57
|
-
exports.appPath = appPath;
|
|
58
45
|
//# sourceMappingURL=adaptorUtils.js.map
|