@looker/sdk-rtl 21.5.0 → 21.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/lib/CSRFSession.js +3 -17
  3. package/lib/CSRFSession.js.map +1 -1
  4. package/lib/apiMethods.js +6 -47
  5. package/lib/apiMethods.js.map +1 -1
  6. package/lib/apiSettings.js +4 -24
  7. package/lib/apiSettings.js.map +1 -1
  8. package/lib/authSession.js +3 -18
  9. package/lib/authSession.js.map +1 -1
  10. package/lib/authToken.js +3 -18
  11. package/lib/authToken.js.map +1 -1
  12. package/lib/baseTransport.js +3 -12
  13. package/lib/baseTransport.js.map +1 -1
  14. package/lib/browser.js +0 -34
  15. package/lib/browser.js.map +1 -1
  16. package/lib/browserServices.js +3 -11
  17. package/lib/browserServices.js.map +1 -1
  18. package/lib/browserSession.js +6 -21
  19. package/lib/browserSession.js.map +1 -1
  20. package/lib/browserTransport.js +5 -63
  21. package/lib/browserTransport.js.map +1 -1
  22. package/lib/constants.js +1 -11
  23. package/lib/constants.js.map +1 -1
  24. package/lib/cryptoHash.js +1 -1
  25. package/lib/cryptoHash.js.map +1 -1
  26. package/lib/delimArray.js +3 -8
  27. package/lib/delimArray.js.map +1 -1
  28. package/lib/errorDoc.js +8 -49
  29. package/lib/errorDoc.js.map +1 -1
  30. package/lib/esm/CSRFSession.js +14 -17
  31. package/lib/esm/CSRFSession.js.map +1 -1
  32. package/lib/esm/apiMethods.js +18 -46
  33. package/lib/esm/apiMethods.js.map +1 -1
  34. package/lib/esm/apiSettings.js +32 -28
  35. package/lib/esm/apiSettings.js.map +1 -1
  36. package/lib/esm/authSession.js +14 -19
  37. package/lib/esm/authSession.js.map +1 -1
  38. package/lib/esm/authToken.js +11 -17
  39. package/lib/esm/authToken.js.map +1 -1
  40. package/lib/esm/baseTransport.js +14 -13
  41. package/lib/esm/baseTransport.js.map +1 -1
  42. package/lib/esm/browser.js +192 -17
  43. package/lib/esm/browser.js.map +1 -1
  44. package/lib/esm/browserServices.js +15 -12
  45. package/lib/esm/browserServices.js.map +1 -1
  46. package/lib/esm/browserSession.js +21 -23
  47. package/lib/esm/browserSession.js.map +1 -1
  48. package/lib/esm/browserTransport.js +24 -68
  49. package/lib/esm/browserTransport.js.map +1 -1
  50. package/lib/esm/constants.js +22 -10
  51. package/lib/esm/constants.js.map +1 -1
  52. package/lib/esm/cryptoHash.js.map +1 -1
  53. package/lib/esm/delimArray.js +10 -6
  54. package/lib/esm/delimArray.js.map +1 -1
  55. package/lib/esm/errorDoc.js +23 -51
  56. package/lib/esm/errorDoc.js.map +1 -1
  57. package/lib/esm/extensionSession.js +11 -16
  58. package/lib/esm/extensionSession.js.map +1 -1
  59. package/lib/esm/extensionTransport.js +13 -19
  60. package/lib/esm/extensionTransport.js.map +1 -1
  61. package/lib/esm/index.js +236 -21
  62. package/lib/esm/index.js.map +1 -1
  63. package/lib/esm/lookerSDKError.js +13 -12
  64. package/lib/esm/lookerSDKError.js.map +1 -1
  65. package/lib/esm/oauthSession.js +23 -66
  66. package/lib/esm/oauthSession.js.map +1 -1
  67. package/lib/esm/paging.js +24 -71
  68. package/lib/esm/paging.js.map +1 -1
  69. package/lib/esm/platformServices.js.map +1 -1
  70. package/lib/esm/proxySession.js +13 -13
  71. package/lib/esm/proxySession.js.map +1 -1
  72. package/lib/esm/testUtils/index.js +17 -0
  73. package/lib/esm/testUtils/index.js.map +1 -0
  74. package/lib/esm/testUtils/testUtils.js +46 -0
  75. package/lib/esm/testUtils/testUtils.js.map +1 -0
  76. package/lib/esm/transport.js +57 -62
  77. package/lib/esm/transport.js.map +1 -1
  78. package/lib/extensionSession.js +3 -17
  79. package/lib/extensionSession.js.map +1 -1
  80. package/lib/extensionTransport.js +5 -20
  81. package/lib/extensionTransport.js.map +1 -1
  82. package/lib/index.js +0 -42
  83. package/lib/index.js.map +1 -1
  84. package/lib/lookerSDKError.js +5 -13
  85. package/lib/lookerSDKError.js.map +1 -1
  86. package/lib/oauthSession.js +8 -63
  87. package/lib/oauthSession.js.map +1 -1
  88. package/lib/paging.js +5 -70
  89. package/lib/paging.js.map +1 -1
  90. package/lib/platformServices.js +1 -1
  91. package/lib/platformServices.js.map +1 -1
  92. package/lib/proxySession.js +0 -12
  93. package/lib/proxySession.js.map +1 -1
  94. package/lib/testUtils/index.js +0 -2
  95. package/lib/testUtils/index.js.map +1 -1
  96. package/lib/testUtils/testUtils.js +1 -16
  97. package/lib/testUtils/testUtils.js.map +1 -1
  98. package/lib/transport.js +8 -50
  99. package/lib/transport.js.map +1 -1
  100. package/package.json +3 -3
package/lib/index.js CHANGED
@@ -3,9 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
-
7
6
  var _apiMethods = require("./apiMethods");
8
-
9
7
  Object.keys(_apiMethods).forEach(function (key) {
10
8
  if (key === "default" || key === "__esModule") return;
11
9
  if (key in exports && exports[key] === _apiMethods[key]) return;
@@ -16,9 +14,7 @@ Object.keys(_apiMethods).forEach(function (key) {
16
14
  }
17
15
  });
18
16
  });
19
-
20
17
  var _apiSettings = require("./apiSettings");
21
-
22
18
  Object.keys(_apiSettings).forEach(function (key) {
23
19
  if (key === "default" || key === "__esModule") return;
24
20
  if (key in exports && exports[key] === _apiSettings[key]) return;
@@ -29,9 +25,7 @@ Object.keys(_apiSettings).forEach(function (key) {
29
25
  }
30
26
  });
31
27
  });
32
-
33
28
  var _authSession = require("./authSession");
34
-
35
29
  Object.keys(_authSession).forEach(function (key) {
36
30
  if (key === "default" || key === "__esModule") return;
37
31
  if (key in exports && exports[key] === _authSession[key]) return;
@@ -42,9 +36,7 @@ Object.keys(_authSession).forEach(function (key) {
42
36
  }
43
37
  });
44
38
  });
45
-
46
39
  var _authToken = require("./authToken");
47
-
48
40
  Object.keys(_authToken).forEach(function (key) {
49
41
  if (key === "default" || key === "__esModule") return;
50
42
  if (key in exports && exports[key] === _authToken[key]) return;
@@ -55,9 +47,7 @@ Object.keys(_authToken).forEach(function (key) {
55
47
  }
56
48
  });
57
49
  });
58
-
59
50
  var _baseTransport = require("./baseTransport");
60
-
61
51
  Object.keys(_baseTransport).forEach(function (key) {
62
52
  if (key === "default" || key === "__esModule") return;
63
53
  if (key in exports && exports[key] === _baseTransport[key]) return;
@@ -68,9 +58,7 @@ Object.keys(_baseTransport).forEach(function (key) {
68
58
  }
69
59
  });
70
60
  });
71
-
72
61
  var _browserSession = require("./browserSession");
73
-
74
62
  Object.keys(_browserSession).forEach(function (key) {
75
63
  if (key === "default" || key === "__esModule") return;
76
64
  if (key in exports && exports[key] === _browserSession[key]) return;
@@ -81,9 +69,7 @@ Object.keys(_browserSession).forEach(function (key) {
81
69
  }
82
70
  });
83
71
  });
84
-
85
72
  var _browserServices = require("./browserServices");
86
-
87
73
  Object.keys(_browserServices).forEach(function (key) {
88
74
  if (key === "default" || key === "__esModule") return;
89
75
  if (key in exports && exports[key] === _browserServices[key]) return;
@@ -94,9 +80,7 @@ Object.keys(_browserServices).forEach(function (key) {
94
80
  }
95
81
  });
96
82
  });
97
-
98
83
  var _browserTransport = require("./browserTransport");
99
-
100
84
  Object.keys(_browserTransport).forEach(function (key) {
101
85
  if (key === "default" || key === "__esModule") return;
102
86
  if (key in exports && exports[key] === _browserTransport[key]) return;
@@ -107,9 +91,7 @@ Object.keys(_browserTransport).forEach(function (key) {
107
91
  }
108
92
  });
109
93
  });
110
-
111
94
  var _constants = require("./constants");
112
-
113
95
  Object.keys(_constants).forEach(function (key) {
114
96
  if (key === "default" || key === "__esModule") return;
115
97
  if (key in exports && exports[key] === _constants[key]) return;
@@ -120,9 +102,7 @@ Object.keys(_constants).forEach(function (key) {
120
102
  }
121
103
  });
122
104
  });
123
-
124
105
  var _cryptoHash = require("./cryptoHash");
125
-
126
106
  Object.keys(_cryptoHash).forEach(function (key) {
127
107
  if (key === "default" || key === "__esModule") return;
128
108
  if (key in exports && exports[key] === _cryptoHash[key]) return;
@@ -133,9 +113,7 @@ Object.keys(_cryptoHash).forEach(function (key) {
133
113
  }
134
114
  });
135
115
  });
136
-
137
116
  var _CSRFSession = require("./CSRFSession");
138
-
139
117
  Object.keys(_CSRFSession).forEach(function (key) {
140
118
  if (key === "default" || key === "__esModule") return;
141
119
  if (key in exports && exports[key] === _CSRFSession[key]) return;
@@ -146,9 +124,7 @@ Object.keys(_CSRFSession).forEach(function (key) {
146
124
  }
147
125
  });
148
126
  });
149
-
150
127
  var _delimArray = require("./delimArray");
151
-
152
128
  Object.keys(_delimArray).forEach(function (key) {
153
129
  if (key === "default" || key === "__esModule") return;
154
130
  if (key in exports && exports[key] === _delimArray[key]) return;
@@ -159,9 +135,7 @@ Object.keys(_delimArray).forEach(function (key) {
159
135
  }
160
136
  });
161
137
  });
162
-
163
138
  var _errorDoc = require("./errorDoc");
164
-
165
139
  Object.keys(_errorDoc).forEach(function (key) {
166
140
  if (key === "default" || key === "__esModule") return;
167
141
  if (key in exports && exports[key] === _errorDoc[key]) return;
@@ -172,9 +146,7 @@ Object.keys(_errorDoc).forEach(function (key) {
172
146
  }
173
147
  });
174
148
  });
175
-
176
149
  var _extensionSession = require("./extensionSession");
177
-
178
150
  Object.keys(_extensionSession).forEach(function (key) {
179
151
  if (key === "default" || key === "__esModule") return;
180
152
  if (key in exports && exports[key] === _extensionSession[key]) return;
@@ -185,9 +157,7 @@ Object.keys(_extensionSession).forEach(function (key) {
185
157
  }
186
158
  });
187
159
  });
188
-
189
160
  var _extensionTransport = require("./extensionTransport");
190
-
191
161
  Object.keys(_extensionTransport).forEach(function (key) {
192
162
  if (key === "default" || key === "__esModule") return;
193
163
  if (key in exports && exports[key] === _extensionTransport[key]) return;
@@ -198,9 +168,7 @@ Object.keys(_extensionTransport).forEach(function (key) {
198
168
  }
199
169
  });
200
170
  });
201
-
202
171
  var _lookerSDKError = require("./lookerSDKError");
203
-
204
172
  Object.keys(_lookerSDKError).forEach(function (key) {
205
173
  if (key === "default" || key === "__esModule") return;
206
174
  if (key in exports && exports[key] === _lookerSDKError[key]) return;
@@ -211,9 +179,7 @@ Object.keys(_lookerSDKError).forEach(function (key) {
211
179
  }
212
180
  });
213
181
  });
214
-
215
182
  var _oauthSession = require("./oauthSession");
216
-
217
183
  Object.keys(_oauthSession).forEach(function (key) {
218
184
  if (key === "default" || key === "__esModule") return;
219
185
  if (key in exports && exports[key] === _oauthSession[key]) return;
@@ -224,9 +190,7 @@ Object.keys(_oauthSession).forEach(function (key) {
224
190
  }
225
191
  });
226
192
  });
227
-
228
193
  var _paging = require("./paging");
229
-
230
194
  Object.keys(_paging).forEach(function (key) {
231
195
  if (key === "default" || key === "__esModule") return;
232
196
  if (key in exports && exports[key] === _paging[key]) return;
@@ -237,9 +201,7 @@ Object.keys(_paging).forEach(function (key) {
237
201
  }
238
202
  });
239
203
  });
240
-
241
204
  var _platformServices = require("./platformServices");
242
-
243
205
  Object.keys(_platformServices).forEach(function (key) {
244
206
  if (key === "default" || key === "__esModule") return;
245
207
  if (key in exports && exports[key] === _platformServices[key]) return;
@@ -250,9 +212,7 @@ Object.keys(_platformServices).forEach(function (key) {
250
212
  }
251
213
  });
252
214
  });
253
-
254
215
  var _proxySession = require("./proxySession");
255
-
256
216
  Object.keys(_proxySession).forEach(function (key) {
257
217
  if (key === "default" || key === "__esModule") return;
258
218
  if (key in exports && exports[key] === _proxySession[key]) return;
@@ -263,9 +223,7 @@ Object.keys(_proxySession).forEach(function (key) {
263
223
  }
264
224
  });
265
225
  });
266
-
267
226
  var _transport = require("./transport");
268
-
269
227
  Object.keys(_transport).forEach(function (key) {
270
228
  if (key === "default" || key === "__esModule") return;
271
229
  if (key in exports && exports[key] === _transport[key]) return;
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AA0BA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nexport * from './apiMethods'\nexport * from './apiSettings'\nexport * from './authSession'\nexport * from './authToken'\nexport * from './baseTransport'\nexport * from './browserSession'\nexport * from './browserServices'\nexport * from './browserTransport'\nexport * from './constants'\nexport * from './cryptoHash'\nexport * from './CSRFSession'\nexport * from './delimArray'\nexport * from './errorDoc'\nexport * from './extensionSession'\nexport * from './extensionTransport'\nexport * from './lookerSDKError'\nexport * from './oauthSession'\nexport * from './paging'\nexport * from './platformServices'\nexport * from './proxySession'\nexport * from './transport'\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nexport * from './apiMethods'\nexport * from './apiSettings'\nexport * from './authSession'\nexport * from './authToken'\nexport * from './baseTransport'\nexport * from './browserSession'\nexport * from './browserServices'\nexport * from './browserTransport'\nexport * from './constants'\nexport * from './cryptoHash'\nexport * from './CSRFSession'\nexport * from './delimArray'\nexport * from './errorDoc'\nexport * from './extensionSession'\nexport * from './extensionTransport'\nexport * from './lookerSDKError'\nexport * from './oauthSession'\nexport * from './paging'\nexport * from './platformServices'\nexport * from './proxySession'\nexport * from './transport'\n"],"mappings":";;;;;AA0BA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
@@ -4,29 +4,23 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.LookerSDKError = void 0;
7
-
7
+ var _excluded = ["errors", "documentation_url"];
8
8
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
9
-
10
9
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
11
-
12
10
  var LookerSDKError = (() => {
13
11
  'use strict';
14
12
 
15
13
  var LookerSDKErrorConstructor = function LookerSDKError() {
16
14
  var _errors, _documentation_url;
17
-
18
15
  for (var _len = arguments.length, _ref = new Array(_len), _key = 0; _key < _len; _key++) {
19
16
  _ref[_key] = arguments[_key];
20
17
  }
21
-
22
18
  var [message, _ref2 = {}, ...rest] = _ref;
23
-
24
19
  var {
25
- errors,
26
- documentation_url
27
- } = _ref2,
28
- errorOptions = _objectWithoutProperties(_ref2, ["errors", "documentation_url"]);
29
-
20
+ errors,
21
+ documentation_url
22
+ } = _ref2,
23
+ errorOptions = _objectWithoutProperties(_ref2, _excluded);
30
24
  (_errors = errors) !== null && _errors !== void 0 ? _errors : errors = [];
31
25
  (_documentation_url = documentation_url) !== null && _documentation_url !== void 0 ? _documentation_url : documentation_url = '';
32
26
  var error = this ? new Error(message, errorOptions, ...rest) : Error(message, errorOptions, ...rest);
@@ -38,7 +32,6 @@ var LookerSDKError = (() => {
38
32
  error.documentation_url = documentation_url;
39
33
  return error;
40
34
  };
41
-
42
35
  Object.defineProperty(LookerSDKErrorConstructor, 'prototype', {
43
36
  value: Object.create(Error.prototype, {
44
37
  constructor: {
@@ -56,6 +49,5 @@ var LookerSDKError = (() => {
56
49
  });
57
50
  return LookerSDKErrorConstructor;
58
51
  })();
59
-
60
52
  exports.LookerSDKError = LookerSDKError;
61
53
  //# sourceMappingURL=lookerSDKError.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lookerSDKError.ts"],"names":["LookerSDKError","LookerSDKErrorConstructor","message","rest","errors","documentation_url","errorOptions","error","Error","Object","setPrototypeOf","getPrototypeOf","prototype","defineProperty","enumerable","value","create","constructor","writable","configurable","name"],"mappings":";;;;;;;;;;;AAiFO,IAAMA,cAA0C,GACtC,CAAC,MAAM;AACpB;;AACA,MAAMC,yBAAyB,GAAG,SAASD,cAAT,GAkBhC;AAAA;;AAAA;AAAA;AAAA;;AAAA,QAhBG,CACDE,OADC,EAED,QAII,EANH,EAOD,GAAGC,IAPF,CAgBH;;AAAA,QAdE;AACEC,MAAAA,MADF;AAEEC,MAAAA;AAFF,KAcF;AAAA,QAXOC,YAWP;;AAEA,eAAAF,MAAM,UAAN,mCAAAA,MAAM,GAAK,EAAX;AACA,0BAAAC,iBAAiB,UAAjB,yDAAAA,iBAAiB,GAAK,EAAtB;AAKA,QAAME,KAAK,GAAG,OACV,IAAIC,KAAJ,CACEN,OADF,EAKEI,YALF,EAME,GAAGH,IANL,CADU,GASVK,KAAK,CACHN,OADG,EAGHI,YAHG,EAIH,GAAGH,IAJA,CATT;AAoBAM,IAAAA,MAAM,CAACC,cAAP,CACEH,KADF,EAEE,OAAOE,MAAM,CAACE,cAAP,CAAsB,IAAtB,CAAP,GAAqCX,cAAc,CAACY,SAFtD;AASAH,IAAAA,MAAM,CAACI,cAAP,CAAsBN,KAAtB,EAA6B,SAA7B,EAAwC;AAAEO,MAAAA,UAAU,EAAE;AAAd,KAAxC;AACEP,IAAAA,KAAD,CAA0BH,MAA1B,GAAmCA,MAAnC;AACCG,IAAAA,KAAD,CAA0BF,iBAA1B,GAA8CA,iBAA9C;AAED,WAAOE,KAAP;AACD,GA5DD;;AAuEAE,EAAAA,MAAM,CAACI,cAAP,CACEZ,yBADF,EAEE,WAFF,EAOE;AACEc,IAAAA,KAAK,EAAEN,MAAM,CAACO,MAAP,CAAcR,KAAK,CAACI,SAApB,EAA+B;AACpCK,MAAAA,WAAW,EAAE;AACXF,QAAAA,KAAK,EAAEd,yBADI;AAEXiB,QAAAA,QAAQ,EAAE,IAFC;AAGXC,QAAAA,YAAY,EAAE;AAHH,OADuB;AAMpCC,MAAAA,IAAI,EAAE;AACJL,QAAAA,KAAK,EAAE,gBADH;AAEJG,QAAAA,QAAQ,EAAE,IAFN;AAGJC,QAAAA,YAAY,EAAE;AAHV;AAN8B,KAA/B,CADT;AAiBED,IAAAA,QAAQ,EAAE;AAjBZ,GAPF;AA4BA,SAAOjB,yBAAP;AACD,CAtGc,GADV","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2022 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\n/* eslint-disable @typescript-eslint/ban-ts-comment, @typescript-eslint/no-redeclare */\n\n// Defensive type-level programming to guard against additional\n// parameters being added to Error, as happened in lib.es2022.error.d.ts\n// (which introduced the errorOptions argument)\ntype AugmentErrorOptions<\n ErrorParameters extends unknown[],\n AdditionalErrorOptions\n> = ErrorParameters extends [(infer Message)?]\n ? [Message?, AdditionalErrorOptions?]\n : ErrorParameters extends [(infer Message)?, (infer ErrorOptions)?]\n ? [Message?, (ErrorOptions & AdditionalErrorOptions)?]\n : ErrorParameters extends [\n (infer Message)?,\n (infer ErrorOptions)?,\n ...infer Rest\n ]\n ? [Message?, (ErrorOptions & AdditionalErrorOptions)?, ...Rest]\n : never\n\ninterface IErrorDetail {\n field?: string\n code?: string\n message?: string\n documentation_url: string\n}\n\n// This specifies SDK custom error options\ninterface ILookerSDKErrorOptions {\n errors?: IErrorDetail[]\n documentation_url?: string | null\n}\n\ninterface ILookerSDKErrorConstructor {\n new (\n ...args: AugmentErrorOptions<\n ConstructorParameters<ErrorConstructor>,\n ILookerSDKErrorOptions\n >\n ): LookerSDKError\n (\n ...args: AugmentErrorOptions<\n Parameters<ErrorConstructor>,\n ILookerSDKErrorOptions\n >\n ): LookerSDKError\n}\n\n// The subclass and function expression's name should match, so that stack traces look clean.\n// We bind it to a local identifier for clarity, and to perform a type assertion.\nexport interface LookerSDKError extends Error {\n errors?: IErrorDetail[]\n documentation_url?: string | null\n}\n\nexport const LookerSDKError: ILookerSDKErrorConstructor =\n /* #__PURE__*/ (() => {\n 'use strict'\n const LookerSDKErrorConstructor = function LookerSDKError(\n this: LookerSDKError | undefined,\n ...[\n message,\n {\n errors,\n documentation_url,\n ...errorOptions\n } = {} as ILookerSDKErrorOptions,\n ...rest\n ]: AugmentErrorOptions<\n ConstructorParameters<ErrorConstructor>,\n ILookerSDKErrorOptions\n > &\n AugmentErrorOptions<\n Parameters<ErrorConstructor>,\n ILookerSDKErrorOptions\n >\n ) {\n // handle null in addition to undefined\n errors ??= []\n documentation_url ??= ''\n\n // The `super()` call. At present, Error() and new Error() are\n // indistinguishable, but use whatever we were invoked with in case\n // that ever changes.\n const error = this\n ? new Error(\n message,\n // we have to suppress a type error here if TypeScript\n // doesn't know es2022's two-argument Error constructor\n // @ts-ignore-error\n errorOptions,\n ...rest\n )\n : Error(\n message,\n // @ts-ignore-error\n errorOptions,\n ...rest\n )\n\n // Object.setPrototypeOf() is necessary when extending built-ins,\n // since Error.call(this, message, errorOptions, ...rest) doesn't\n // set up the prototype chain the way it would with a user-defined\n // class.\n Object.setPrototypeOf(\n error,\n this ? Object.getPrototypeOf(this) : LookerSDKError.prototype\n )\n\n // Normally the 'message' property of JavaScript Error objects is non-enumerable\n // set it to be enumerable for consistency with our non-error responses,\n // which are implemented as plain JavaScript objects where all\n // properties are enumerable.\n Object.defineProperty(error, 'message', { enumerable: true })\n ;(error as LookerSDKError).errors = errors\n ;(error as LookerSDKError).documentation_url = documentation_url\n\n return error\n } as ILookerSDKErrorConstructor\n\n // LookerSDKError.prototype, LookerSDKError.prototype.constructor, and\n // LookerSDKError.prototoype.name all have to be non-enumerable to match\n // the built-in RangeError, TypeError, etc., so we use\n // Object.defineProperty to set them instead of `=` assignment.\n\n // Default values for property descriptor objects:\n // writable: false\n // enumerable: false\n // configurable: false\n Object.defineProperty(\n LookerSDKErrorConstructor,\n 'prototype',\n // It's a weird wart that the built-in Error constructor\n // prototypes have writable and configurable constructor and name\n // fields. We follow that behavior to be consistent, not because\n // it makes sense.\n {\n value: Object.create(Error.prototype, {\n constructor: {\n value: LookerSDKErrorConstructor,\n writable: true,\n configurable: true,\n },\n name: {\n value: 'LookerSDKError',\n writable: true,\n configurable: true,\n },\n }),\n // SomeConstructorFunction.prototype starts off writable with\n // `function`-type constructors, in contrast to `class SomeClass`.\n // Set this to be non-writable to match `class`es and the built-in\n // Error constructors.\n writable: false,\n }\n )\n\n return LookerSDKErrorConstructor\n })()\n"],"file":"lookerSDKError.js"}
1
+ {"version":3,"file":"lookerSDKError.js","names":["LookerSDKError","LookerSDKErrorConstructor","message","rest","errors","documentation_url","errorOptions","error","Error","Object","setPrototypeOf","getPrototypeOf","prototype","defineProperty","enumerable","value","create","constructor","writable","configurable","name"],"sources":["../src/lookerSDKError.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2022 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\n/* eslint-disable @typescript-eslint/ban-ts-comment, @typescript-eslint/no-redeclare */\n\n// Defensive type-level programming to guard against additional\n// parameters being added to Error, as happened in lib.es2022.error.d.ts\n// (which introduced the errorOptions argument)\ntype AugmentErrorOptions<\n ErrorParameters extends unknown[],\n AdditionalErrorOptions\n> = ErrorParameters extends [(infer Message)?]\n ? [Message?, AdditionalErrorOptions?]\n : ErrorParameters extends [(infer Message)?, (infer ErrorOptions)?]\n ? [Message?, (ErrorOptions & AdditionalErrorOptions)?]\n : ErrorParameters extends [\n (infer Message)?,\n (infer ErrorOptions)?,\n ...infer Rest\n ]\n ? [Message?, (ErrorOptions & AdditionalErrorOptions)?, ...Rest]\n : never\n\ninterface IErrorDetail {\n field?: string\n code?: string\n message?: string\n documentation_url: string\n}\n\n// This specifies SDK custom error options\ninterface ILookerSDKErrorOptions {\n errors?: IErrorDetail[]\n documentation_url?: string | null\n}\n\ninterface ILookerSDKErrorConstructor {\n new (\n ...args: AugmentErrorOptions<\n ConstructorParameters<ErrorConstructor>,\n ILookerSDKErrorOptions\n >\n ): LookerSDKError\n (\n ...args: AugmentErrorOptions<\n Parameters<ErrorConstructor>,\n ILookerSDKErrorOptions\n >\n ): LookerSDKError\n}\n\n// The subclass and function expression's name should match, so that stack traces look clean.\n// We bind it to a local identifier for clarity, and to perform a type assertion.\nexport interface LookerSDKError extends Error {\n errors?: IErrorDetail[]\n documentation_url?: string | null\n}\n\nexport const LookerSDKError: ILookerSDKErrorConstructor =\n /* #__PURE__*/ (() => {\n 'use strict'\n const LookerSDKErrorConstructor = function LookerSDKError(\n this: LookerSDKError | undefined,\n ...[\n message,\n {\n errors,\n documentation_url,\n ...errorOptions\n } = {} as ILookerSDKErrorOptions,\n ...rest\n ]: AugmentErrorOptions<\n ConstructorParameters<ErrorConstructor>,\n ILookerSDKErrorOptions\n > &\n AugmentErrorOptions<\n Parameters<ErrorConstructor>,\n ILookerSDKErrorOptions\n >\n ) {\n // handle null in addition to undefined\n errors ??= []\n documentation_url ??= ''\n\n // The `super()` call. At present, Error() and new Error() are\n // indistinguishable, but use whatever we were invoked with in case\n // that ever changes.\n const error = this\n ? new Error(\n message,\n // we have to suppress a type error here if TypeScript\n // doesn't know es2022's two-argument Error constructor\n // @ts-ignore-error\n errorOptions,\n ...rest\n )\n : Error(\n message,\n // @ts-ignore-error\n errorOptions,\n ...rest\n )\n\n // Object.setPrototypeOf() is necessary when extending built-ins,\n // since Error.call(this, message, errorOptions, ...rest) doesn't\n // set up the prototype chain the way it would with a user-defined\n // class.\n Object.setPrototypeOf(\n error,\n this ? Object.getPrototypeOf(this) : LookerSDKError.prototype\n )\n\n // Normally the 'message' property of JavaScript Error objects is non-enumerable\n // set it to be enumerable for consistency with our non-error responses,\n // which are implemented as plain JavaScript objects where all\n // properties are enumerable.\n Object.defineProperty(error, 'message', { enumerable: true })\n ;(error as LookerSDKError).errors = errors\n ;(error as LookerSDKError).documentation_url = documentation_url\n\n return error\n } as ILookerSDKErrorConstructor\n\n // LookerSDKError.prototype, LookerSDKError.prototype.constructor, and\n // LookerSDKError.prototoype.name all have to be non-enumerable to match\n // the built-in RangeError, TypeError, etc., so we use\n // Object.defineProperty to set them instead of `=` assignment.\n\n // Default values for property descriptor objects:\n // writable: false\n // enumerable: false\n // configurable: false\n Object.defineProperty(\n LookerSDKErrorConstructor,\n 'prototype',\n // It's a weird wart that the built-in Error constructor\n // prototypes have writable and configurable constructor and name\n // fields. We follow that behavior to be consistent, not because\n // it makes sense.\n {\n value: Object.create(Error.prototype, {\n constructor: {\n value: LookerSDKErrorConstructor,\n writable: true,\n configurable: true,\n },\n name: {\n value: 'LookerSDKError',\n writable: true,\n configurable: true,\n },\n }),\n // SomeConstructorFunction.prototype starts off writable with\n // `function`-type constructors, in contrast to `class SomeClass`.\n // Set this to be non-writable to match `class`es and the built-in\n // Error constructors.\n writable: false,\n }\n )\n\n return LookerSDKErrorConstructor\n })()\n"],"mappings":";;;;;;;;;AAiFO,IAAMA,cAA0C,GACtC,CAAC,MAAM;EACpB,YAAY;;EACZ,IAAMC,yBAAyB,GAAG,SAASD,cAAc,GAkBvD;IAAA;IAAA;MAAA;IAAA;IAAA,IAhBG,CACDE,OAAO,EACP,QAII,CAAC,CAA2B,EAChC,GAAGC,IAAI,CACR;IAAA,IANC;QACEC,MAAM;QACNC;MAEF,CAAC;MADIC,YAAY;IAanB,WAAAF,MAAM,6CAANA,MAAM,GAAK,EAAE;IACb,sBAAAC,iBAAiB,mEAAjBA,iBAAiB,GAAK,EAAE;IAKxB,IAAME,KAAK,GAAG,IAAI,GACd,IAAIC,KAAK,CACPN,OAAO,EAIPI,YAAY,EACZ,GAAGH,IAAI,CACR,GACDK,KAAK,CACHN,OAAO,EAEPI,YAAY,EACZ,GAAGH,IAAI,CACR;IAMLM,MAAM,CAACC,cAAc,CACnBH,KAAK,EACL,IAAI,GAAGE,MAAM,CAACE,cAAc,CAAC,IAAI,CAAC,GAAGX,cAAc,CAACY,SAAS,CAC9D;IAMDH,MAAM,CAACI,cAAc,CAACN,KAAK,EAAE,SAAS,EAAE;MAAEO,UAAU,EAAE;IAAK,CAAC,CAAC;IAC3DP,KAAK,CAAoBH,MAAM,GAAGA,MAAM;IACxCG,KAAK,CAAoBF,iBAAiB,GAAGA,iBAAiB;IAEhE,OAAOE,KAAK;EACd,CAA+B;EAW/BE,MAAM,CAACI,cAAc,CACnBZ,yBAAyB,EACzB,WAAW,EAKX;IACEc,KAAK,EAAEN,MAAM,CAACO,MAAM,CAACR,KAAK,CAACI,SAAS,EAAE;MACpCK,WAAW,EAAE;QACXF,KAAK,EAAEd,yBAAyB;QAChCiB,QAAQ,EAAE,IAAI;QACdC,YAAY,EAAE;MAChB,CAAC;MACDC,IAAI,EAAE;QACJL,KAAK,EAAE,gBAAgB;QACvBG,QAAQ,EAAE,IAAI;QACdC,YAAY,EAAE;MAChB;IACF,CAAC,CAAC;IAKFD,QAAQ,EAAE;EACZ,CAAC,CACF;EAED,OAAOjB,yBAAyB;AAClC,CAAC,GAAG;AAAA"}
@@ -4,41 +4,27 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.OAuthSession = void 0;
7
-
8
7
  var _authSession = require("./authSession");
9
-
10
8
  var _transport = require("./transport");
11
-
12
9
  var _authToken = require("./authToken");
13
-
14
10
  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); } }
15
-
16
11
  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); }); }; }
17
-
18
- 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; }
19
-
20
- 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; }
21
-
22
- 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; }
23
-
12
+ 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
+ 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
+ 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
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
16
+ 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); }
24
17
  class OAuthSession extends _authSession.AuthSession {
25
18
  constructor(services) {
26
19
  super(services.settings, services.transport);
27
-
28
20
  _defineProperty(this, "activeToken", new _authToken.AuthToken());
29
-
30
21
  _defineProperty(this, "crypto", void 0);
31
-
32
22
  _defineProperty(this, "reentry", false);
33
-
34
23
  this.crypto = services.crypto;
35
24
  var keys = ['client_id', 'redirect_uri', 'base_url', 'looker_url'];
36
-
37
25
  var config = _objectSpread(_objectSpread({}, this.settings), this.settings.readConfig());
38
-
39
26
  keys.forEach(key => {
40
27
  var value = config[key];
41
-
42
28
  if (!value) {
43
29
  throw (0, _transport.sdkError)({
44
30
  message: "Missing required configuration setting: '".concat(key, "'")
@@ -46,29 +32,22 @@ class OAuthSession extends _authSession.AuthSession {
46
32
  }
47
33
  });
48
34
  }
49
-
50
35
  readConfig() {
51
36
  return _objectSpread(_objectSpread({}, this.settings), this.settings.readConfig());
52
37
  }
53
-
54
38
  authenticate(props) {
55
39
  var _this = this;
56
-
57
40
  return _asyncToGenerator(function* () {
58
41
  var token = yield _this.getToken();
59
-
60
42
  if (token.access_token) {
61
43
  props.headers.Authorization = "Bearer ".concat(token.access_token);
62
44
  }
63
-
64
45
  return props;
65
46
  })();
66
47
  }
67
-
68
48
  get code_verifier() {
69
49
  return sessionStorage.getItem(OAuthSession.codeVerifierKey);
70
50
  }
71
-
72
51
  set code_verifier(value) {
73
52
  if (value === null) {
74
53
  sessionStorage.removeItem(OAuthSession.codeVerifierKey);
@@ -76,11 +55,9 @@ class OAuthSession extends _authSession.AuthSession {
76
55
  sessionStorage.setItem(OAuthSession.codeVerifierKey, value);
77
56
  }
78
57
  }
79
-
80
58
  get returnUrl() {
81
59
  return sessionStorage.getItem(OAuthSession.returnUrlKey);
82
60
  }
83
-
84
61
  set returnUrl(value) {
85
62
  if (!value) {
86
63
  sessionStorage.removeItem(OAuthSession.returnUrlKey);
@@ -88,15 +65,12 @@ class OAuthSession extends _authSession.AuthSession {
88
65
  sessionStorage.setItem(OAuthSession.returnUrlKey, value);
89
66
  }
90
67
  }
91
-
92
68
  clearStorage() {
93
69
  sessionStorage.removeItem(OAuthSession.codeVerifierKey);
94
70
  sessionStorage.removeItem(OAuthSession.returnUrlKey);
95
71
  }
96
-
97
72
  login(_sudoId) {
98
73
  var _this2 = this;
99
-
100
74
  return _asyncToGenerator(function* () {
101
75
  if (!_this2.isAuthenticated()) {
102
76
  if (_this2.reentry) {} else if (!_this2.returnUrl) {
@@ -107,50 +81,38 @@ class OAuthSession extends _authSession.AuthSession {
107
81
  } else {
108
82
  _this2.reentry = true;
109
83
  _this2.returnUrl = null;
110
-
111
84
  if (!_this2.code_verifier) {
112
85
  return Promise.reject(new Error('OAuth failed: expected code_verifier to be stored'));
113
86
  }
114
-
115
87
  var params = new URLSearchParams(window.location.search);
116
88
  var code = params.get('code');
117
-
118
89
  if (!code) {
119
90
  return Promise.reject(new Error("OAuth failed: no OAuth code parameter found in ".concat(window.location.pathname + window.location.search)));
120
91
  }
121
-
122
92
  yield _this2.redeemAuthCode(code);
123
93
  }
124
-
125
94
  return yield _this2.getToken();
126
95
  }
127
-
128
96
  return _this2.activeToken;
129
97
  })();
130
98
  }
131
-
132
99
  requestToken(body) {
133
100
  var _this3 = this;
134
-
135
101
  return _asyncToGenerator(function* () {
136
102
  var config = _this3.readConfig();
137
-
138
103
  var url = new URL(config.base_url);
139
104
  url.pathname = '/api/token';
140
105
  var token = yield _this3.ok(_this3.transport.request('POST', url.toString(), undefined, body));
141
106
  return _this3.activeToken.setToken(token);
142
107
  })();
143
108
  }
144
-
145
109
  createAuthCodeRequestUrl(scope, state) {
146
110
  var _this4 = this;
147
-
148
111
  return _asyncToGenerator(function* () {
149
- _this4.code_verifier = _this4.crypto.secureRandom(33);
150
- var code_challenge = yield _this4.crypto.sha256Hash(_this4.code_verifier);
151
-
112
+ var verifier = _this4.crypto.secureRandom(33);
113
+ _this4.code_verifier = verifier;
114
+ var code_challenge = yield _this4.crypto.sha256Hash(verifier);
152
115
  var config = _this4.readConfig();
153
-
154
116
  var params = {
155
117
  client_id: config.client_id,
156
118
  code_challenge: code_challenge,
@@ -166,7 +128,6 @@ class OAuthSession extends _authSession.AuthSession {
166
128
  return url.toString();
167
129
  })();
168
130
  }
169
-
170
131
  redeemAuthCodeBody(authCode, codeVerifier) {
171
132
  var verifier = codeVerifier || this.code_verifier || '';
172
133
  var config = this.readConfig();
@@ -178,23 +139,18 @@ class OAuthSession extends _authSession.AuthSession {
178
139
  redirect_uri: config.redirect_uri
179
140
  };
180
141
  }
181
-
182
142
  redeemAuthCode(authCode, codeVerifier) {
183
143
  var _this5 = this;
184
-
185
144
  return _asyncToGenerator(function* () {
186
145
  return _this5.requestToken(_this5.redeemAuthCodeBody(authCode, codeVerifier));
187
146
  })();
188
147
  }
189
-
190
148
  getToken() {
191
149
  var _this6 = this;
192
-
193
150
  return _asyncToGenerator(function* () {
194
151
  if (!_this6.isAuthenticated()) {
195
152
  if (_this6.activeToken.refresh_token) {
196
153
  var config = _this6.readConfig();
197
-
198
154
  yield _this6.requestToken({
199
155
  client_id: config.client_id,
200
156
  grant_type: 'refresh_token',
@@ -203,18 +159,14 @@ class OAuthSession extends _authSession.AuthSession {
203
159
  });
204
160
  }
205
161
  }
206
-
207
162
  return _this6.activeToken;
208
163
  })();
209
164
  }
210
-
211
165
  isAuthenticated() {
212
166
  return this.activeToken.isActive();
213
167
  }
214
-
215
168
  logout() {
216
169
  var _this7 = this;
217
-
218
170
  return _asyncToGenerator(function* () {
219
171
  if (_this7.activeToken.access_token) {
220
172
  yield _this7.ok(_this7.transport.request('DELETE', "/api/logout", undefined, undefined, init => {
@@ -222,21 +174,14 @@ class OAuthSession extends _authSession.AuthSession {
222
174
  return init;
223
175
  }));
224
176
  _this7.activeToken = new _authToken.AuthToken();
225
-
226
177
  _this7.clearStorage();
227
-
228
178
  return true;
229
179
  }
230
-
231
180
  return false;
232
181
  })();
233
182
  }
234
-
235
183
  }
236
-
237
184
  exports.OAuthSession = OAuthSession;
238
-
239
185
  _defineProperty(OAuthSession, "codeVerifierKey", 'looker_oauth_code_verifier');
240
-
241
186
  _defineProperty(OAuthSession, "returnUrlKey", 'looker_oauth_return_url');
242
187
  //# sourceMappingURL=oauthSession.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/oauthSession.ts"],"names":["OAuthSession","AuthSession","constructor","services","settings","transport","AuthToken","crypto","keys","config","readConfig","forEach","key","value","message","authenticate","props","token","getToken","access_token","headers","Authorization","code_verifier","sessionStorage","getItem","codeVerifierKey","removeItem","setItem","returnUrl","returnUrlKey","clearStorage","login","_sudoId","isAuthenticated","reentry","authUrl","createAuthCodeRequestUrl","agentPrefix","returnTo","window","location","pathname","search","href","Promise","reject","Error","params","URLSearchParams","code","get","redeemAuthCode","activeToken","requestToken","body","url","URL","base_url","ok","request","toString","undefined","setToken","scope","state","secureRandom","code_challenge","sha256Hash","client_id","code_challenge_method","redirect_uri","response_type","looker_url","redeemAuthCodeBody","authCode","codeVerifier","verifier","grant_type","refresh_token","isActive","logout","init"],"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 { IAccessToken, IError } from './authSession'\nimport { AuthSession } from './authSession'\nimport type { IRequestProps } from './transport'\nimport { agentPrefix, sdkError } from './transport'\nimport { AuthToken } from './authToken'\nimport type { ICryptoHash } from './cryptoHash'\nimport type { IPlatformServices } from './platformServices'\n\ninterface IAuthCodeGrantTypeParams {\n grant_type: 'authorization_code'\n code: string\n code_verifier: string\n client_id: string\n redirect_uri: string\n}\n\ninterface IRefreshTokenGrantTypeParams {\n grant_type: 'refresh_token'\n refresh_token: string\n client_id: string\n redirect_uri: string\n}\n\nexport class OAuthSession extends AuthSession {\n activeToken = new AuthToken()\n crypto: ICryptoHash\n reentry = false\n private static readonly codeVerifierKey = 'looker_oauth_code_verifier'\n public static readonly returnUrlKey = 'looker_oauth_return_url'\n\n constructor(services: IPlatformServices) {\n super(services.settings, services.transport)\n\n this.crypto = services.crypto\n\n const keys: string[] = [\n 'client_id',\n 'redirect_uri',\n 'base_url',\n 'looker_url',\n ]\n const config = { ...this.settings, ...this.settings.readConfig() }\n\n keys.forEach((key) => {\n const value = config[key]\n if (!value) {\n throw sdkError({\n message: `Missing required configuration setting: '${key}'`,\n })\n }\n })\n }\n\n /**\n * merge the dynamically defined configuration values with the initial settings\n */\n readConfig() {\n return { ...this.settings, ...this.settings.readConfig() }\n }\n\n /**\n * Apply current auth token credentials to an HTTP request\n * @param props request properties to update\n * @returns updated request properties with auth information added\n */\n async authenticate(props: IRequestProps): Promise<IRequestProps> {\n const token = await this.getToken()\n if (token.access_token) {\n props.headers.Authorization = `Bearer ${token.access_token}`\n }\n return props\n }\n\n /**\n * Gets session storage for OAuth code verification\n * @returns saved code verifier\n */\n get code_verifier() {\n return sessionStorage.getItem(OAuthSession.codeVerifierKey)\n }\n\n /**\n * Sets session storage for OAuth code verification\n */\n set code_verifier(value: string | null) {\n if (value === null) {\n // only clear code_verifier if it's `null`\n sessionStorage.removeItem(OAuthSession.codeVerifierKey)\n } else {\n sessionStorage.setItem(OAuthSession.codeVerifierKey, value)\n }\n }\n\n /**\n * URL to return to after login process completes\n * @returns the URL that started the OAuth login process\n */\n get returnUrl() {\n return sessionStorage.getItem(OAuthSession.returnUrlKey)\n }\n\n /**\n * Sets the return URL for successful OAuth login\n */\n set returnUrl(value: string | null) {\n if (!value) {\n sessionStorage.removeItem(OAuthSession.returnUrlKey)\n } else {\n sessionStorage.setItem(OAuthSession.returnUrlKey, value)\n }\n }\n\n /**\n * Clears all Looker SDK OAuth-related session storage\n */\n clearStorage() {\n sessionStorage.removeItem(OAuthSession.codeVerifierKey)\n sessionStorage.removeItem(OAuthSession.returnUrlKey)\n }\n\n async login(_sudoId?: string | number): Promise<any> {\n if (!this.isAuthenticated()) {\n if (this.reentry) {\n // do nothing\n } else if (!this.returnUrl) {\n // OAuth has not been initiated\n const authUrl = await this.createAuthCodeRequestUrl(\n 'cors_api',\n agentPrefix\n )\n const returnTo = window.location.pathname + window.location.search\n this.returnUrl = returnTo\n // Save the current URL so redirected successful OAuth login can restore it\n window.location.href = authUrl\n } else {\n this.reentry = true\n // If return URL is stored, we must be coming back from an OAuth request\n // so release the stored return url at the start of the redemption\n this.returnUrl = null\n if (!this.code_verifier) {\n return Promise.reject(\n new Error('OAuth failed: expected code_verifier to be stored')\n )\n }\n const params = new URLSearchParams(window.location.search)\n const code = params.get('code')\n if (!code) {\n return Promise.reject(\n new Error(\n `OAuth failed: no OAuth code parameter found in ${\n window.location.pathname + window.location.search\n }`\n )\n )\n }\n await this.redeemAuthCode(code)\n }\n return await this.getToken()\n }\n return this.activeToken\n }\n\n private async requestToken(\n body: IAuthCodeGrantTypeParams | IRefreshTokenGrantTypeParams\n ) {\n const config = this.readConfig()\n const url = new URL(config.base_url)\n // replace the entire path of the base_url because this\n // auth endpoint is independent of API version\n url.pathname = '/api/token'\n const token = await this.ok(\n this.transport.request<IAccessToken, IError>(\n 'POST',\n url.toString(),\n undefined,\n body\n )\n )\n\n return this.activeToken.setToken(token)\n }\n\n /*\n Generate an OAuth2 authCode request URL\n */\n async createAuthCodeRequestUrl(\n scope: string,\n state: string\n ): Promise<string> {\n // TODO: remove this comment when we remove hex backwards compatibility\n // in Looker API. For now it must not be 2^n so that Looker correctly\n // treats it as base64 encoded\n this.code_verifier = this.crypto.secureRandom(33)\n const code_challenge = await this.crypto.sha256Hash(this.code_verifier)\n const config = this.readConfig()\n const params: Record<string, string> = {\n client_id: config.client_id,\n code_challenge: code_challenge,\n code_challenge_method: 'S256',\n redirect_uri: config.redirect_uri,\n response_type: 'code',\n scope: scope,\n state: state,\n }\n const url = new URL(config.looker_url)\n url.pathname = '/auth'\n url.search = new URLSearchParams(params).toString()\n return url.toString()\n }\n\n redeemAuthCodeBody(authCode: string, codeVerifier?: string) {\n const verifier = codeVerifier || this.code_verifier || ''\n const config = this.readConfig()\n return {\n client_id: config.client_id,\n code: authCode,\n code_verifier: verifier,\n grant_type: 'authorization_code',\n redirect_uri: config.redirect_uri,\n } as IAuthCodeGrantTypeParams\n }\n\n /**\n * Convert an authCode received from server into an active auth token\n * The app is responsible for obtaining the authCode via interactive user login\n * via /auth front-end endpoint and URL redirect. When the authCode is received\n * by url redirect to an app route, pass the authCode into this function to\n * get an access_token and refresh_token.\n * @param {string} authCode\n * @param {string} codeVerifier\n * @returns {Promise<AuthToken>}\n */\n async redeemAuthCode(authCode: string, codeVerifier?: string) {\n return this.requestToken(this.redeemAuthCodeBody(authCode, codeVerifier))\n }\n\n async getToken() {\n if (!this.isAuthenticated()) {\n if (this.activeToken.refresh_token) {\n const config = this.readConfig()\n await this.requestToken({\n client_id: config.client_id,\n grant_type: 'refresh_token',\n redirect_uri: config.redirect_uri,\n refresh_token: this.activeToken.refresh_token,\n })\n }\n }\n return this.activeToken\n }\n\n isAuthenticated(): boolean {\n return this.activeToken.isActive()\n }\n\n async logout() {\n if (this.activeToken.access_token) {\n await this.ok(\n this.transport.request<IAccessToken, IError>(\n 'DELETE',\n `/api/logout`,\n undefined,\n undefined,\n (init: IRequestProps) => {\n init.headers.Authorization = `Bearer ${this.activeToken.access_token}`\n return init\n }\n )\n )\n\n // logout destroys the access_token AND the refresh_token\n this.activeToken = new AuthToken()\n this.clearStorage()\n return true\n }\n return false\n }\n}\n"],"file":"oauthSession.js"}
1
+ {"version":3,"file":"oauthSession.js","names":["OAuthSession","AuthSession","constructor","services","settings","transport","AuthToken","crypto","keys","config","readConfig","forEach","key","value","sdkError","message","authenticate","props","token","getToken","access_token","headers","Authorization","code_verifier","sessionStorage","getItem","codeVerifierKey","removeItem","setItem","returnUrl","returnUrlKey","clearStorage","login","_sudoId","isAuthenticated","reentry","authUrl","createAuthCodeRequestUrl","agentPrefix","returnTo","window","location","pathname","search","href","Promise","reject","Error","params","URLSearchParams","code","get","redeemAuthCode","activeToken","requestToken","body","url","URL","base_url","ok","request","toString","undefined","setToken","scope","state","verifier","secureRandom","code_challenge","sha256Hash","client_id","code_challenge_method","redirect_uri","response_type","looker_url","redeemAuthCodeBody","authCode","codeVerifier","grant_type","refresh_token","isActive","logout","init"],"sources":["../src/oauthSession.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { IAccessToken, IError } from './authSession'\nimport { AuthSession } from './authSession'\nimport type { IRequestProps } from './transport'\nimport { agentPrefix, sdkError } from './transport'\nimport { AuthToken } from './authToken'\nimport type { ICryptoHash } from './cryptoHash'\nimport type { IPlatformServices } from './platformServices'\n\ninterface IAuthCodeGrantTypeParams {\n grant_type: 'authorization_code'\n code: string\n code_verifier: string\n client_id: string\n redirect_uri: string\n}\n\ninterface IRefreshTokenGrantTypeParams {\n grant_type: 'refresh_token'\n refresh_token: string\n client_id: string\n redirect_uri: string\n}\n\nexport class OAuthSession extends AuthSession {\n activeToken = new AuthToken()\n crypto: ICryptoHash\n reentry = false\n private static readonly codeVerifierKey = 'looker_oauth_code_verifier'\n public static readonly returnUrlKey = 'looker_oauth_return_url'\n\n constructor(services: IPlatformServices) {\n super(services.settings, services.transport)\n\n this.crypto = services.crypto\n\n const keys: string[] = [\n 'client_id',\n 'redirect_uri',\n 'base_url',\n 'looker_url',\n ]\n const config = { ...this.settings, ...this.settings.readConfig() }\n\n keys.forEach((key) => {\n const value = config[key]\n if (!value) {\n throw sdkError({\n message: `Missing required configuration setting: '${key}'`,\n })\n }\n })\n }\n\n /**\n * merge the dynamically defined configuration values with the initial settings\n */\n readConfig() {\n return { ...this.settings, ...this.settings.readConfig() }\n }\n\n /**\n * Apply current auth token credentials to an HTTP request\n * @param props request properties to update\n * @returns updated request properties with auth information added\n */\n async authenticate(props: IRequestProps): Promise<IRequestProps> {\n const token = await this.getToken()\n if (token.access_token) {\n props.headers.Authorization = `Bearer ${token.access_token}`\n }\n return props\n }\n\n /**\n * Gets session storage for OAuth code verification\n * @returns saved code verifier\n */\n get code_verifier() {\n return sessionStorage.getItem(OAuthSession.codeVerifierKey)\n }\n\n /**\n * Sets session storage for OAuth code verification\n */\n set code_verifier(value: string | null) {\n if (value === null) {\n // only clear code_verifier if it's `null`\n sessionStorage.removeItem(OAuthSession.codeVerifierKey)\n } else {\n sessionStorage.setItem(OAuthSession.codeVerifierKey, value)\n }\n }\n\n /**\n * URL to return to after login process completes\n * @returns the URL that started the OAuth login process\n */\n get returnUrl() {\n return sessionStorage.getItem(OAuthSession.returnUrlKey)\n }\n\n /**\n * Sets the return URL for successful OAuth login\n */\n set returnUrl(value: string | null) {\n if (!value) {\n sessionStorage.removeItem(OAuthSession.returnUrlKey)\n } else {\n sessionStorage.setItem(OAuthSession.returnUrlKey, value)\n }\n }\n\n /**\n * Clears all Looker SDK OAuth-related session storage\n */\n clearStorage() {\n sessionStorage.removeItem(OAuthSession.codeVerifierKey)\n sessionStorage.removeItem(OAuthSession.returnUrlKey)\n }\n\n async login(_sudoId?: string | number): Promise<any> {\n if (!this.isAuthenticated()) {\n if (this.reentry) {\n // do nothing\n } else if (!this.returnUrl) {\n // OAuth has not been initiated\n const authUrl = await this.createAuthCodeRequestUrl(\n 'cors_api',\n agentPrefix\n )\n const returnTo = window.location.pathname + window.location.search\n this.returnUrl = returnTo\n // Save the current URL so redirected successful OAuth login can restore it\n window.location.href = authUrl\n } else {\n this.reentry = true\n // If return URL is stored, we must be coming back from an OAuth request\n // so release the stored return url at the start of the redemption\n this.returnUrl = null\n if (!this.code_verifier) {\n return Promise.reject(\n new Error('OAuth failed: expected code_verifier to be stored')\n )\n }\n const params = new URLSearchParams(window.location.search)\n const code = params.get('code')\n if (!code) {\n return Promise.reject(\n new Error(\n `OAuth failed: no OAuth code parameter found in ${\n window.location.pathname + window.location.search\n }`\n )\n )\n }\n await this.redeemAuthCode(code)\n }\n return await this.getToken()\n }\n return this.activeToken\n }\n\n private async requestToken(\n body: IAuthCodeGrantTypeParams | IRefreshTokenGrantTypeParams\n ) {\n const config = this.readConfig()\n const url = new URL(config.base_url)\n // replace the entire path of the base_url because this\n // auth endpoint is independent of API version\n url.pathname = '/api/token'\n const token = await this.ok(\n this.transport.request<IAccessToken, IError>(\n 'POST',\n url.toString(),\n undefined,\n body\n )\n )\n\n return this.activeToken.setToken(token)\n }\n\n /*\n Generate an OAuth2 authCode request URL\n */\n async createAuthCodeRequestUrl(\n scope: string,\n state: string\n ): Promise<string> {\n // TODO: remove this comment when we remove hex backwards compatibility\n // in Looker API. For now it must not be 2^n so that Looker correctly\n // treats it as base64 encoded\n const verifier = this.crypto.secureRandom(33)\n this.code_verifier = verifier\n const code_challenge = await this.crypto.sha256Hash(verifier)\n const config = this.readConfig()\n const params: Record<string, string> = {\n client_id: config.client_id,\n code_challenge: code_challenge,\n code_challenge_method: 'S256',\n redirect_uri: config.redirect_uri,\n response_type: 'code',\n scope: scope,\n state: state,\n }\n const url = new URL(config.looker_url)\n url.pathname = '/auth'\n url.search = new URLSearchParams(params).toString()\n return url.toString()\n }\n\n redeemAuthCodeBody(authCode: string, codeVerifier?: string) {\n const verifier = codeVerifier || this.code_verifier || ''\n const config = this.readConfig()\n return {\n client_id: config.client_id,\n code: authCode,\n code_verifier: verifier,\n grant_type: 'authorization_code',\n redirect_uri: config.redirect_uri,\n } as IAuthCodeGrantTypeParams\n }\n\n /**\n * Convert an authCode received from server into an active auth token\n * The app is responsible for obtaining the authCode via interactive user login\n * via /auth front-end endpoint and URL redirect. When the authCode is received\n * by url redirect to an app route, pass the authCode into this function to\n * get an access_token and refresh_token.\n * @param {string} authCode\n * @param {string} codeVerifier\n * @returns {Promise<AuthToken>}\n */\n async redeemAuthCode(authCode: string, codeVerifier?: string) {\n return this.requestToken(this.redeemAuthCodeBody(authCode, codeVerifier))\n }\n\n async getToken() {\n if (!this.isAuthenticated()) {\n if (this.activeToken.refresh_token) {\n const config = this.readConfig()\n await this.requestToken({\n client_id: config.client_id,\n grant_type: 'refresh_token',\n redirect_uri: config.redirect_uri,\n refresh_token: this.activeToken.refresh_token,\n })\n }\n }\n return this.activeToken\n }\n\n isAuthenticated(): boolean {\n return this.activeToken.isActive()\n }\n\n async logout() {\n if (this.activeToken.access_token) {\n await this.ok(\n this.transport.request<IAccessToken, IError>(\n 'DELETE',\n `/api/logout`,\n undefined,\n undefined,\n (init: IRequestProps) => {\n init.headers.Authorization = `Bearer ${this.activeToken.access_token}`\n return init\n }\n )\n )\n\n // logout destroys the access_token AND the refresh_token\n this.activeToken = new AuthToken()\n this.clearStorage()\n return true\n }\n return false\n }\n}\n"],"mappings":"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"}