@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
@@ -24,16 +24,16 @@
24
24
 
25
25
  */
26
26
  import React from 'react'
27
- import { act, screen, waitFor } from '@testing-library/react'
28
- import { renderWithTheme } from '@looker/components-test-utils'
27
+ import { screen, waitFor } from '@testing-library/react'
29
28
  import userEvent from '@testing-library/user-event'
30
-
31
- import { specs, getLoadedSpecState } from '../../test-data'
32
- import { renderWithRouterAndReduxProvider } from '../../test-utils'
29
+ import { useHistory } from 'react-router-dom'
30
+ import { getLoadedSpecs, specs } from '../../test-data'
31
+ import {
32
+ renderWithReduxProvider,
33
+ renderWithRouterAndReduxProvider,
34
+ } from '../../test-utils'
33
35
  import { ApiSpecSelector } from './ApiSpecSelector'
34
36
 
35
- const specState = getLoadedSpecState()
36
-
37
37
  jest.mock('react-router-dom', () => {
38
38
  const ReactRouterDOM = jest.requireActual('react-router-dom')
39
39
  return {
@@ -41,34 +41,29 @@ jest.mock('react-router-dom', () => {
41
41
  useLocation: () => ({
42
42
  pathname: '/4.0/methods/Dashboard/dashboard',
43
43
  }),
44
+ useHistory: jest.fn().mockReturnValue({ push: jest.fn() }),
44
45
  }
45
46
  })
46
47
 
48
+ // jest.mock('../../state/specs', () => ({
49
+ // ...(jest.requireActual('../../state/specs') as Record<string, unknown>),
50
+ // useSpecActions: jest
51
+ // .fn()
52
+ // .mockReturnValue({ setCurrentSpecAction: jest.fn() }),
53
+ // }))
54
+
47
55
  describe('ApiSpecSelector', () => {
48
- const specDispatch = jest.fn()
49
56
  Element.prototype.scrollIntoView = jest.fn()
57
+ const spec = getLoadedSpecs()['4.0']
50
58
 
51
- test('the default spec is selected by default', () => {
52
- renderWithTheme(
53
- <ApiSpecSelector
54
- specs={specs}
55
- spec={specState.spec}
56
- specDispatch={specDispatch}
57
- />
58
- )
59
-
59
+ test('the base spec is selected by default', () => {
60
+ renderWithReduxProvider(<ApiSpecSelector spec={spec} />)
60
61
  const selector = screen.getByRole('textbox')
61
- expect(selector).toHaveValue(`${specState.spec.key}`)
62
+ expect(selector).toHaveValue(`${spec.key}`)
62
63
  })
63
64
 
64
65
  test('it lists all available specs', async () => {
65
- renderWithTheme(
66
- <ApiSpecSelector
67
- specs={specs}
68
- spec={specState.spec}
69
- specDispatch={specDispatch}
70
- />
71
- )
66
+ renderWithReduxProvider(<ApiSpecSelector spec={spec} />)
72
67
  userEvent.click(screen.getByRole('textbox'))
73
68
  await waitFor(() => {
74
69
  expect(screen.getAllByRole('option')).toHaveLength(
@@ -77,25 +72,17 @@ describe('ApiSpecSelector', () => {
77
72
  })
78
73
  })
79
74
 
80
- test('it fires a SELECT_SPEC action when another spec is selected', async () => {
81
- renderWithRouterAndReduxProvider(
82
- <ApiSpecSelector
83
- specs={specs}
84
- spec={specState.spec}
85
- specDispatch={specDispatch}
86
- />
87
- )
88
-
89
- await act(async () => {
90
- await userEvent.click(screen.getByRole('textbox'))
91
- await userEvent.click(screen.getByRole('option', { name: '3.1 current' }))
92
- await waitFor(() => {
93
- expect(specDispatch).toHaveBeenCalledTimes(1)
94
- expect(specDispatch).toHaveBeenCalledWith({
95
- type: 'SELECT_SPEC',
96
- payload: '3.1',
97
- })
98
- })
75
+ test('requests selected spec', async () => {
76
+ const { push } = useHistory()
77
+ renderWithRouterAndReduxProvider(<ApiSpecSelector spec={spec} />)
78
+ userEvent.click(screen.getByRole('textbox'))
79
+ await waitFor(() => {
80
+ expect(screen.getAllByRole('option')).toHaveLength(
81
+ Object.keys(specs).length
82
+ )
99
83
  })
84
+ const button = screen.getByText('3.1')
85
+ userEvent.click(button)
86
+ expect(push).toHaveBeenCalledWith('/3.1/methods/Dashboard/dashboard')
100
87
  })
101
88
  })
@@ -24,28 +24,23 @@
24
24
 
25
25
  */
26
26
 
27
- import type { FC, Dispatch } from 'react'
27
+ import type { FC } from 'react'
28
28
  import React from 'react'
29
29
  import { Select } from '@looker/components'
30
30
  import { useHistory, useLocation } from 'react-router-dom'
31
+ import type { SpecItem } from '@looker/sdk-codegen'
32
+ import { useSelector } from 'react-redux'
31
33
 
32
- import type { SpecList, SpecItem } from '@looker/sdk-codegen'
33
- import type { SpecAction } from '../../reducers'
34
- import { selectSpec } from '../../reducers'
34
+ import { selectSpecs } from '../../state'
35
35
 
36
36
  interface ApiSpecSelectorProps {
37
- specs: SpecList
38
37
  spec: SpecItem
39
- specDispatch: Dispatch<SpecAction>
40
38
  }
41
39
 
42
- export const ApiSpecSelector: FC<ApiSpecSelectorProps> = ({
43
- specs,
44
- spec,
45
- specDispatch,
46
- }) => {
40
+ export const ApiSpecSelector: FC<ApiSpecSelectorProps> = ({ spec }) => {
47
41
  const history = useHistory()
48
42
  const location = useLocation()
43
+ const specs = useSelector(selectSpecs)
49
44
  const options = Object.entries(specs).map(([key, spec]) => ({
50
45
  value: key,
51
46
  label: key,
@@ -53,7 +48,6 @@ export const ApiSpecSelector: FC<ApiSpecSelectorProps> = ({
53
48
  }))
54
49
 
55
50
  const handleChange = (specKey: string) => {
56
- specDispatch(selectSpec(specKey))
57
51
  const matchPath = location.pathname.replace(`/${spec.key}`, `/${specKey}`)
58
52
  history.push(matchPath)
59
53
  }
@@ -29,11 +29,9 @@ import userEvent from '@testing-library/user-event'
29
29
  import { codeGenerators } from '@looker/sdk-codegen'
30
30
  import * as reactRedux from 'react-redux'
31
31
 
32
- import { defaultSettingsState, slice as settingsSlice } from '../../state'
33
- import {
34
- registerTestEnvAdaptor,
35
- renderWithReduxProvider,
36
- } from '../../test-utils'
32
+ import { registerTestEnvAdaptor } from '@looker/extension-utils'
33
+ import { defaultSettingsState, settingsSlice } from '../../state'
34
+ import { renderWithReduxProvider } from '../../test-utils'
37
35
  import { SdkLanguageSelector } from './SdkLanguageSelector'
38
36
 
39
37
  describe('SdkLanguageSelector', () => {
@@ -30,13 +30,13 @@ import { Select } from '@looker/components'
30
30
  import { useSelector } from 'react-redux'
31
31
  import type { SelectOptionProps } from '@looker/components'
32
32
 
33
- import { useActions, selectSdkLanguage } from '../../state'
33
+ import { useSettingActions, selectSdkLanguage } from '../../state'
34
34
 
35
35
  /**
36
36
  * Allows the user to select their preferred SDK language
37
37
  */
38
38
  export const SdkLanguageSelector: FC = () => {
39
- const { setSdkLanguageAction } = useActions()
39
+ const { setSdkLanguageAction } = useSettingActions()
40
40
  const selectedSdkLanguage = useSelector(selectSdkLanguage)
41
41
 
42
42
  const allSdkLanguages: SelectOptionProps[] = codeGenerators.map((gen) => ({
@@ -28,28 +28,21 @@ import { act, screen, waitFor } from '@testing-library/react'
28
28
  import { codeGenerators } from '@looker/sdk-codegen'
29
29
  import userEvent from '@testing-library/user-event'
30
30
 
31
- import { specs, specState } from '../../test-data'
31
+ import { getLoadedSpecs, specs } from '../../test-data'
32
32
  import { renderWithRouterAndReduxProvider } from '../../test-utils'
33
33
  import { defaultSettingsState } from '../../state'
34
34
  import { SelectorContainer } from './SelectorContainer'
35
35
 
36
36
  describe('SelectorContainer', () => {
37
- const specDispatch = jest.fn()
38
-
37
+ const spec = getLoadedSpecs()['4.0']
39
38
  beforeAll(() => {
40
39
  window.HTMLElement.prototype.scrollIntoView = jest.fn()
41
40
  })
42
41
 
43
42
  test('it renders a spec selector with the correct default value and options', async () => {
44
- renderWithRouterAndReduxProvider(
45
- <SelectorContainer
46
- specs={specs}
47
- spec={specState.spec}
48
- specDispatch={specDispatch}
49
- />
50
- )
43
+ renderWithRouterAndReduxProvider(<SelectorContainer spec={spec} />)
51
44
  const selector = screen.getByLabelText('spec selector')
52
- expect(selector).toHaveValue(`${specState.spec.key}`)
45
+ expect(selector).toHaveValue(`${spec.key}`)
53
46
  await act(async () => {
54
47
  await userEvent.click(selector)
55
48
  await waitFor(() => {
@@ -61,13 +54,7 @@ describe('SelectorContainer', () => {
61
54
  })
62
55
 
63
56
  test('it renders an sdk language selector with the correct value and options', async () => {
64
- renderWithRouterAndReduxProvider(
65
- <SelectorContainer
66
- specs={specs}
67
- spec={specState.spec}
68
- specDispatch={specDispatch}
69
- />
70
- )
57
+ renderWithRouterAndReduxProvider(<SelectorContainer spec={spec} />)
71
58
  const selector = screen.getByLabelText('sdk language selector')
72
59
  expect(selector).toHaveValue(defaultSettingsState.sdkLanguage)
73
60
  await act(async () => {
@@ -81,19 +68,13 @@ describe('SelectorContainer', () => {
81
68
  })
82
69
 
83
70
  test('it renders an icon button for the differ', () => {
84
- renderWithRouterAndReduxProvider(
85
- <SelectorContainer
86
- specs={specs}
87
- spec={specState.spec}
88
- specDispatch={specDispatch}
89
- />
90
- )
71
+ renderWithRouterAndReduxProvider(<SelectorContainer spec={spec} />)
91
72
  expect(
92
73
  screen
93
74
  .getByRole('button', {
94
75
  name: 'Compare Specifications',
95
76
  })
96
77
  .closest('a')
97
- ).toHaveAttribute('href', `/diff/${specState.spec.key}/`)
78
+ ).toHaveAttribute('href', `/diff/${spec.key}/`)
98
79
  })
99
80
  })
@@ -24,25 +24,21 @@
24
24
 
25
25
  */
26
26
 
27
- import type { FC, Dispatch } from 'react'
27
+ import type { FC } from 'react'
28
28
  import React from 'react'
29
29
  import type { SpaceHelperProps } from '@looker/components'
30
30
  import { Space, IconButton } from '@looker/components'
31
31
  import { ChangeHistory } from '@styled-icons/material/ChangeHistory'
32
- import type { SpecList, SpecItem } from '@looker/sdk-codegen'
32
+ import type { SpecItem } from '@looker/sdk-codegen'
33
+
33
34
  import { Link } from '../Link'
34
- import type { SpecAction } from '../../reducers'
35
35
  import { diffPath } from '../../utils'
36
36
  import { SdkLanguageSelector } from './SdkLanguageSelector'
37
37
  import { ApiSpecSelector } from './ApiSpecSelector'
38
38
 
39
39
  interface SelectorContainerProps extends SpaceHelperProps {
40
- /** Specs to choose from */
41
- specs: SpecList
42
40
  /** Current selected spec */
43
41
  spec: SpecItem
44
- /** Spec state setter */
45
- specDispatch: Dispatch<SpecAction>
46
42
  }
47
43
 
48
44
  export const HEADER_REM = 4
@@ -51,14 +47,12 @@ export const HEADER_REM = 4
51
47
  * Renders a container for selectors
52
48
  */
53
49
  export const SelectorContainer: FC<SelectorContainerProps> = ({
54
- specs,
55
50
  spec,
56
- specDispatch,
57
51
  ...spaceProps
58
52
  }) => (
59
53
  <Space width="auto" {...spaceProps}>
60
54
  <SdkLanguageSelector />
61
- <ApiSpecSelector specs={specs} spec={spec} specDispatch={specDispatch} />
55
+ <ApiSpecSelector spec={spec} />
62
56
  <Link to={`/${diffPath}/${spec.key}/`}>
63
57
  <IconButton
64
58
  toggle
@@ -28,15 +28,15 @@ import { criteriaToSet } from '@looker/sdk-codegen'
28
28
  import userEvent from '@testing-library/user-event'
29
29
  import { screen, waitFor } from '@testing-library/react'
30
30
 
31
- import { getLoadedSpecs, specState } from '../../test-data'
31
+ import { getLoadedSpecs } from '../../test-data'
32
32
  import { renderWithRouterAndReduxProvider } from '../../test-utils'
33
33
  import { defaultSettingsState } from '../../state'
34
34
  import { SideNav } from './SideNav'
35
35
  import { countMethods, countTypes } from './searchUtils'
36
36
 
37
+ const spec = getLoadedSpecs()['4.0']
38
+
37
39
  describe('SideNav', () => {
38
- const specs = getLoadedSpecs()
39
- const specDispatch = jest.fn()
40
40
  const allTagsPattern = /^(Auth|ApiAuth)$/
41
41
  const allTypesPattern = /^(WriteDashboard|WriteQuery)$/
42
42
 
@@ -55,13 +55,7 @@ describe('SideNav', () => {
55
55
  })
56
56
 
57
57
  test('it renders search, methods tab and types tab', () => {
58
- renderWithRouterAndReduxProvider(
59
- <SideNav
60
- specs={specs}
61
- spec={specState.spec}
62
- specDispatch={specDispatch}
63
- />
64
- )
58
+ renderWithRouterAndReduxProvider(<SideNav spec={spec} />)
65
59
  const search = screen.getByLabelText('Search')
66
60
  expect(search).toHaveProperty('placeholder', 'Search')
67
61
  const tabs = screen.getAllByRole('tab', {
@@ -69,23 +63,14 @@ describe('SideNav', () => {
69
63
  })
70
64
  expect(tabs).toHaveLength(2)
71
65
  expect(tabs[0]).toHaveTextContent(
72
- `Methods (${countMethods(specState.spec.api!.tags)})`
66
+ `Methods (${countMethods(spec.api!.tags)})`
73
67
  )
74
68
 
75
- expect(tabs[1]).toHaveTextContent(
76
- `Types (${countTypes(specState.spec.api!.types)})`
77
- )
69
+ expect(tabs[1]).toHaveTextContent(`Types (${countTypes(spec.api!.types)})`)
78
70
  })
79
71
 
80
72
  test('Methods tab is the default active tab', () => {
81
- renderWithRouterAndReduxProvider(
82
- <SideNav
83
- specs={specs}
84
- spec={specState.spec}
85
- specDispatch={specDispatch}
86
- />,
87
- ['/3.1/methods']
88
- )
73
+ renderWithRouterAndReduxProvider(<SideNav spec={spec} />, ['/3.1/methods'])
89
74
  expect(screen.getAllByText(allTagsPattern)).toHaveLength(2)
90
75
  expect(
91
76
  screen.queryAllByRole('link', { name: allTypesPattern })
@@ -97,47 +82,29 @@ describe('SideNav', () => {
97
82
  })
98
83
 
99
84
  test('url determines active tab', () => {
100
- renderWithRouterAndReduxProvider(
101
- <SideNav
102
- specs={specs}
103
- spec={specState.spec}
104
- specDispatch={specDispatch}
105
- />,
106
- ['/3.1/types']
107
- )
85
+ renderWithRouterAndReduxProvider(<SideNav spec={spec} />, ['/3.1/types'])
108
86
  // eslint-disable-next-line jest-dom/prefer-in-document
109
87
  expect(screen.queryAllByText(allTagsPattern)).toHaveLength(2)
110
88
  })
111
89
  })
112
90
 
113
91
  describe('Search', () => {
114
- const specs = getLoadedSpecs()
115
- const specDispatch = jest.fn()
116
-
117
92
  test('it filters methods and types on input', async () => {
118
- renderWithRouterAndReduxProvider(
119
- <SideNav
120
- specs={specs}
121
- spec={specState.spec}
122
- specDispatch={specDispatch}
123
- />
124
- )
93
+ renderWithRouterAndReduxProvider(<SideNav spec={spec} />)
125
94
  const searchPattern = 'embedsso'
126
95
  const input = screen.getByLabelText('Search')
127
- jest.spyOn(specState.spec.api!, 'search')
96
+ jest.spyOn(spec.api!, 'search')
128
97
  /** Pasting to avoid triggering search multiple times */
129
98
  await userEvent.paste(input, searchPattern)
130
99
  await waitFor(() => {
131
- expect(specState.spec.api!.search).toHaveBeenCalledWith(
100
+ expect(spec.api!.search).toHaveBeenCalledWith(
132
101
  searchPattern,
133
102
  criteriaToSet(defaultSettingsState.searchCriteria)
134
103
  )
135
104
  const methods = screen.getByRole('tab', { name: 'Methods (1)' })
136
105
  userEvent.click(methods)
137
106
  expect(
138
- screen.getByText(
139
- specState.spec.api!.tags.Auth.create_sso_embed_url.summary
140
- )
107
+ screen.getByText(spec.api!.tags.Auth.create_sso_embed_url.summary)
141
108
  ).toBeInTheDocument()
142
109
  const types = screen.getByRole('tab', { name: 'Types (1)' })
143
110
  userEvent.click(types)
@@ -24,7 +24,7 @@
24
24
 
25
25
  */
26
26
 
27
- import type { FC, Dispatch } from 'react'
27
+ import type { FC } from 'react'
28
28
  import React, { useEffect, useState } from 'react'
29
29
  import { useHistory, useLocation } from 'react-router-dom'
30
30
  import {
@@ -37,7 +37,6 @@ import {
37
37
  } from '@looker/components'
38
38
  import type {
39
39
  SpecItem,
40
- SpecList,
41
40
  ISearchResult,
42
41
  ApiModel,
43
42
  TagList,
@@ -46,10 +45,9 @@ import type {
46
45
  import { criteriaToSet, tagTypes } from '@looker/sdk-codegen'
47
46
  import { useSelector } from 'react-redux'
48
47
 
49
- import type { SpecAction } from '../../reducers'
50
48
  import { useWindowSize } from '../../utils'
51
49
  import { HEADER_REM } from '../Header'
52
- import { selectSearchCriteria, useActions } from '../../state'
50
+ import { selectSearchCriteria, useSettingActions } from '../../state'
53
51
  import { SideNavMethodTags } from './SideNavMethodTags'
54
52
  import { SideNavTypeTags } from './SideNavTypeTags'
55
53
  import { useDebounce, countMethods, countTypes } from './searchUtils'
@@ -65,12 +63,8 @@ interface SideNavState {
65
63
 
66
64
  interface SideNavProps {
67
65
  headless?: boolean
68
- /** Specs to choose from */
69
- specs: SpecList
70
66
  /** Current selected spec */
71
67
  spec: SpecItem
72
- /** Spec state setter */
73
- specDispatch: Dispatch<SpecAction>
74
68
  }
75
69
 
76
70
  export const SideNav: FC<SideNavProps> = ({ headless = false, spec }) => {
@@ -100,7 +94,7 @@ export const SideNav: FC<SideNavProps> = ({ headless = false, spec }) => {
100
94
  }
101
95
  const tabs = useTabs({ defaultIndex, onChange: onTabChange })
102
96
  const searchCriteria = useSelector(selectSearchCriteria)
103
- const { setSearchPatternAction } = useActions()
97
+ const { setSearchPatternAction } = useSettingActions()
104
98
 
105
99
  const [pattern, setSearchPattern] = useState('')
106
100
  const debouncedPattern = useDebounce(pattern, 250)
@@ -32,7 +32,7 @@ import {
32
32
  Heading,
33
33
  ProgressCircular,
34
34
  } from '@looker/components'
35
- import type { ThemeOverrides } from '../../utils'
35
+ import type { ThemeOverrides } from '@looker/extension-utils'
36
36
 
37
37
  export interface LoaderProps {
38
38
  themeOverrides: ThemeOverrides
@@ -45,3 +45,4 @@ export { DocTypeSummary } from './DocTypeSummary'
45
45
  export { Link } from './Link'
46
46
  export { ErrorBoundary } from './ErrorBoundary'
47
47
  export { SelectorContainer } from './SelectorContainer'
48
+ export { Banner } from './Banner'
@@ -23,6 +23,8 @@
23
23
  SOFTWARE.
24
24
 
25
25
  */
26
+ export * from './ApiExplorer'
27
+ export * from './StandaloneApiExplorer'
28
+ export * from './components'
29
+ export * from './state'
26
30
  export * from './utils'
27
- export * from './actions'
28
- export * from './reducer'
@@ -23,11 +23,11 @@
23
23
  SOFTWARE.
24
24
 
25
25
  */
26
+
26
27
  import type { FC } from 'react'
27
28
  import React from 'react'
28
29
  import { Redirect, Route, Switch } from 'react-router-dom'
29
30
  import type { ApiModel, SpecList } from '@looker/sdk-codegen'
30
- import type { RunItSetter } from '@looker/run-it'
31
31
 
32
32
  import {
33
33
  HomeScene,
@@ -37,51 +37,40 @@ import {
37
37
  TypeTagScene,
38
38
  } from '../scenes'
39
39
  import { DiffScene } from '../scenes/DiffScene'
40
- import type { IApixEnvAdaptor } from '../utils'
41
40
  import { diffPath } from '../utils'
42
41
 
43
42
  interface AppRouterProps {
44
- api: ApiModel
45
43
  specKey: string
46
44
  specs: SpecList
45
+ api: ApiModel
47
46
  toggleNavigation: (target?: boolean) => void
48
- envAdaptor: IApixEnvAdaptor
49
- setVersionsUrl: RunItSetter
50
47
  }
51
48
 
52
49
  export const AppRouter: FC<AppRouterProps> = ({
53
- specKey,
54
50
  api,
51
+ specKey,
55
52
  specs,
56
53
  toggleNavigation,
57
- envAdaptor,
58
- setVersionsUrl,
59
- }) => {
60
- return (
61
- <Switch>
62
- <Redirect from="/" to={`/${specKey}/`} exact />
63
- <Route path={`/${diffPath}/:l?/:r?`}>
64
- <DiffScene specs={specs} toggleNavigation={toggleNavigation} />
65
- </Route>
66
- <Route path="/:specKey/(methods|types)?" exact>
67
- <HomeScene api={api} />
68
- </Route>
69
- <Route path="/:specKey/methods/:methodTag" exact>
70
- <MethodTagScene api={api} />
71
- </Route>
72
- <Route path="/:specKey/methods/:methodTag/:methodName">
73
- <MethodScene
74
- api={api}
75
- envAdaptor={envAdaptor}
76
- setVersionsUrl={setVersionsUrl}
77
- />
78
- </Route>
79
- <Route path="/:specKey/types/:typeTag" exact>
80
- <TypeTagScene api={api} />
81
- </Route>
82
- <Route path="/:specKey/types/:typeTag/:typeName">
83
- <TypeScene api={api} />
84
- </Route>
85
- </Switch>
86
- )
87
- }
54
+ }) => (
55
+ <Switch>
56
+ <Redirect from="/" to={`/${specKey}/`} exact />
57
+ <Route path={`/${diffPath}/:l?/:r?`}>
58
+ <DiffScene specs={specs} toggleNavigation={toggleNavigation} />
59
+ </Route>
60
+ <Route path="/:specKey/(methods|types)?" exact>
61
+ <HomeScene api={api} />
62
+ </Route>
63
+ <Route path="/:specKey/methods/:methodTag" exact>
64
+ <MethodTagScene api={api} />
65
+ </Route>
66
+ <Route path="/:specKey/methods/:methodTag/:methodName">
67
+ <MethodScene api={api} />
68
+ </Route>
69
+ <Route path="/:specKey/types/:typeTag" exact>
70
+ <TypeTagScene api={api} />
71
+ </Route>
72
+ <Route path="/:specKey/types/:typeTag/:typeName">
73
+ <TypeScene api={api} />
74
+ </Route>
75
+ </Switch>
76
+ )