@looker/api-explorer 0.9.22 → 0.9.27

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 (353) hide show
  1. package/CHANGELOG.md +126 -0
  2. package/e2e/e2e.spec.ts +1 -1
  3. package/lib/ApiExplorer.d.ts +4 -43
  4. package/lib/ApiExplorer.js +71 -93
  5. package/lib/ApiExplorer.js.map +1 -1
  6. package/lib/App.d.ts +1 -0
  7. package/lib/App.js +29 -0
  8. package/lib/App.js.map +1 -0
  9. package/lib/StandaloneApiExplorer.js +36 -53
  10. package/lib/StandaloneApiExplorer.js.map +1 -1
  11. package/lib/components/Banner/Banner.d.ts +8 -0
  12. package/lib/components/Banner/Banner.js +70 -0
  13. package/lib/components/Banner/Banner.js.map +1 -0
  14. package/lib/components/Banner/index.d.ts +1 -0
  15. package/lib/components/Banner/index.js +14 -0
  16. package/lib/components/Banner/index.js.map +1 -0
  17. package/lib/components/DocMarkdown/DocMarkdown.js +5 -5
  18. package/lib/components/DocMarkdown/DocMarkdown.js.map +1 -1
  19. package/lib/components/DocSDKs/DocSDKs.js +3 -3
  20. package/lib/components/DocSDKs/DocSDKs.js.map +1 -1
  21. package/lib/components/DocSdkUsage/DocSdkUsage.js +3 -6
  22. package/lib/components/DocSdkUsage/DocSdkUsage.js.map +1 -1
  23. package/lib/components/DocSource/DocSource.js +5 -7
  24. package/lib/components/DocSource/DocSource.js.map +1 -1
  25. package/lib/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/SomethingWentWrongGraphic.d.ts +1 -1
  26. package/lib/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/SomethingWentWrongGraphic.js +152 -8
  27. package/lib/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/SomethingWentWrongGraphic.js.map +1 -1
  28. package/lib/components/ExploreType/ExploreType.js +3 -5
  29. package/lib/components/ExploreType/ExploreType.js.map +1 -1
  30. package/lib/components/Header/Header.d.ts +2 -5
  31. package/lib/components/Header/Header.js +1 -5
  32. package/lib/components/Header/Header.js.map +1 -1
  33. package/lib/components/SelectorContainer/ApiSpecSelector.d.ts +2 -5
  34. package/lib/components/SelectorContainer/ApiSpecSelector.js +5 -5
  35. package/lib/components/SelectorContainer/ApiSpecSelector.js.map +1 -1
  36. package/lib/components/SelectorContainer/SdkLanguageSelector.js +1 -1
  37. package/lib/components/SelectorContainer/SdkLanguageSelector.js.map +1 -1
  38. package/lib/components/SelectorContainer/SelectorContainer.d.ts +2 -5
  39. package/lib/components/SelectorContainer/SelectorContainer.js +3 -7
  40. package/lib/components/SelectorContainer/SelectorContainer.js.map +1 -1
  41. package/lib/components/SideNav/SideNav.d.ts +2 -5
  42. package/lib/components/SideNav/SideNav.js +1 -1
  43. package/lib/components/SideNav/SideNav.js.map +1 -1
  44. package/lib/components/common/Loader.d.ts +1 -1
  45. package/lib/components/common/Loader.js.map +1 -1
  46. package/lib/components/index.d.ts +1 -0
  47. package/lib/components/index.js +8 -0
  48. package/lib/components/index.js.map +1 -1
  49. package/lib/esm/ApiExplorer.js +71 -92
  50. package/lib/esm/ApiExplorer.js.map +1 -1
  51. package/lib/esm/App.js +19 -0
  52. package/lib/esm/App.js.map +1 -0
  53. package/lib/esm/StandaloneApiExplorer.js +36 -53
  54. package/lib/esm/StandaloneApiExplorer.js.map +1 -1
  55. package/lib/esm/components/Banner/Banner.js +54 -0
  56. package/lib/esm/components/Banner/Banner.js.map +1 -0
  57. package/lib/esm/components/Banner/index.js +2 -0
  58. package/lib/esm/{test-utils/envAdaptor.js.map → components/Banner/index.js.map} +1 -1
  59. package/lib/esm/components/DocMarkdown/DocMarkdown.js +3 -3
  60. package/lib/esm/components/DocMarkdown/DocMarkdown.js.map +1 -1
  61. package/lib/esm/components/DocSDKs/DocSDKs.js +2 -2
  62. package/lib/esm/components/DocSDKs/DocSDKs.js.map +1 -1
  63. package/lib/esm/components/DocSdkUsage/DocSdkUsage.js +5 -7
  64. package/lib/esm/components/DocSdkUsage/DocSdkUsage.js.map +1 -1
  65. package/lib/esm/components/DocSource/DocSource.js +4 -5
  66. package/lib/esm/components/DocSource/DocSource.js.map +1 -1
  67. package/lib/esm/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/SomethingWentWrongGraphic.js +153 -6
  68. package/lib/esm/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/SomethingWentWrongGraphic.js.map +1 -1
  69. package/lib/esm/components/ExploreType/ExploreType.js +3 -4
  70. package/lib/esm/components/ExploreType/ExploreType.js.map +1 -1
  71. package/lib/esm/components/Header/Header.js +1 -5
  72. package/lib/esm/components/Header/Header.js.map +1 -1
  73. package/lib/esm/components/SelectorContainer/ApiSpecSelector.js +4 -5
  74. package/lib/esm/components/SelectorContainer/ApiSpecSelector.js.map +1 -1
  75. package/lib/esm/components/SelectorContainer/SdkLanguageSelector.js +2 -2
  76. package/lib/esm/components/SelectorContainer/SdkLanguageSelector.js.map +1 -1
  77. package/lib/esm/components/SelectorContainer/SelectorContainer.js +3 -7
  78. package/lib/esm/components/SelectorContainer/SelectorContainer.js.map +1 -1
  79. package/lib/esm/components/SideNav/SideNav.js +2 -2
  80. package/lib/esm/components/SideNav/SideNav.js.map +1 -1
  81. package/lib/esm/components/common/Loader.js.map +1 -1
  82. package/lib/esm/components/index.js +1 -0
  83. package/lib/esm/components/index.js.map +1 -1
  84. package/lib/esm/index.js +5 -18
  85. package/lib/esm/index.js.map +1 -1
  86. package/lib/esm/routes/AppRouter.js +3 -7
  87. package/lib/esm/routes/AppRouter.js.map +1 -1
  88. package/lib/esm/scenes/DiffScene/DiffScene.js +43 -99
  89. package/lib/esm/scenes/DiffScene/DiffScene.js.map +1 -1
  90. package/lib/esm/scenes/DiffScene/DocDiff/DiffItem.js +9 -13
  91. package/lib/esm/scenes/DiffScene/DocDiff/DiffItem.js.map +1 -1
  92. package/lib/esm/scenes/DiffScene/DocDiff/DocDiff.js +2 -2
  93. package/lib/esm/scenes/DiffScene/DocDiff/DocDiff.js.map +1 -1
  94. package/lib/esm/scenes/MethodScene/MethodScene.js +12 -15
  95. package/lib/esm/scenes/MethodScene/MethodScene.js.map +1 -1
  96. package/lib/esm/state/index.js +2 -0
  97. package/lib/esm/state/index.js.map +1 -1
  98. package/lib/esm/state/lodes/index.js +3 -0
  99. package/lib/{test-utils/envAdaptor.js.map → esm/state/lodes/index.js.map} +1 -1
  100. package/lib/esm/state/lodes/sagas.js +25 -0
  101. package/lib/esm/state/lodes/sagas.js.map +1 -0
  102. package/lib/esm/state/lodes/selectors.js +5 -0
  103. package/lib/esm/state/lodes/selectors.js.map +1 -0
  104. package/lib/esm/state/lodes/slice.js +30 -0
  105. package/lib/esm/state/lodes/slice.js.map +1 -0
  106. package/lib/esm/state/settings/sagas.js +28 -16
  107. package/lib/esm/state/settings/sagas.js.map +1 -1
  108. package/lib/esm/state/settings/selectors.js +5 -5
  109. package/lib/esm/state/settings/selectors.js.map +1 -1
  110. package/lib/esm/state/settings/slice.js +8 -8
  111. package/lib/esm/state/settings/slice.js.map +1 -1
  112. package/lib/esm/state/specs/index.js +3 -0
  113. package/lib/esm/state/specs/index.js.map +1 -0
  114. package/lib/esm/state/specs/sagas.js +58 -0
  115. package/lib/esm/state/specs/sagas.js.map +1 -0
  116. package/lib/esm/state/specs/selectors.js +8 -0
  117. package/lib/esm/state/specs/selectors.js.map +1 -0
  118. package/lib/esm/state/specs/slice.js +55 -0
  119. package/lib/esm/state/specs/slice.js.map +1 -0
  120. package/lib/esm/state/store.js +57 -3
  121. package/lib/esm/state/store.js.map +1 -1
  122. package/lib/esm/test-utils/index.js +1 -2
  123. package/lib/esm/test-utils/index.js.map +1 -1
  124. package/lib/esm/test-utils/lodes.js +12 -0
  125. package/lib/esm/test-utils/lodes.js.map +1 -0
  126. package/lib/esm/test-utils/redux.js +16 -9
  127. package/lib/esm/test-utils/redux.js.map +1 -1
  128. package/lib/esm/utils/adaptorUtils.js +101 -0
  129. package/lib/esm/utils/adaptorUtils.js.map +1 -0
  130. package/lib/esm/utils/apixAdaptor.js +48 -0
  131. package/lib/esm/utils/apixAdaptor.js.map +1 -0
  132. package/lib/esm/utils/index.js +3 -2
  133. package/lib/esm/utils/index.js.map +1 -1
  134. package/lib/esm/utils/lodeUtils.js +3 -7
  135. package/lib/esm/utils/lodeUtils.js.map +1 -1
  136. package/lib/esm/utils/path.js +27 -2
  137. package/lib/esm/utils/path.js.map +1 -1
  138. package/lib/index.d.ts +5 -1
  139. package/lib/index.js +59 -17
  140. package/lib/index.js.map +1 -1
  141. package/lib/routes/AppRouter.d.ts +1 -5
  142. package/lib/routes/AppRouter.js +3 -7
  143. package/lib/routes/AppRouter.js.map +1 -1
  144. package/lib/scenes/DiffScene/DiffScene.js +45 -100
  145. package/lib/scenes/DiffScene/DiffScene.js.map +1 -1
  146. package/lib/scenes/DiffScene/DocDiff/DiffItem.js +9 -13
  147. package/lib/scenes/DiffScene/DocDiff/DiffItem.js.map +1 -1
  148. package/lib/scenes/DiffScene/DocDiff/DocDiff.js +2 -2
  149. package/lib/scenes/DiffScene/DocDiff/DocDiff.js.map +1 -1
  150. package/lib/scenes/MethodScene/MethodScene.d.ts +0 -4
  151. package/lib/scenes/MethodScene/MethodScene.js +11 -13
  152. package/lib/scenes/MethodScene/MethodScene.js.map +1 -1
  153. package/lib/state/index.d.ts +2 -0
  154. package/lib/state/index.js +26 -0
  155. package/lib/state/index.js.map +1 -1
  156. package/lib/state/lodes/index.d.ts +2 -0
  157. package/lib/state/lodes/index.js +32 -0
  158. package/lib/state/lodes/index.js.map +1 -0
  159. package/lib/state/lodes/sagas.d.ts +1 -0
  160. package/lib/state/lodes/sagas.js +34 -0
  161. package/lib/state/lodes/sagas.js.map +1 -0
  162. package/lib/state/lodes/selectors.d.ts +3 -0
  163. package/lib/state/lodes/selectors.js +17 -0
  164. package/lib/state/lodes/selectors.js.map +1 -0
  165. package/lib/state/lodes/slice.d.ts +29 -0
  166. package/lib/state/lodes/slice.js +45 -0
  167. package/lib/state/lodes/slice.js.map +1 -0
  168. package/lib/state/settings/sagas.js +28 -15
  169. package/lib/state/settings/sagas.js.map +1 -1
  170. package/lib/state/settings/selectors.d.ts +1 -1
  171. package/lib/state/settings/selectors.js +5 -5
  172. package/lib/state/settings/selectors.js.map +1 -1
  173. package/lib/state/settings/slice.d.ts +14 -14
  174. package/lib/state/settings/slice.js +13 -13
  175. package/lib/state/settings/slice.js.map +1 -1
  176. package/lib/state/specs/index.d.ts +2 -0
  177. package/lib/state/specs/index.js +32 -0
  178. package/lib/state/specs/index.js.map +1 -0
  179. package/lib/state/specs/sagas.d.ts +1 -0
  180. package/lib/state/specs/sagas.js +67 -0
  181. package/lib/state/specs/sagas.js.map +1 -0
  182. package/lib/state/specs/selectors.d.ts +4 -0
  183. package/lib/state/specs/selectors.js +20 -0
  184. package/lib/state/specs/selectors.js.map +1 -0
  185. package/lib/state/specs/slice.d.ts +49 -0
  186. package/lib/state/specs/slice.js +70 -0
  187. package/lib/state/specs/slice.js.map +1 -0
  188. package/lib/state/store.d.ts +6 -0
  189. package/lib/state/store.js +60 -2
  190. package/lib/state/store.js.map +1 -1
  191. package/lib/test-data/declarations.d.ts +2 -0
  192. package/lib/test-data/declarations.js +24 -0
  193. package/lib/test-data/declarations.js.map +1 -0
  194. package/lib/test-data/examples.d.ts +2 -0
  195. package/lib/test-data/index.d.ts +3 -0
  196. package/lib/test-data/index.js +29 -36
  197. package/lib/test-data/index.js.map +1 -1
  198. package/lib/test-data/specs.d.ts +10 -0
  199. package/lib/test-data/specs.js +6 -6
  200. package/lib/test-data/specs.js.map +1 -1
  201. package/lib/test-utils/index.d.ts +1 -2
  202. package/lib/test-utils/index.js +12 -28
  203. package/lib/test-utils/index.js.map +1 -1
  204. package/lib/test-utils/lodes.d.ts +4 -0
  205. package/lib/test-utils/lodes.js +23 -0
  206. package/lib/test-utils/lodes.js.map +1 -0
  207. package/lib/test-utils/redux.d.ts +4 -1
  208. package/lib/test-utils/redux.js +18 -9
  209. package/lib/test-utils/redux.js.map +1 -1
  210. package/lib/utils/adaptorUtils.d.ts +30 -0
  211. package/lib/utils/adaptorUtils.js +124 -0
  212. package/lib/utils/adaptorUtils.js.map +1 -0
  213. package/lib/utils/apixAdaptor.d.ts +15 -0
  214. package/lib/utils/apixAdaptor.js +67 -0
  215. package/lib/utils/apixAdaptor.js.map +1 -0
  216. package/lib/utils/index.d.ts +3 -2
  217. package/lib/utils/index.js +30 -39
  218. package/lib/utils/index.js.map +1 -1
  219. package/lib/utils/lodeUtils.d.ts +2 -2
  220. package/lib/utils/lodeUtils.js +3 -7
  221. package/lib/utils/lodeUtils.js.map +1 -1
  222. package/lib/utils/path.d.ts +3 -0
  223. package/lib/utils/path.js +32 -2
  224. package/lib/utils/path.js.map +1 -1
  225. package/package.json +11 -10
  226. package/public/Looker.3.1.json +1343 -412
  227. package/public/Looker.4.0.json +3305 -661
  228. package/src/ApiExplorer.tsx +114 -144
  229. package/src/{index.tsx → App.tsx} +0 -0
  230. package/src/StandaloneApiExplorer.tsx +38 -61
  231. package/src/components/Banner/Banner.spec.tsx +99 -0
  232. package/src/components/Banner/Banner.tsx +87 -0
  233. package/src/{reducers → components/Banner}/index.ts +1 -1
  234. package/src/components/DocMarkdown/DocMarkdown.tsx +3 -3
  235. package/src/components/DocSDKs/DocSDKs.tsx +4 -5
  236. package/src/components/DocSdkUsage/DocSdkUsage.spec.tsx +2 -2
  237. package/src/components/DocSdkUsage/DocSdkUsage.tsx +5 -5
  238. package/src/components/DocSource/DocSource.tsx +4 -3
  239. package/src/components/ErrorBoundary/components/SomethingWentWrong/SomethingWentWrong.spec.tsx +1 -1
  240. package/src/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/SomethingWentWrongGraphic.tsx +170 -6
  241. package/src/components/ExploreType/ExploreType.spec.tsx +0 -23
  242. package/src/components/ExploreType/ExploreType.tsx +5 -6
  243. package/src/components/ExploreType/exploreUtils.spec.tsx +1 -1
  244. package/src/components/Header/Header.spec.tsx +9 -30
  245. package/src/components/Header/Header.tsx +3 -10
  246. package/src/components/SelectorContainer/ApiSpecSelector.spec.tsx +31 -44
  247. package/src/components/SelectorContainer/ApiSpecSelector.tsx +6 -12
  248. package/src/components/SelectorContainer/SdkLanguageSelector.spec.tsx +3 -5
  249. package/src/components/SelectorContainer/SdkLanguageSelector.tsx +2 -2
  250. package/src/components/SelectorContainer/SelectorContainer.spec.tsx +7 -26
  251. package/src/components/SelectorContainer/SelectorContainer.tsx +4 -10
  252. package/src/components/SideNav/SideNav.spec.tsx +12 -45
  253. package/src/components/SideNav/SideNav.tsx +3 -9
  254. package/src/components/common/Loader.tsx +1 -1
  255. package/src/components/index.ts +1 -0
  256. package/src/{reducers/spec/index.ts → index.ts} +4 -2
  257. package/src/routes/AppRouter.tsx +26 -37
  258. package/src/scenes/DiffScene/DiffScene.tsx +47 -84
  259. package/src/scenes/DiffScene/DocDiff/DiffItem.spec.tsx +9 -16
  260. package/src/scenes/DiffScene/DocDiff/DiffItem.tsx +11 -12
  261. package/src/scenes/DiffScene/DocDiff/DocDiff.tsx +2 -2
  262. package/src/scenes/MethodScene/MethodScene.tsx +12 -18
  263. package/src/state/index.ts +2 -0
  264. package/src/{context → state/lodes}/index.ts +2 -1
  265. package/src/state/lodes/sagas.spec.ts +92 -0
  266. package/src/state/lodes/sagas.ts +51 -0
  267. package/src/state/lodes/selectors.spec.ts +42 -0
  268. package/src/{reducers/spec/actions.spec.ts → state/lodes/selectors.ts} +9 -11
  269. package/src/{test-utils/render_with_lode.tsx → state/lodes/slice.ts} +37 -37
  270. package/src/state/settings/sagas.spec.ts +25 -21
  271. package/src/state/settings/sagas.ts +16 -16
  272. package/src/state/settings/selectors.spec.ts +1 -5
  273. package/src/state/settings/selectors.ts +5 -5
  274. package/src/state/settings/slice.ts +12 -7
  275. package/src/{context/lode → state/specs}/index.ts +2 -1
  276. package/src/state/specs/sagas.spec.ts +135 -0
  277. package/src/state/specs/sagas.ts +81 -0
  278. package/src/{test-utils/envAdaptor.ts → state/specs/selectors.ts} +10 -4
  279. package/src/state/specs/slice.ts +109 -0
  280. package/src/state/store.ts +65 -2
  281. package/src/{context/lode/LodeContext.ts → test-data/declarations.ts} +17 -14
  282. package/src/test-data/index.ts +2 -8
  283. package/src/test-data/specs.ts +6 -6
  284. package/src/test-utils/index.ts +1 -5
  285. package/src/{reducers/spec/reducer.spec.ts → test-utils/lodes.tsx} +16 -19
  286. package/src/test-utils/redux.tsx +31 -8
  287. package/src/utils/adaptorUtils.ts +181 -0
  288. package/src/utils/apixAdaptor.ts +72 -0
  289. package/src/utils/index.ts +3 -8
  290. package/src/utils/lodeUtils.ts +4 -6
  291. package/src/utils/path.ts +25 -2
  292. package/webpack.dev.config.js +3 -0
  293. package/webpack.prod.config.js +4 -0
  294. package/lib/context/index.d.ts +0 -1
  295. package/lib/context/index.js +0 -20
  296. package/lib/context/index.js.map +0 -1
  297. package/lib/context/lode/LodeContext.d.ts +0 -9
  298. package/lib/context/lode/LodeContext.js +0 -21
  299. package/lib/context/lode/LodeContext.js.map +0 -1
  300. package/lib/context/lode/index.d.ts +0 -1
  301. package/lib/context/lode/index.js +0 -20
  302. package/lib/context/lode/index.js.map +0 -1
  303. package/lib/esm/context/index.js +0 -2
  304. package/lib/esm/context/index.js.map +0 -1
  305. package/lib/esm/context/lode/LodeContext.js +0 -11
  306. package/lib/esm/context/lode/LodeContext.js.map +0 -1
  307. package/lib/esm/context/lode/index.js +0 -2
  308. package/lib/esm/context/lode/index.js.map +0 -1
  309. package/lib/esm/reducers/index.js +0 -2
  310. package/lib/esm/reducers/index.js.map +0 -1
  311. package/lib/esm/reducers/spec/actions.js +0 -19
  312. package/lib/esm/reducers/spec/actions.js.map +0 -1
  313. package/lib/esm/reducers/spec/index.js +0 -4
  314. package/lib/esm/reducers/spec/index.js.map +0 -1
  315. package/lib/esm/reducers/spec/reducer.js +0 -62
  316. package/lib/esm/reducers/spec/reducer.js.map +0 -1
  317. package/lib/esm/reducers/spec/utils.js +0 -74
  318. package/lib/esm/reducers/spec/utils.js.map +0 -1
  319. package/lib/esm/test-utils/envAdaptor.js +0 -5
  320. package/lib/esm/test-utils/render_with_lode.js +0 -19
  321. package/lib/esm/test-utils/render_with_lode.js.map +0 -1
  322. package/lib/esm/utils/envAdaptor.js +0 -84
  323. package/lib/esm/utils/envAdaptor.js.map +0 -1
  324. package/lib/reducers/index.d.ts +0 -1
  325. package/lib/reducers/index.js +0 -19
  326. package/lib/reducers/index.js.map +0 -1
  327. package/lib/reducers/spec/actions.d.ts +0 -20
  328. package/lib/reducers/spec/actions.js +0 -31
  329. package/lib/reducers/spec/actions.js.map +0 -1
  330. package/lib/reducers/spec/index.d.ts +0 -3
  331. package/lib/reducers/spec/index.js +0 -45
  332. package/lib/reducers/spec/index.js.map +0 -1
  333. package/lib/reducers/spec/reducer.d.ts +0 -7
  334. package/lib/reducers/spec/reducer.js +0 -73
  335. package/lib/reducers/spec/reducer.js.map +0 -1
  336. package/lib/reducers/spec/utils.d.ts +0 -7
  337. package/lib/reducers/spec/utils.js +0 -91
  338. package/lib/reducers/spec/utils.js.map +0 -1
  339. package/lib/test-utils/envAdaptor.d.ts +0 -2
  340. package/lib/test-utils/envAdaptor.js +0 -15
  341. package/lib/test-utils/render_with_lode.d.ts +0 -7
  342. package/lib/test-utils/render_with_lode.js +0 -36
  343. package/lib/test-utils/render_with_lode.js.map +0 -1
  344. package/lib/utils/envAdaptor.d.ts +0 -31
  345. package/lib/utils/envAdaptor.js +0 -106
  346. package/lib/utils/envAdaptor.js.map +0 -1
  347. package/src/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/somethingWentWrong.svg +0 -45
  348. package/src/reducers/spec/actions.ts +0 -62
  349. package/src/reducers/spec/reducer.ts +0 -69
  350. package/src/reducers/spec/utils.spec.ts +0 -138
  351. package/src/reducers/spec/utils.ts +0 -123
  352. package/src/utils/envAdaptor.spec.ts +0 -50
  353. package/src/utils/envAdaptor.ts +0 -147
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createTestStore = exports.renderWithRouterAndReduxProvider = exports.renderWithReduxProvider = exports.withReduxProvider = void 0;
6
+ exports.createTestStore = exports.preloadedState = exports.renderWithRouterAndReduxProvider = exports.renderWithReduxProvider = exports.withReduxProvider = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
@@ -13,11 +13,13 @@ var _componentsTestUtils = require("@looker/components-test-utils");
13
13
 
14
14
  var _redux = require("@looker/redux");
15
15
 
16
- var _state = require("../state");
16
+ var _extensionUtils = require("@looker/extension-utils");
17
+
18
+ var _runIt = require("@looker/run-it");
17
19
 
18
- var _settings = require("../state/settings");
20
+ var _state = require("../state");
19
21
 
20
- var _utils = require("../utils");
22
+ var _testData = require("../test-data");
21
23
 
22
24
  var _router = require("./router");
23
25
 
@@ -30,8 +32,8 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
30
32
  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; }
31
33
 
32
34
  var withReduxProvider = function withReduxProvider(consumers) {
33
- var store = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _state.store;
34
- (0, _utils.registerEnvAdaptor)(new _utils.StandaloneEnvAdaptor());
35
+ var store = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createTestStore();
36
+ (0, _extensionUtils.registerEnvAdaptor)(new _extensionUtils.BrowserAdaptor((0, _runIt.initRunItSdk)()));
35
37
  return _react.default.createElement(_reactRedux.Provider, {
36
38
  store: store
37
39
  }, consumers);
@@ -52,15 +54,22 @@ var renderWithRouterAndReduxProvider = function renderWithRouterAndReduxProvider
52
54
 
53
55
  exports.renderWithRouterAndReduxProvider = renderWithRouterAndReduxProvider;
54
56
  var preloadedState = {
55
- settings: _state.defaultSettingsState
57
+ settings: _state.defaultSettingsState,
58
+ lodes: _state.defaultLodesState,
59
+ specs: _state.defaultSpecsState
56
60
  };
61
+ exports.preloadedState = preloadedState;
57
62
 
58
63
  var createTestStore = overrides => (0, _redux.createStore)({
59
64
  preloadedState: {
60
- settings: _objectSpread(_objectSpread({}, preloadedState.settings), overrides === null || overrides === void 0 ? void 0 : overrides.settings)
65
+ settings: _objectSpread(_objectSpread({}, preloadedState.settings), overrides === null || overrides === void 0 ? void 0 : overrides.settings),
66
+ lodes: _objectSpread(_objectSpread({}, _state.defaultLodesState), overrides === null || overrides === void 0 ? void 0 : overrides.lodes),
67
+ specs: _objectSpread(_objectSpread({}, _testData.specState), overrides === null || overrides === void 0 ? void 0 : overrides.specs)
61
68
  },
62
69
  reducer: {
63
- settings: _settings.slice.reducer
70
+ settings: _state.settingsSlice.reducer,
71
+ lodes: _state.lodesSlice.reducer,
72
+ specs: _state.specsSlice.reducer
64
73
  }
65
74
  });
66
75
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/test-utils/redux.tsx"],"names":["withReduxProvider","consumers","store","defaultStore","StandaloneEnvAdaptor","renderWithReduxProvider","options","renderWithRouterAndReduxProvider","initialEntries","preloadedState","settings","defaultSettingsState","createTestStore","overrides","reducer","settingsSlice"],"mappings":";;;;;;;AA0BA;;AACA;;AAEA;;AAEA;;AAGA;;AACA;;AACA;;AACA;;;;;;;;;;AAEO,IAAMA,iBAAiB,GAAG,SAApBA,iBAAoB,CAC/BC,SAD+B,EAG5B;AAAA,MADHC,KACG,uEADuBC,YACvB;AACH,iCAAmB,IAAIC,2BAAJ,EAAnB;AACA,SAAO,6BAAC,oBAAD;AAAU,IAAA,KAAK,EAAEF;AAAjB,KAAyBD,SAAzB,CAAP;AACD,CANM;;;;AAQA,IAAMI,uBAAuB,GAAG,CACrCJ,SADqC,EAErCC,KAFqC,EAGrCI,OAHqC,KAIlC,0CAAgBN,iBAAiB,CAACC,SAAD,EAAYC,KAAZ,CAAjC,EAAqDI,OAArD,CAJE;;;;AAMA,IAAMC,gCAAgC,GAAG,SAAnCA,gCAAmC,CAC9CN,SAD8C;AAAA,MAE9CO,cAF8C,uEAEnB,CAAC,GAAD,CAFmB;AAAA,MAG9CN,KAH8C;AAAA,MAI9CI,OAJ8C;AAAA,SAM9C,8BAAiBN,iBAAiB,CAACC,SAAD,EAAYC,KAAZ,CAAlC,EAAsDM,cAAtD,EAAsEF,OAAtE,CAN8C;AAAA,CAAzC;;;AAQP,IAAMG,cAAyB,GAAG;AAChCC,EAAAA,QAAQ,EAAEC;AADsB,CAAlC;;AAQO,IAAMC,eAAe,GAAIC,SAAD,IAC7B,wBAAY;AACVJ,EAAAA,cAAc,EAAE;AACdC,IAAAA,QAAQ,kCACHD,cAAc,CAACC,QADZ,GAEHG,SAFG,aAEHA,SAFG,uBAEHA,SAAS,CAAEH,QAFR;AADM,GADN;AAOVI,EAAAA,OAAO,EAAE;AAAEJ,IAAAA,QAAQ,EAAEK,gBAAcD;AAA1B;AAPC,CAAZ,CADK","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\nimport type { ReactElement } from 'react'\nimport React from 'react'\nimport { Provider } from 'react-redux'\nimport type { Store } from 'redux'\nimport { renderWithTheme } from '@looker/components-test-utils'\nimport type { RenderOptions } from '@testing-library/react'\nimport { createStore } from '@looker/redux'\n\nimport type { RootState, SettingState } from '../state'\nimport { defaultSettingsState, store as defaultStore } from '../state'\nimport { slice as settingsSlice } from '../state/settings'\nimport { registerEnvAdaptor, StandaloneEnvAdaptor } from '../utils'\nimport { renderWithRouter } from './router'\n\nexport const withReduxProvider = (\n consumers: ReactElement<any>,\n store: Store<RootState> = defaultStore\n) => {\n registerEnvAdaptor(new StandaloneEnvAdaptor())\n return <Provider store={store}>{consumers}</Provider>\n}\n\nexport const renderWithReduxProvider = (\n consumers: ReactElement<any>,\n store?: Store<RootState>,\n options?: Omit<RenderOptions, 'queries'>\n) => renderWithTheme(withReduxProvider(consumers, store), options)\n\nexport const renderWithRouterAndReduxProvider = (\n consumers: ReactElement<any>,\n initialEntries: string[] = ['/'],\n store?: Store<RootState>,\n options?: Omit<RenderOptions, 'queries'>\n) =>\n renderWithRouter(withReduxProvider(consumers, store), initialEntries, options)\n\nconst preloadedState: RootState = {\n settings: defaultSettingsState,\n}\n\ntype DeepPartial<T> = {\n [P in keyof T]?: DeepPartial<T[P]>\n}\n\nexport const createTestStore = (overrides?: DeepPartial<RootState>) =>\n createStore({\n preloadedState: {\n settings: {\n ...preloadedState.settings,\n ...overrides?.settings,\n } as SettingState,\n },\n reducer: { settings: settingsSlice.reducer },\n })\n"],"file":"redux.js"}
1
+ {"version":3,"sources":["../../src/test-utils/redux.tsx"],"names":["withReduxProvider","consumers","store","createTestStore","BrowserAdaptor","renderWithReduxProvider","options","renderWithRouterAndReduxProvider","initialEntries","preloadedState","settings","defaultSettingsState","lodes","defaultLodesState","specs","defaultSpecsState","overrides","specState","reducer","settingsSlice","lodesSlice","specsSlice"],"mappings":";;;;;;;AA2BA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AAGA;;AAQA;;AACA;;;;;;;;;;AAEO,IAAMA,iBAAiB,GAAG,SAApBA,iBAAoB,CAC/BC,SAD+B,EAG5B;AAAA,MADHC,KACG,uEADuBC,eAAe,EACtC;AACH,0CAAmB,IAAIC,8BAAJ,CAAmB,0BAAnB,CAAnB;AACA,SAAO,6BAAC,oBAAD;AAAU,IAAA,KAAK,EAAEF;AAAjB,KAAyBD,SAAzB,CAAP;AACD,CANM;;;;AAQA,IAAMI,uBAAuB,GAAG,CACrCJ,SADqC,EAErCC,KAFqC,EAGrCI,OAHqC,KAIlC,0CAAgBN,iBAAiB,CAACC,SAAD,EAAYC,KAAZ,CAAjC,EAAqDI,OAArD,CAJE;;;;AAMA,IAAMC,gCAAgC,GAAG,SAAnCA,gCAAmC,CAC9CN,SAD8C;AAAA,MAE9CO,cAF8C,uEAEnB,CAAC,GAAD,CAFmB;AAAA,MAG9CN,KAH8C;AAAA,MAI9CI,OAJ8C;AAAA,SAM9C,8BAAiBN,iBAAiB,CAACC,SAAD,EAAYC,KAAZ,CAAlC,EAAsDM,cAAtD,EAAsEF,OAAtE,CAN8C;AAAA,CAAzC;;;AAQA,IAAMG,cAAyB,GAAG;AACvCC,EAAAA,QAAQ,EAAEC,2BAD6B;AAEvCC,EAAAA,KAAK,EAAEC,wBAFgC;AAGvCC,EAAAA,KAAK,EAAEC;AAHgC,CAAlC;;;AAUA,IAAMZ,eAAe,GAAIa,SAAD,IAC7B,wBAAY;AACVP,EAAAA,cAAc,EAAE;AACdC,IAAAA,QAAQ,kCACHD,cAAc,CAACC,QADZ,GAEHM,SAFG,aAEHA,SAFG,uBAEHA,SAAS,CAAEN,QAFR,CADM;AAKdE,IAAAA,KAAK,kCACAC,wBADA,GAEAG,SAFA,aAEAA,SAFA,uBAEAA,SAAS,CAAEJ,KAFX,CALS;AASdE,IAAAA,KAAK,kCACAG,mBADA,GAEAD,SAFA,aAEAA,SAFA,uBAEAA,SAAS,CAAEF,KAFX;AATS,GADN;AAeVI,EAAAA,OAAO,EAAE;AACPR,IAAAA,QAAQ,EAAES,qBAAcD,OADjB;AAEPN,IAAAA,KAAK,EAAEQ,kBAAWF,OAFX;AAGPJ,IAAAA,KAAK,EAAEO,kBAAWH;AAHX;AAfC,CAAZ,CADK","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 { ReactElement } from 'react'\nimport React from 'react'\nimport { Provider } from 'react-redux'\nimport type { Store } from 'redux'\nimport { renderWithTheme } from '@looker/components-test-utils'\nimport type { RenderOptions } from '@testing-library/react'\nimport { createStore } from '@looker/redux'\nimport { BrowserAdaptor, registerEnvAdaptor } from '@looker/extension-utils'\nimport { initRunItSdk } from '@looker/run-it'\n\nimport type { LodesState, RootState, SettingState, SpecState } from '../state'\nimport {\n settingsSlice,\n defaultLodesState,\n defaultSettingsState,\n lodesSlice,\n defaultSpecsState,\n specsSlice,\n} from '../state'\nimport { specState } from '../test-data'\nimport { renderWithRouter } from './router'\n\nexport const withReduxProvider = (\n consumers: ReactElement<any>,\n store: Store<RootState> = createTestStore()\n) => {\n registerEnvAdaptor(new BrowserAdaptor(initRunItSdk()))\n return <Provider store={store}>{consumers}</Provider>\n}\n\nexport const renderWithReduxProvider = (\n consumers: ReactElement<any>,\n store?: Store<RootState>,\n options?: Omit<RenderOptions, 'queries'>\n) => renderWithTheme(withReduxProvider(consumers, store), options)\n\nexport const renderWithRouterAndReduxProvider = (\n consumers: ReactElement<any>,\n initialEntries: string[] = ['/'],\n store?: Store<RootState>,\n options?: Omit<RenderOptions, 'queries'>\n) =>\n renderWithRouter(withReduxProvider(consumers, store), initialEntries, options)\n\nexport const preloadedState: RootState = {\n settings: defaultSettingsState,\n lodes: defaultLodesState,\n specs: defaultSpecsState,\n}\n\ntype DeepPartial<T> = {\n [P in keyof T]?: DeepPartial<T[P]>\n}\n\nexport const createTestStore = (overrides?: DeepPartial<RootState>) =>\n createStore({\n preloadedState: {\n settings: {\n ...preloadedState.settings,\n ...overrides?.settings,\n } as SettingState,\n lodes: {\n ...defaultLodesState,\n ...overrides?.lodes,\n } as LodesState,\n specs: {\n ...specState,\n ...overrides?.specs,\n } as SpecState,\n },\n reducer: {\n settings: settingsSlice.reducer,\n lodes: lodesSlice.reducer,\n specs: specsSlice.reducer,\n },\n })\n"],"file":"redux.js"}
@@ -0,0 +1,30 @@
1
+ import type { ILookerVersions, SpecItem, SpecList } from '@looker/sdk-codegen';
2
+ import { ApiModel } from '@looker/sdk-codegen';
3
+ import type { RunItValues } from '@looker/run-it';
4
+ export declare type StorageLocation = 'session' | 'local';
5
+ export interface IStorageValue {
6
+ location: StorageLocation;
7
+ value: string;
8
+ }
9
+ export declare type ApiSpecFetcher = (version: string, name: string) => Promise<string | RunItValues>;
10
+ export declare type ParsedSpec = ApiModel | undefined;
11
+ export interface RunItConfigurator {
12
+ getStorage: (key: string, defaultValue?: string) => IStorageValue;
13
+ setStorage(key: string, value: string, location: 'local' | 'session'): string;
14
+ removeStorage(key: string): void;
15
+ }
16
+ export interface ILoadedSpecs {
17
+ baseUrl: string;
18
+ webUrl: string;
19
+ headless: boolean;
20
+ specs: SpecList;
21
+ fetchResult: string;
22
+ }
23
+ export interface IAPIXConfig extends ILookerVersions {
24
+ headless?: boolean;
25
+ }
26
+ export declare const fullify: (uri: string, baseUrl: string) => string;
27
+ export declare const funFetch: (version: string, name: string) => Promise<string>;
28
+ export declare const specUrlFetch: (url: string) => Promise<ParsedSpec>;
29
+ export declare const sdkSpecFetch: (spec: SpecItem, fetcher: ApiSpecFetcher) => Promise<ParsedSpec>;
30
+ export declare const fallbackFetch: (spec: SpecItem, fetcher: ApiSpecFetcher) => Promise<ParsedSpec>;
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.fallbackFetch = exports.sdkSpecFetch = exports.specUrlFetch = exports.funFetch = exports.fullify = void 0;
7
+
8
+ var _sdkCodegen = require("@looker/sdk-codegen");
9
+
10
+ var _sdk = require("@looker/sdk");
11
+
12
+ var _extensionUtils = require("@looker/extension-utils");
13
+
14
+ var _runIt = require("@looker/run-it");
15
+
16
+ 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); } }
17
+
18
+ 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); }); }; }
19
+
20
+ var makeApi = content => {
21
+ var json;
22
+
23
+ if (typeof content === 'string') {
24
+ json = JSON.parse(content);
25
+ } else {
26
+ json = content;
27
+ }
28
+
29
+ json = (0, _sdkCodegen.upgradeSpecObject)(json);
30
+ return _sdkCodegen.ApiModel.fromJson(json);
31
+ };
32
+
33
+ var fullify = (uri, baseUrl) => {
34
+ if (uri.match(/^https?:/)) {
35
+ return uri;
36
+ }
37
+
38
+ var url = new URL(uri, baseUrl);
39
+ return url.toString();
40
+ };
41
+
42
+ exports.fullify = fullify;
43
+
44
+ var apiSpecBits = spec => {
45
+ var _spec$specURL;
46
+
47
+ return ((_spec$specURL = spec.specURL) === null || _spec$specURL === void 0 ? void 0 : _spec$specURL.split('/').slice(-2)) || [];
48
+ };
49
+
50
+ var funFetch = (version, name) => {
51
+ var sdk = (0, _extensionUtils.getEnvAdaptor)().sdk;
52
+ return sdk.ok((0, _sdk.api_spec)(sdk, version, name));
53
+ };
54
+
55
+ exports.funFetch = funFetch;
56
+
57
+ var specUrlFetch = function () {
58
+ var _ref = _asyncToGenerator(function* (url) {
59
+ try {
60
+ var content = yield (0, _runIt.getUrl)(url);
61
+ return makeApi(content);
62
+ } catch (error) {
63
+ return undefined;
64
+ }
65
+ });
66
+
67
+ return function specUrlFetch(_x) {
68
+ return _ref.apply(this, arguments);
69
+ };
70
+ }();
71
+
72
+ exports.specUrlFetch = specUrlFetch;
73
+
74
+ var sdkSpecFetch = function () {
75
+ var _ref2 = _asyncToGenerator(function* (spec, fetcher) {
76
+ if (spec.api) return spec.api;
77
+ if (!spec.specURL) return undefined;
78
+ var [version, name] = apiSpecBits(spec);
79
+ var content = yield fetcher(version, name);
80
+ return makeApi(content);
81
+ });
82
+
83
+ return function sdkSpecFetch(_x2, _x3) {
84
+ return _ref2.apply(this, arguments);
85
+ };
86
+ }();
87
+
88
+ exports.sdkSpecFetch = sdkSpecFetch;
89
+
90
+ var fallbackFetch = function () {
91
+ var _ref3 = _asyncToGenerator(function* (spec, fetcher) {
92
+ if (spec.api) return spec.api;
93
+ if (!spec.specURL) return undefined;
94
+ var api;
95
+
96
+ try {
97
+ api = yield specUrlFetch(spec.specURL);
98
+ } catch (error) {
99
+ console.error({
100
+ error
101
+ });
102
+ }
103
+
104
+ if (!api) {
105
+ var sdk = (0, _extensionUtils.getEnvAdaptor)().sdk;
106
+ var authed = sdk.authSession.isAuthenticated();
107
+
108
+ if (!authed) {
109
+ yield sdk.authSession.login();
110
+ }
111
+
112
+ api = yield sdkSpecFetch(spec, fetcher);
113
+ }
114
+
115
+ return api;
116
+ });
117
+
118
+ return function fallbackFetch(_x4, _x5) {
119
+ return _ref3.apply(this, arguments);
120
+ };
121
+ }();
122
+
123
+ exports.fallbackFetch = fallbackFetch;
124
+ //# sourceMappingURL=adaptorUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/adaptorUtils.ts"],"names":["makeApi","content","json","JSON","parse","ApiModel","fromJson","fullify","uri","baseUrl","match","url","URL","toString","apiSpecBits","spec","specURL","split","slice","funFetch","version","name","sdk","ok","specUrlFetch","error","undefined","sdkSpecFetch","fetcher","api","fallbackFetch","console","authed","authSession","isAuthenticated","login"],"mappings":";;;;;;;AA2BA;;AACA;;AACA;;AAEA;;;;;;AAmDA,IAAMA,OAAO,GAAIC,OAAD,IAAmC;AACjD,MAAIC,IAAJ;;AACA,MAAI,OAAOD,OAAP,KAAmB,QAAvB,EAAiC;AAC/BC,IAAAA,IAAI,GAAGC,IAAI,CAACC,KAAL,CAAWH,OAAX,CAAP;AACD,GAFD,MAEO;AACLC,IAAAA,IAAI,GAAGD,OAAP;AACD;;AACDC,EAAAA,IAAI,GAAG,mCAAkBA,IAAlB,CAAP;AACA,SAAOG,qBAASC,QAAT,CAAkBJ,IAAlB,CAAP;AACD,CATD;;AAgBO,IAAMK,OAAO,GAAG,CAACC,GAAD,EAAcC,OAAd,KAA0C;AAC/D,MAAID,GAAG,CAACE,KAAJ,CAAU,UAAV,CAAJ,EAA2B;AACzB,WAAOF,GAAP;AACD;;AACD,MAAMG,GAAG,GAAG,IAAIC,GAAJ,CAAQJ,GAAR,EAAaC,OAAb,CAAZ;AACA,SAAOE,GAAG,CAACE,QAAJ,EAAP;AACD,CANM;;;;AAWP,IAAMC,WAAW,GAAIC,IAAD;AAAA;;AAAA,SAClB,kBAAAA,IAAI,CAACC,OAAL,gEAAcC,KAAd,CAAoB,GAApB,EAAyBC,KAAzB,CAA+B,CAAC,CAAhC,MAAsC,EADpB;AAAA,CAApB;;AAQO,IAAMC,QAAQ,GAAG,CAACC,OAAD,EAAkBC,IAAlB,KAAoD;AAC1E,MAAMC,GAAG,GAAG,qCAAgBA,GAA5B;AACA,SAAOA,GAAG,CAACC,EAAJ,CAAO,mBAASD,GAAT,EAAcF,OAAd,EAAuBC,IAAvB,CAAP,CAAP;AACD,CAHM;;;;AASA,IAAMG,YAAY;AAAA,+BAAG,WAAOb,GAAP,EAA4C;AACtE,QAAI;AACF,UAAMV,OAAO,SAAS,mBAAOU,GAAP,CAAtB;AACA,aAAOX,OAAO,CAACC,OAAD,CAAd;AACD,KAHD,CAGE,OAAOwB,KAAP,EAAc;AACd,aAAOC,SAAP;AACD;AACF,GAPwB;;AAAA,kBAAZF,YAAY;AAAA;AAAA;AAAA,GAAlB;;;;AAiBA,IAAMG,YAAY;AAAA,gCAAG,WAC1BZ,IAD0B,EAE1Ba,OAF0B,EAGF;AACxB,QAAIb,IAAI,CAACc,GAAT,EAAc,OAAOd,IAAI,CAACc,GAAZ;AACd,QAAI,CAACd,IAAI,CAACC,OAAV,EAAmB,OAAOU,SAAP;AACnB,QAAM,CAACN,OAAD,EAAUC,IAAV,IAAkBP,WAAW,CAACC,IAAD,CAAnC;AACA,QAAMd,OAAO,SAAS2B,OAAO,CAACR,OAAD,EAAUC,IAAV,CAA7B;AACA,WAAOrB,OAAO,CAACC,OAAD,CAAd;AACD,GATwB;;AAAA,kBAAZ0B,YAAY;AAAA;AAAA;AAAA,GAAlB;;;;AAgBA,IAAMG,aAAa;AAAA,gCAAG,WAC3Bf,IAD2B,EAE3Ba,OAF2B,EAGH;AACxB,QAAIb,IAAI,CAACc,GAAT,EAAc,OAAOd,IAAI,CAACc,GAAZ;AACd,QAAI,CAACd,IAAI,CAACC,OAAV,EAAmB,OAAOU,SAAP;AACnB,QAAIG,GAAJ;;AACA,QAAI;AACFA,MAAAA,GAAG,SAASL,YAAY,CAACT,IAAI,CAACC,OAAN,CAAxB;AACD,KAFD,CAEE,OAAOS,KAAP,EAAc;AACdM,MAAAA,OAAO,CAACN,KAAR,CAAc;AAAEA,QAAAA;AAAF,OAAd;AACD;;AACD,QAAI,CAACI,GAAL,EAAU;AACR,UAAMP,GAAG,GAAG,qCAAgBA,GAA5B;AACA,UAAMU,MAAM,GAAGV,GAAG,CAACW,WAAJ,CAAgBC,eAAhB,EAAf;;AACA,UAAI,CAACF,MAAL,EAAa;AACX,cAAMV,GAAG,CAACW,WAAJ,CAAgBE,KAAhB,EAAN;AACD;;AACDN,MAAAA,GAAG,SAASF,YAAY,CAACZ,IAAD,EAAOa,OAAP,CAAxB;AACD;;AACD,WAAOC,GAAP;AACD,GArByB;;AAAA,kBAAbC,aAAa;AAAA;AAAA;AAAA,GAAnB","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { ILookerVersions, SpecItem, SpecList } from '@looker/sdk-codegen'\nimport { ApiModel, upgradeSpecObject } from '@looker/sdk-codegen'\nimport { api_spec } from '@looker/sdk'\nimport { getEnvAdaptor } from '@looker/extension-utils'\nimport type { RunItValues } from '@looker/run-it'\nimport { getUrl } from '@looker/run-it'\n\nexport type StorageLocation = 'session' | 'local'\n\n/** Object returned from storage service */\nexport interface IStorageValue {\n /** Location of the stored object */\n location: StorageLocation\n /** Stored string representation of the value (usually JSON) */\n value: string\n}\n\n/** function to retrieve a spec based on version and name */\nexport type ApiSpecFetcher = (\n version: string,\n name: string\n) => Promise<string | RunItValues>\n\n/** Either the spec is parsed or it's undefined */\nexport type ParsedSpec = ApiModel | undefined\n\n/** service abstraction for extension and browser based usage */\nexport interface RunItConfigurator {\n getStorage: (key: string, defaultValue?: string) => IStorageValue\n setStorage(key: string, value: string, location: 'local' | 'session'): string\n removeStorage(key: string): void\n}\n\n/** Processed specifications */\nexport interface ILoadedSpecs {\n /** API server url */\n baseUrl: string\n /** Web server url */\n webUrl: string\n /** should APIX run headless? */\n headless: boolean\n /** loaded specifications */\n specs: SpecList\n /** communication errors */\n fetchResult: string\n}\n\n/** Extends versions payload with headless toggle for API Explorer */\nexport interface IAPIXConfig extends ILookerVersions {\n headless?: boolean\n}\n\n/**\n * Convert content into an ApiModel\n * @param content to convert\n */\nconst makeApi = (content: string | RunItValues) => {\n let json\n if (typeof content === 'string') {\n json = JSON.parse(content)\n } else {\n json = content\n }\n json = upgradeSpecObject(json)\n return ApiModel.fromJson(json)\n}\n\n/**\n * Ensure the URI is a full URL\n * @param uri possible relative path\n * @param baseUrl base url for qualifying full path\n */\nexport const fullify = (uri: string, baseUrl: string): string => {\n if (uri.match(/^https?:/)) {\n return uri\n }\n const url = new URL(uri, baseUrl)\n return url.toString()\n}\n/**\n * parse spec url into version and name for api_spec cccall\n * @param spec to parse\n */\nconst apiSpecBits = (spec: SpecItem): string[] =>\n spec.specURL?.split('/').slice(-2) || []\n\n/**\n * Use the functional api_spec fetch\n * @param version to retrieve\n * @param name to retrieve\n */\nexport const funFetch = (version: string, name: string): Promise<string> => {\n const sdk = getEnvAdaptor().sdk\n return sdk.ok(api_spec(sdk, version, name))\n}\n\n/**\n * try to fetch a spec by URL, trap any errors and return undefined\n * @param url to convert to an API spec\n */\nexport const specUrlFetch = async (url: string): Promise<ParsedSpec> => {\n try {\n const content = await getUrl(url)\n return makeApi(content)\n } catch (error) {\n return undefined\n }\n}\n\n/**\n * fetch and compile an API specification to an ApiModel if it's not already available\n *\n * **NOTE**: This uses Looker API 4.0 to fetch the specification so fetch works with CORS\n *\n * @param spec to fetch and compile\n * @param fetcher function to retrieve API spec content\n */\nexport const sdkSpecFetch = async (\n spec: SpecItem,\n fetcher: ApiSpecFetcher\n): Promise<ParsedSpec> => {\n if (spec.api) return spec.api\n if (!spec.specURL) return undefined\n const [version, name] = apiSpecBits(spec)\n const content = await fetcher(version, name)\n return makeApi(content)\n}\n\n/** Attempt to retrieve spec by URL, then api_spec SDK call\n *\n * @param spec to fetch\n * @param fetcher function to retrieve and parse spec\n */\nexport const fallbackFetch = async (\n spec: SpecItem,\n fetcher: ApiSpecFetcher\n): Promise<ParsedSpec> => {\n if (spec.api) return spec.api\n if (!spec.specURL) return undefined\n let api: ParsedSpec\n try {\n api = await specUrlFetch(spec.specURL)\n } catch (error) {\n console.error({ error })\n }\n if (!api) {\n const sdk = getEnvAdaptor().sdk\n const authed = sdk.authSession.isAuthenticated()\n if (!authed) {\n await sdk.authSession.login()\n }\n api = await sdkSpecFetch(spec, fetcher)\n }\n return api\n}\n"],"file":"adaptorUtils.js"}
@@ -0,0 +1,15 @@
1
+ import type { IEnvironmentAdaptor } from '@looker/extension-utils';
2
+ import { BrowserAdaptor } from '@looker/extension-utils';
3
+ import type { IAPIMethods } from '@looker/sdk-rtl';
4
+ import type { SpecItem, SpecList } from '@looker/sdk-codegen';
5
+ export interface IApixAdaptor extends IEnvironmentAdaptor {
6
+ fetchSpecList(versionsUrl?: string): Promise<SpecList>;
7
+ fetchSpec(spec: SpecItem): Promise<SpecItem>;
8
+ }
9
+ export declare const getApixAdaptor: () => IApixAdaptor;
10
+ export declare class ApixAdaptor extends BrowserAdaptor implements IApixAdaptor {
11
+ private readonly fallbackVersionsUrl;
12
+ constructor(sdk: IAPIMethods, fallbackVersionsUrl: string);
13
+ fetchSpecList(versionsUrl?: string): Promise<SpecList>;
14
+ fetchSpec(spec: SpecItem): Promise<SpecItem>;
15
+ }
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ApixAdaptor = exports.getApixAdaptor = void 0;
7
+
8
+ var _extensionUtils = require("@looker/extension-utils");
9
+
10
+ var _sdkCodegen = require("@looker/sdk-codegen");
11
+
12
+ var _runIt = require("@looker/run-it");
13
+
14
+ var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
15
+
16
+ var _adaptorUtils = require("./adaptorUtils");
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ 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); } }
21
+
22
+ 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); }); }; }
23
+
24
+ var getApixAdaptor = () => (0, _extensionUtils.getEnvAdaptor)();
25
+
26
+ exports.getApixAdaptor = getApixAdaptor;
27
+
28
+ class ApixAdaptor extends _extensionUtils.BrowserAdaptor {
29
+ constructor(sdk, fallbackVersionsUrl) {
30
+ super(sdk);
31
+ this.fallbackVersionsUrl = fallbackVersionsUrl;
32
+ }
33
+
34
+ fetchSpecList(versionsUrl) {
35
+ var _this = this;
36
+
37
+ return _asyncToGenerator(function* () {
38
+ var data = yield _this.localStorageGetItem(_runIt.RunItConfigKey);
39
+ var config = data ? JSON.parse(data) : _runIt.RunItNoConfig;
40
+ var url;
41
+
42
+ if (versionsUrl) {
43
+ url = versionsUrl;
44
+ } else {
45
+ url = config.base_url ? "".concat(config.base_url, "/versions") : "".concat(_this.fallbackVersionsUrl, "/versions.json");
46
+ }
47
+
48
+ var versions = yield _this.sdk.authSession.transport.rawRequest('GET', url);
49
+ var specs = yield (0, _sdkCodegen.getSpecsFromVersions)(JSON.parse(versions.body));
50
+ return specs;
51
+ })();
52
+ }
53
+
54
+ fetchSpec(spec) {
55
+ return _asyncToGenerator(function* () {
56
+ var _spec = (0, _cloneDeep.default)(spec);
57
+
58
+ _spec.specURL = (0, _adaptorUtils.fullify)(spec.specURL, origin);
59
+ _spec.api = yield (0, _adaptorUtils.fallbackFetch)(_spec, _adaptorUtils.funFetch);
60
+ return _spec;
61
+ })();
62
+ }
63
+
64
+ }
65
+
66
+ exports.ApixAdaptor = ApixAdaptor;
67
+ //# sourceMappingURL=apixAdaptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/apixAdaptor.ts"],"names":["getApixAdaptor","ApixAdaptor","BrowserAdaptor","constructor","sdk","fallbackVersionsUrl","fetchSpecList","versionsUrl","data","localStorageGetItem","RunItConfigKey","config","JSON","parse","RunItNoConfig","url","base_url","versions","authSession","transport","rawRequest","specs","body","fetchSpec","spec","_spec","specURL","origin","api","funFetch"],"mappings":";;;;;;;AA0BA;;AAGA;;AACA;;AACA;;AAEA;;;;;;;;AAOO,IAAMA,cAAc,GAAG,MAAM,oCAA7B;;;;AAEA,MAAMC,WAAN,SAA0BC,8BAA1B,CAAiE;AACtEC,EAAAA,WAAW,CAACC,GAAD,EAAoCC,mBAApC,EAAiE;AAC1E,UAAMD,GAAN;AAD0E,SAA7BC,mBAA6B,GAA7BA,mBAA6B;AAE3E;;AAEKC,EAAAA,aAAa,CAACC,WAAD,EAA0C;AAAA;;AAAA;AAC3D,UAAMC,IAAI,SAAS,KAAI,CAACC,mBAAL,CAAyBC,qBAAzB,CAAnB;AACA,UAAMC,MAAM,GAAGH,IAAI,GAAGI,IAAI,CAACC,KAAL,CAAWL,IAAX,CAAH,GAAsBM,oBAAzC;AACA,UAAIC,GAAJ;;AAEA,UAAIR,WAAJ,EAAiB;AACfQ,QAAAA,GAAG,GAAGR,WAAN;AACD,OAFD,MAEO;AACLQ,QAAAA,GAAG,GAAGJ,MAAM,CAACK,QAAP,aACCL,MAAM,CAACK,QADR,2BAEC,KAAI,CAACX,mBAFN,mBAAN;AAGD;;AAED,UAAMY,QAAQ,SAAS,KAAI,CAACb,GAAL,CAASc,WAAT,CAAqBC,SAArB,CAA+BC,UAA/B,CAA0C,KAA1C,EAAiDL,GAAjD,CAAvB;AACA,UAAMM,KAAK,SAAS,sCAAqBT,IAAI,CAACC,KAAL,CAAWI,QAAQ,CAACK,IAApB,CAArB,CAApB;AACA,aAAOD,KAAP;AAf2D;AAgB5D;;AAEKE,EAAAA,SAAS,CAACC,IAAD,EAAoC;AAAA;AACjD,UAAMC,KAAK,GAAG,wBAAUD,IAAV,CAAd;;AACAC,MAAAA,KAAK,CAACC,OAAN,GAAgB,2BAAQF,IAAI,CAACE,OAAb,EAAuBC,MAAvB,CAAhB;AACAF,MAAAA,KAAK,CAACG,GAAN,SAAkB,iCAAcH,KAAd,EAAqBI,sBAArB,CAAlB;AACA,aAAOJ,KAAP;AAJiD;AAKlD;;AA5BqE","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\nimport type { IEnvironmentAdaptor } from '@looker/extension-utils'\nimport { BrowserAdaptor, getEnvAdaptor } from '@looker/extension-utils'\nimport type { IAPIMethods } from '@looker/sdk-rtl'\nimport type { SpecItem, SpecList } from '@looker/sdk-codegen'\nimport { getSpecsFromVersions } from '@looker/sdk-codegen'\nimport { RunItConfigKey, RunItNoConfig } from '@looker/run-it'\nimport cloneDeep from 'lodash/cloneDeep'\n\nimport { fullify, fallbackFetch, funFetch } from './adaptorUtils'\n\nexport interface IApixAdaptor extends IEnvironmentAdaptor {\n fetchSpecList(versionsUrl?: string): Promise<SpecList>\n fetchSpec(spec: SpecItem): Promise<SpecItem>\n}\n\nexport const getApixAdaptor = () => getEnvAdaptor() as IApixAdaptor\n\nexport class ApixAdaptor extends BrowserAdaptor implements IApixAdaptor {\n constructor(sdk: IAPIMethods, private readonly fallbackVersionsUrl: string) {\n super(sdk)\n }\n\n async fetchSpecList(versionsUrl?: string): Promise<SpecList> {\n const data = await this.localStorageGetItem(RunItConfigKey)\n const config = data ? JSON.parse(data) : RunItNoConfig\n let url: string\n\n if (versionsUrl) {\n url = versionsUrl\n } else {\n url = config.base_url\n ? `${config.base_url}/versions`\n : `${this.fallbackVersionsUrl}/versions.json`\n }\n\n const versions = await this.sdk.authSession.transport.rawRequest('GET', url)\n const specs = await getSpecsFromVersions(JSON.parse(versions.body))\n return specs\n }\n\n async fetchSpec(spec: SpecItem): Promise<SpecItem> {\n const _spec = cloneDeep(spec)\n _spec.specURL = fullify(spec.specURL!, origin)\n _spec.api = await fallbackFetch(_spec, funFetch)\n return _spec\n }\n}\n"],"file":"apixAdaptor.js"}
@@ -1,5 +1,6 @@
1
1
  export { highlightHTML } from './highlight';
2
- export { buildPath, buildMethodPath, buildTypePath, diffPath, oAuthPath, } from './path';
2
+ export * from './path';
3
3
  export { getLoded } from './lodeUtils';
4
4
  export { useWindowSize } from './useWindowSize';
5
- export * from './envAdaptor';
5
+ export * from './apixAdaptor';
6
+ export * from './adaptorUtils';
@@ -5,11 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  var _exportNames = {
7
7
  highlightHTML: true,
8
- buildPath: true,
9
- buildMethodPath: true,
10
- buildTypePath: true,
11
- diffPath: true,
12
- oAuthPath: true,
13
8
  getLoded: true,
14
9
  useWindowSize: true
15
10
  };
@@ -19,36 +14,6 @@ Object.defineProperty(exports, "highlightHTML", {
19
14
  return _highlight.highlightHTML;
20
15
  }
21
16
  });
22
- Object.defineProperty(exports, "buildPath", {
23
- enumerable: true,
24
- get: function get() {
25
- return _path.buildPath;
26
- }
27
- });
28
- Object.defineProperty(exports, "buildMethodPath", {
29
- enumerable: true,
30
- get: function get() {
31
- return _path.buildMethodPath;
32
- }
33
- });
34
- Object.defineProperty(exports, "buildTypePath", {
35
- enumerable: true,
36
- get: function get() {
37
- return _path.buildTypePath;
38
- }
39
- });
40
- Object.defineProperty(exports, "diffPath", {
41
- enumerable: true,
42
- get: function get() {
43
- return _path.diffPath;
44
- }
45
- });
46
- Object.defineProperty(exports, "oAuthPath", {
47
- enumerable: true,
48
- get: function get() {
49
- return _path.oAuthPath;
50
- }
51
- });
52
17
  Object.defineProperty(exports, "getLoded", {
53
18
  enumerable: true,
54
19
  get: function get() {
@@ -66,20 +31,46 @@ var _highlight = require("./highlight");
66
31
 
67
32
  var _path = require("./path");
68
33
 
34
+ Object.keys(_path).forEach(function (key) {
35
+ if (key === "default" || key === "__esModule") return;
36
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
37
+ if (key in exports && exports[key] === _path[key]) return;
38
+ Object.defineProperty(exports, key, {
39
+ enumerable: true,
40
+ get: function get() {
41
+ return _path[key];
42
+ }
43
+ });
44
+ });
45
+
69
46
  var _lodeUtils = require("./lodeUtils");
70
47
 
71
48
  var _useWindowSize = require("./useWindowSize");
72
49
 
73
- var _envAdaptor = require("./envAdaptor");
50
+ var _apixAdaptor = require("./apixAdaptor");
51
+
52
+ Object.keys(_apixAdaptor).forEach(function (key) {
53
+ if (key === "default" || key === "__esModule") return;
54
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
55
+ if (key in exports && exports[key] === _apixAdaptor[key]) return;
56
+ Object.defineProperty(exports, key, {
57
+ enumerable: true,
58
+ get: function get() {
59
+ return _apixAdaptor[key];
60
+ }
61
+ });
62
+ });
63
+
64
+ var _adaptorUtils = require("./adaptorUtils");
74
65
 
75
- Object.keys(_envAdaptor).forEach(function (key) {
66
+ Object.keys(_adaptorUtils).forEach(function (key) {
76
67
  if (key === "default" || key === "__esModule") return;
77
68
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
78
- if (key in exports && exports[key] === _envAdaptor[key]) return;
69
+ if (key in exports && exports[key] === _adaptorUtils[key]) return;
79
70
  Object.defineProperty(exports, key, {
80
71
  enumerable: true,
81
72
  get: function get() {
82
- return _envAdaptor[key];
73
+ return _adaptorUtils[key];
83
74
  }
84
75
  });
85
76
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA;;AACA;;AAOA;;AACA;;AACA;;AAAA;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 */\nexport { highlightHTML } from './highlight'\nexport {\n buildPath,\n buildMethodPath,\n buildTypePath,\n diffPath,\n oAuthPath,\n} from './path'\nexport { getLoded } from './lodeUtils'\nexport { useWindowSize } from './useWindowSize'\nexport * from './envAdaptor'\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AACA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;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 */\nexport { highlightHTML } from './highlight'\nexport * from './path'\nexport { getLoded } from './lodeUtils'\nexport { useWindowSize } from './useWindowSize'\nexport * from './apixAdaptor'\nexport * from './adaptorUtils'\n"],"file":"index.js"}
@@ -1,8 +1,8 @@
1
1
  import type { IDeclarationMine, IExampleMine } from '@looker/sdk-codegen';
2
2
  export declare const apixFilesHost = "http://localhost:30000";
3
3
  interface FullLode {
4
- examples: IExampleMine;
4
+ examples?: IExampleMine;
5
5
  declarations?: IDeclarationMine;
6
6
  }
7
- export declare const getLoded: (examplesLodeUrl: string, declarationsLodeUrl?: string | undefined) => Promise<FullLode>;
7
+ export declare const getLoded: (examplesLodeUrl?: string | undefined, declarationsLodeUrl?: string | undefined) => Promise<FullLode>;
8
8
  export {};
@@ -33,7 +33,7 @@ var getLoded = function () {
33
33
  var _ref2 = _asyncToGenerator(function* (examplesLodeUrl, declarationsLodeUrl) {
34
34
  var examples = yield fetchLode("".concat(apixFilesHost, "/examplesIndex.json"));
35
35
 
36
- if (!examples) {
36
+ if (!examples && examplesLodeUrl) {
37
37
  examples = yield fetchLode(examplesLodeUrl);
38
38
  }
39
39
 
@@ -44,12 +44,8 @@ var getLoded = function () {
44
44
  }
45
45
 
46
46
  var lode = {
47
- examples: {
48
- commitHash: '',
49
- nuggets: {},
50
- remoteOrigin: '',
51
- summaries: {}
52
- }
47
+ examples: undefined,
48
+ declarations: undefined
53
49
  };
54
50
 
55
51
  if (examples) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/lodeUtils.ts"],"names":["apixFilesHost","fetchLode","lodeUrl","result","fetch","mode","text","error","getLoded","examplesLodeUrl","declarationsLodeUrl","examples","declarations","lode","commitHash","nuggets","remoteOrigin","summaries","JSON","parse"],"mappings":";;;;;;;;;;;AA4BO,IAAMA,aAAa,GAAG,wBAAtB;;;AAEP,IAAMC,SAAS;AAAA,+BAAG,WAAOC,OAAP,EAA2B;AAC3C,QAAI;AACF,UAAMC,MAAM,SAASC,KAAK,CAACF,OAAD,EAAU;AAAEG,QAAAA,IAAI,EAAE;AAAR,OAAV,CAA1B;AACA,aAAOF,MAAM,CAACG,IAAP,EAAP;AACD,KAHD,CAGE,OAAOC,KAAP,EAAc;AACd,aAAO,EAAP;AACD;AACF,GAPc;;AAAA,kBAATN,SAAS;AAAA;AAAA;AAAA,GAAf;;AAcO,IAAMO,QAAQ;AAAA,gCAAG,WACtBC,eADsB,EAEtBC,mBAFsB,EAGA;AAEtB,QAAIC,QAAQ,SAASV,SAAS,WAAID,aAAJ,yBAA9B;;AACA,QAAI,CAACW,QAAL,EAAe;AACbA,MAAAA,QAAQ,SAASV,SAAS,CAACQ,eAAD,CAA1B;AACD;;AAED,QAAIG,YAAJ;;AACA,QAAIF,mBAAJ,EAAyB;AACvBE,MAAAA,YAAY,SAASX,SAAS,CAACS,mBAAD,CAA9B;AACD;;AAED,QAAMG,IAAc,GAAG;AACrBF,MAAAA,QAAQ,EAAE;AAAEG,QAAAA,UAAU,EAAE,EAAd;AAAkBC,QAAAA,OAAO,EAAE,EAA3B;AAA+BC,QAAAA,YAAY,EAAE,EAA7C;AAAiDC,QAAAA,SAAS,EAAE;AAA5D;AADW,KAAvB;;AAGA,QAAIN,QAAJ,EAAc;AACZE,MAAAA,IAAI,CAACF,QAAL,GAAgBO,IAAI,CAACC,KAAL,CAAWR,QAAX,CAAhB;AACD;;AACD,QAAIC,YAAJ,EAAkB;AAChBC,MAAAA,IAAI,CAACD,YAAL,GAAoBM,IAAI,CAACC,KAAL,CAAWP,YAAX,CAApB;AACD;;AACD,WAAOC,IAAP;AACD,GAzBoB;;AAAA,kBAARL,QAAQ;AAAA;AAAA;AAAA,GAAd","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 { IDeclarationMine, IExampleMine } from '@looker/sdk-codegen'\n\nexport const apixFilesHost = 'http://localhost:30000'\n\nconst fetchLode = async (lodeUrl: string) => {\n try {\n const result = await fetch(lodeUrl, { mode: 'cors' })\n return result.text()\n } catch (error) {\n return ''\n }\n}\n\ninterface FullLode {\n examples: IExampleMine\n declarations?: IDeclarationMine\n}\n\nexport const getLoded = async (\n examplesLodeUrl: string,\n declarationsLodeUrl?: string\n): Promise<FullLode> => {\n // First try to load from the apix-files server\n let examples = await fetchLode(`${apixFilesHost}/examplesIndex.json`)\n if (!examples) {\n examples = await fetchLode(examplesLodeUrl)\n }\n\n let declarations\n if (declarationsLodeUrl) {\n declarations = await fetchLode(declarationsLodeUrl)\n }\n\n const lode: FullLode = {\n examples: { commitHash: '', nuggets: {}, remoteOrigin: '', summaries: {} },\n }\n if (examples) {\n lode.examples = JSON.parse(examples)\n }\n if (declarations) {\n lode.declarations = JSON.parse(declarations)\n }\n return lode\n}\n"],"file":"lodeUtils.js"}
1
+ {"version":3,"sources":["../../src/utils/lodeUtils.ts"],"names":["apixFilesHost","fetchLode","lodeUrl","result","fetch","mode","text","error","getLoded","examplesLodeUrl","declarationsLodeUrl","examples","declarations","lode","undefined","JSON","parse"],"mappings":";;;;;;;;;;;AA4BO,IAAMA,aAAa,GAAG,wBAAtB;;;AAEP,IAAMC,SAAS;AAAA,+BAAG,WAAOC,OAAP,EAA2B;AAC3C,QAAI;AACF,UAAMC,MAAM,SAASC,KAAK,CAACF,OAAD,EAAU;AAAEG,QAAAA,IAAI,EAAE;AAAR,OAAV,CAA1B;AACA,aAAOF,MAAM,CAACG,IAAP,EAAP;AACD,KAHD,CAGE,OAAOC,KAAP,EAAc;AACd,aAAO,EAAP;AACD;AACF,GAPc;;AAAA,kBAATN,SAAS;AAAA;AAAA;AAAA,GAAf;;AAcO,IAAMO,QAAQ;AAAA,gCAAG,WACtBC,eADsB,EAEtBC,mBAFsB,EAGA;AAEtB,QAAIC,QAAQ,SAASV,SAAS,WAAID,aAAJ,yBAA9B;;AACA,QAAI,CAACW,QAAD,IAAaF,eAAjB,EAAkC;AAChCE,MAAAA,QAAQ,SAASV,SAAS,CAACQ,eAAD,CAA1B;AACD;;AAED,QAAIG,YAAJ;;AACA,QAAIF,mBAAJ,EAAyB;AACvBE,MAAAA,YAAY,SAASX,SAAS,CAACS,mBAAD,CAA9B;AACD;;AAED,QAAMG,IAAc,GAAG;AAAEF,MAAAA,QAAQ,EAAEG,SAAZ;AAAuBF,MAAAA,YAAY,EAAEE;AAArC,KAAvB;;AACA,QAAIH,QAAJ,EAAc;AACZE,MAAAA,IAAI,CAACF,QAAL,GAAgBI,IAAI,CAACC,KAAL,CAAWL,QAAX,CAAhB;AACD;;AACD,QAAIC,YAAJ,EAAkB;AAChBC,MAAAA,IAAI,CAACD,YAAL,GAAoBG,IAAI,CAACC,KAAL,CAAWJ,YAAX,CAApB;AACD;;AACD,WAAOC,IAAP;AACD,GAvBoB;;AAAA,kBAARL,QAAQ;AAAA;AAAA;AAAA,GAAd","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 { IDeclarationMine, IExampleMine } from '@looker/sdk-codegen'\n\nexport const apixFilesHost = 'http://localhost:30000'\n\nconst fetchLode = async (lodeUrl: string) => {\n try {\n const result = await fetch(lodeUrl, { mode: 'cors' })\n return result.text()\n } catch (error) {\n return ''\n }\n}\n\ninterface FullLode {\n examples?: IExampleMine\n declarations?: IDeclarationMine\n}\n\nexport const getLoded = async (\n examplesLodeUrl?: string,\n declarationsLodeUrl?: string\n): Promise<FullLode> => {\n // First try to load from the apix-files server\n let examples = await fetchLode(`${apixFilesHost}/examplesIndex.json`)\n if (!examples && examplesLodeUrl) {\n examples = await fetchLode(examplesLodeUrl)\n }\n\n let declarations\n if (declarationsLodeUrl) {\n declarations = await fetchLode(declarationsLodeUrl)\n }\n\n const lode: FullLode = { examples: undefined, declarations: undefined }\n if (examples) {\n lode.examples = JSON.parse(examples)\n }\n if (declarations) {\n lode.declarations = JSON.parse(declarations)\n }\n return lode\n}\n"],"file":"lodeUtils.js"}
@@ -1,6 +1,9 @@
1
1
  import type { ApiModel, IMethod, IType } from '@looker/sdk-codegen';
2
+ import type { Location as HLocation } from 'history';
2
3
  export declare const buildMethodPath: (specKey: string, tag: string, methodName: string) => string;
3
4
  export declare const buildTypePath: (specKey: string, tag: string, typeName: string) => string;
4
5
  export declare const diffPath = "diff";
5
6
  export declare const oAuthPath = "oauth";
7
+ export declare const isMethod: (item: IMethod | IType) => boolean;
6
8
  export declare const buildPath: (api: ApiModel, item: IMethod | IType, specKey: string) => string;
9
+ export declare const getSpecKey: (location: HLocation | Location) => string | null;
package/lib/utils/path.js CHANGED
@@ -3,10 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.buildPath = exports.oAuthPath = exports.diffPath = exports.buildTypePath = exports.buildMethodPath = void 0;
6
+ exports.getSpecKey = exports.buildPath = exports.isMethod = exports.oAuthPath = exports.diffPath = exports.buildTypePath = exports.buildMethodPath = void 0;
7
7
 
8
8
  var _sdkCodegen = require("@looker/sdk-codegen");
9
9
 
10
+ function _wrapRegExp() { _wrapRegExp = function _wrapRegExp(re, groups) { return new BabelRegExp(re, undefined, groups); }; var _super = RegExp.prototype; var _groups = new WeakMap(); function BabelRegExp(re, flags, groups) { var _this = new RegExp(re, flags); _groups.set(_this, groups || _groups.get(re)); return _setPrototypeOf(_this, BabelRegExp.prototype); } _inherits(BabelRegExp, RegExp); BabelRegExp.prototype.exec = function (str) { var result = _super.exec.call(this, str); if (result) result.groups = buildGroups(result, this); return result; }; BabelRegExp.prototype[Symbol.replace] = function (str, substitution) { if (typeof substitution === "string") { var groups = _groups.get(this); return _super[Symbol.replace].call(this, str, substitution.replace(/\$<([^>]+)>/g, function (_, name) { return "$" + groups[name]; })); } else if (typeof substitution === "function") { var _this = this; return _super[Symbol.replace].call(this, str, function () { var args = arguments; if (typeof args[args.length - 1] !== "object") { args = [].slice.call(args); args.push(buildGroups(args, _this)); } return substitution.apply(this, args); }); } else { return _super[Symbol.replace].call(this, str, substitution); } }; function buildGroups(result, re) { var g = _groups.get(re); return Object.keys(g).reduce(function (groups, name) { groups[name] = result[g[name]]; return groups; }, Object.create(null)); } return _wrapRegExp.apply(this, arguments); }
11
+
12
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
13
+
14
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
15
+
10
16
  var buildMethodPath = (specKey, tag, methodName) => "/".concat(specKey, "/methods/").concat(tag, "/").concat(methodName);
11
17
 
12
18
  exports.buildMethodPath = buildMethodPath;
@@ -29,6 +35,10 @@ var getMethodTag = (api, methodName) => {
29
35
  })[0];
30
36
  };
31
37
 
38
+ var isMethod = item => 'params' in item;
39
+
40
+ exports.isMethod = isMethod;
41
+
32
42
  var getTypeTag = (api, type) => {
33
43
  var method = (0, _sdkCodegen.firstMethodRef)(api, type);
34
44
  return getMethodTag(api, method.name);
@@ -37,7 +47,7 @@ var getTypeTag = (api, type) => {
37
47
  var buildPath = (api, item, specKey) => {
38
48
  var path;
39
49
 
40
- if (item instanceof _sdkCodegen.Method) {
50
+ if (isMethod(item)) {
41
51
  var tag = getMethodTag(api, item.name);
42
52
  path = buildMethodPath(specKey, tag, item.name);
43
53
  } else {
@@ -50,4 +60,24 @@ var buildPath = (api, item, specKey) => {
50
60
  };
51
61
 
52
62
  exports.buildPath = buildPath;
63
+
64
+ var getSpecKey = location => {
65
+ var _match, _match$groups;
66
+
67
+ var pathname = location.pathname;
68
+ var match;
69
+
70
+ if (pathname.startsWith("/".concat(diffPath))) {
71
+ var pattern = new RegExp("(?:/".concat(diffPath, ")/(?<specKey>\\w+.\\w+)"));
72
+ match = pathname.match(pattern);
73
+ } else {
74
+ match = pathname.match(_wrapRegExp(/\/([0-9A-Z_a-z]+\.[0-9A-Z_a-z]+).*/, {
75
+ specKey: 1
76
+ }));
77
+ }
78
+
79
+ return ((_match = match) === null || _match === void 0 ? void 0 : (_match$groups = _match.groups) === null || _match$groups === void 0 ? void 0 : _match$groups.specKey) || null;
80
+ };
81
+
82
+ exports.getSpecKey = getSpecKey;
53
83
  //# sourceMappingURL=path.js.map