@api-client/ui 0.0.4 → 0.0.5

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 (514) hide show
  1. package/dist/amf/lib/AmfParameters.js +0 -4
  2. package/dist/amf/lib/AmfParameters.js.map +1 -1
  3. package/dist/amf/lib/navigation-layout/EndpointsTree.js +0 -2
  4. package/dist/amf/lib/navigation-layout/EndpointsTree.js.map +1 -1
  5. package/dist/amf/lib/navigation-layout/NaturalTree.js +0 -2
  6. package/dist/amf/lib/navigation-layout/NaturalTree.js.map +1 -1
  7. package/dist/amf/store/AmfGraphStore.js +0 -2
  8. package/dist/amf/store/AmfGraphStore.js.map +1 -1
  9. package/dist/amf/store/AmfStore.js +0 -7
  10. package/dist/amf/store/AmfStore.js.map +1 -1
  11. package/dist/bindings/base/HttpClientStoreBindings.js +4 -1
  12. package/dist/bindings/base/HttpClientStoreBindings.js.map +1 -1
  13. package/dist/bindings/base/PlatformBindings.js +6 -10
  14. package/dist/bindings/base/PlatformBindings.js.map +1 -1
  15. package/dist/bindings/base/ProxyBindings.js +9 -6
  16. package/dist/bindings/base/ProxyBindings.js.map +1 -1
  17. package/dist/bindings/base/SharedWorkerThread.js +4 -1
  18. package/dist/bindings/base/SharedWorkerThread.js.map +1 -1
  19. package/dist/bindings/base/StoreBindings.js +162 -170
  20. package/dist/bindings/base/StoreBindings.js.map +1 -1
  21. package/dist/bindings/web/WebConfigurationBindings.js +22 -24
  22. package/dist/bindings/web/WebConfigurationBindings.js.map +1 -1
  23. package/dist/bindings/web/WebFileBindings.js +7 -4
  24. package/dist/bindings/web/WebFileBindings.js.map +1 -1
  25. package/dist/bindings/web/WebHttpClientStoreBindings.js +19 -21
  26. package/dist/bindings/web/WebHttpClientStoreBindings.js.map +1 -1
  27. package/dist/bindings/web/WebNavigationBindings.js +4 -1
  28. package/dist/bindings/web/WebNavigationBindings.js.map +1 -1
  29. package/dist/bindings/web/WebProxyBindings.js +5 -6
  30. package/dist/bindings/web/WebProxyBindings.js.map +1 -1
  31. package/dist/bindings/web/WebStoreBindings.js +39 -44
  32. package/dist/bindings/web/WebStoreBindings.js.map +1 -1
  33. package/dist/contextual-menu/ContextualMenu.js +10 -19
  34. package/dist/contextual-menu/ContextualMenu.js.map +1 -1
  35. package/dist/contextual-menu/ContextualMenuElement.js +4 -32
  36. package/dist/contextual-menu/ContextualMenuElement.js.map +1 -1
  37. package/dist/contextual-menu/MenuItem.js +0 -12
  38. package/dist/contextual-menu/MenuItem.js.map +1 -1
  39. package/dist/define/amf/api-annotation-document.js +1 -1
  40. package/dist/define/amf/api-annotation-document.js.map +1 -1
  41. package/dist/define/amf/api-authorization-editor.js +1 -1
  42. package/dist/define/amf/api-authorization-editor.js.map +1 -1
  43. package/dist/define/amf/api-channel-document.js +1 -1
  44. package/dist/define/amf/api-channel-document.js.map +1 -1
  45. package/dist/define/amf/api-documentation-document.js +1 -1
  46. package/dist/define/amf/api-documentation-document.js.map +1 -1
  47. package/dist/define/amf/api-documentation.js +1 -1
  48. package/dist/define/amf/api-documentation.js.map +1 -1
  49. package/dist/define/amf/api-navigation.js +1 -1
  50. package/dist/define/amf/api-navigation.js.map +1 -1
  51. package/dist/define/amf/api-operation-document.js +1 -1
  52. package/dist/define/amf/api-operation-document.js.map +1 -1
  53. package/dist/define/amf/api-parameter-document.js +1 -1
  54. package/dist/define/amf/api-parameter-document.js.map +1 -1
  55. package/dist/define/amf/api-parametrized-security-scheme.js +1 -1
  56. package/dist/define/amf/api-parametrized-security-scheme.js.map +1 -1
  57. package/dist/define/amf/api-payload-document.js +1 -1
  58. package/dist/define/amf/api-payload-document.js.map +1 -1
  59. package/dist/define/amf/api-request-document.js +1 -1
  60. package/dist/define/amf/api-request-document.js.map +1 -1
  61. package/dist/define/amf/api-request-editor.js +1 -1
  62. package/dist/define/amf/api-request-editor.js.map +1 -1
  63. package/dist/define/amf/api-request.js +1 -1
  64. package/dist/define/amf/api-request.js.map +1 -1
  65. package/dist/define/amf/api-resource-document.js +1 -1
  66. package/dist/define/amf/api-resource-document.js.map +1 -1
  67. package/dist/define/amf/api-response-document.js +1 -1
  68. package/dist/define/amf/api-response-document.js.map +1 -1
  69. package/dist/define/amf/api-schema-document.js +1 -1
  70. package/dist/define/amf/api-schema-document.js.map +1 -1
  71. package/dist/define/amf/api-security-document.js +1 -1
  72. package/dist/define/amf/api-security-document.js.map +1 -1
  73. package/dist/define/amf/api-security-requirement-document.js +1 -1
  74. package/dist/define/amf/api-security-requirement-document.js.map +1 -1
  75. package/dist/define/amf/api-server-picker.js +1 -1
  76. package/dist/define/amf/api-server-picker.js.map +1 -1
  77. package/dist/define/amf/api-summary.js +1 -1
  78. package/dist/define/amf/api-summary.js.map +1 -1
  79. package/dist/define/amf/authorization/amf-apikey-authorization.js +1 -1
  80. package/dist/define/amf/authorization/amf-apikey-authorization.js.map +1 -1
  81. package/dist/define/amf/authorization/amf-basic-authorization.js +1 -1
  82. package/dist/define/amf/authorization/amf-basic-authorization.js.map +1 -1
  83. package/dist/define/amf/authorization/amf-bearer-authorization.js +1 -1
  84. package/dist/define/amf/authorization/amf-bearer-authorization.js.map +1 -1
  85. package/dist/define/amf/authorization/amf-oauth2-authorization.js +1 -1
  86. package/dist/define/amf/authorization/amf-oauth2-authorization.js.map +1 -1
  87. package/dist/define/amf/authorization/amf-oidc-authorization.js +1 -1
  88. package/dist/define/amf/authorization/amf-oidc-authorization.js.map +1 -1
  89. package/dist/define/amf/authorization/amf-passthrough-authorization.js +1 -1
  90. package/dist/define/amf/authorization/amf-passthrough-authorization.js.map +1 -1
  91. package/dist/define/amf/authorization/amf-ramlcustom-authorization.js +1 -1
  92. package/dist/define/amf/authorization/amf-ramlcustom-authorization.js.map +1 -1
  93. package/dist/define/authorization/apikey-authorization.js +1 -1
  94. package/dist/define/authorization/apikey-authorization.js.map +1 -1
  95. package/dist/define/authorization/basic-authorization.js +1 -1
  96. package/dist/define/authorization/basic-authorization.js.map +1 -1
  97. package/dist/define/authorization/bearer-authorization.js +1 -1
  98. package/dist/define/authorization/bearer-authorization.js.map +1 -1
  99. package/dist/define/authorization/cc-authorization.js +1 -1
  100. package/dist/define/authorization/cc-authorization.js.map +1 -1
  101. package/dist/define/authorization/ntlm-authorization.js +1 -1
  102. package/dist/define/authorization/ntlm-authorization.js.map +1 -1
  103. package/dist/define/authorization/oauth2-authorization.js +1 -1
  104. package/dist/define/authorization/oauth2-authorization.js.map +1 -1
  105. package/dist/define/authorization/oidc-authorization.js +1 -1
  106. package/dist/define/authorization/oidc-authorization.js.map +1 -1
  107. package/dist/define/contextual-menu/contextual-menu.js +1 -1
  108. package/dist/define/contextual-menu/contextual-menu.js.map +1 -1
  109. package/dist/define/dialog/confirm-delete-dialog.js +1 -1
  110. package/dist/define/dialog/confirm-delete-dialog.js.map +1 -1
  111. package/dist/define/dialog/rename-dialog.js +1 -1
  112. package/dist/define/dialog/rename-dialog.js.map +1 -1
  113. package/dist/define/files/share-file.js +1 -1
  114. package/dist/define/files/share-file.js.map +1 -1
  115. package/dist/define/har/har-viewer.js +1 -1
  116. package/dist/define/har/har-viewer.js.map +1 -1
  117. package/dist/define/highlight/marked-highlight.js +1 -1
  118. package/dist/define/highlight/marked-highlight.js.map +1 -1
  119. package/dist/define/highlight/prism-highlight.js +1 -1
  120. package/dist/define/highlight/prism-highlight.js.map +1 -1
  121. package/dist/define/http/http-assertions.js +1 -1
  122. package/dist/define/http/http-assertions.js.map +1 -1
  123. package/dist/define/http/http-body-editor.js +1 -1
  124. package/dist/define/http/http-body-editor.js.map +1 -1
  125. package/dist/define/http/http-body-multipart-editor.js +1 -1
  126. package/dist/define/http/http-body-multipart-editor.js.map +1 -1
  127. package/dist/define/http/http-body-text-editor.js +1 -1
  128. package/dist/define/http/http-body-text-editor.js.map +1 -1
  129. package/dist/define/http/http-body-urlencoded-editor.js +1 -1
  130. package/dist/define/http/http-body-urlencoded-editor.js.map +1 -1
  131. package/dist/define/http/http-headers-form.js +1 -1
  132. package/dist/define/http/http-headers-form.js.map +1 -1
  133. package/dist/define/http/http-log-body.js +1 -1
  134. package/dist/define/http/http-log-body.js.map +1 -1
  135. package/dist/define/http/http-log-headers.js +1 -1
  136. package/dist/define/http/http-log-headers.js.map +1 -1
  137. package/dist/define/http/http-log-timings.js +1 -1
  138. package/dist/define/http/http-log-timings.js.map +1 -1
  139. package/dist/define/http/http-request-config.js +1 -1
  140. package/dist/define/http/http-request-config.js.map +1 -1
  141. package/dist/define/http/http-request-editor.js +1 -1
  142. package/dist/define/http/http-request-editor.js.map +1 -1
  143. package/dist/define/http/http-request-log.js +1 -1
  144. package/dist/define/http/http-request-log.js.map +1 -1
  145. package/dist/define/http/http-snippets.js +1 -1
  146. package/dist/define/http/http-snippets.js.map +1 -1
  147. package/dist/define/http/http-url-input.js +1 -1
  148. package/dist/define/http/http-url-input.js.map +1 -1
  149. package/dist/define/http/http-url-params-form.js +1 -1
  150. package/dist/define/http/http-url-params-form.js.map +1 -1
  151. package/dist/define/http-project/http-project-request-history.js +1 -1
  152. package/dist/define/http-project/http-project-request-history.js.map +1 -1
  153. package/dist/define/http-project/http-project-request.js +2 -2
  154. package/dist/define/http-project/http-project-request.js.map +1 -1
  155. package/dist/define/http-project/project-navigation.js +1 -1
  156. package/dist/define/http-project/project-navigation.js.map +1 -1
  157. package/dist/define/http-project/project-run-report.js +1 -1
  158. package/dist/define/http-project/project-run-report.js.map +1 -1
  159. package/dist/define/http-project/project-runner.js +2 -2
  160. package/dist/define/http-project/project-runner.js.map +1 -1
  161. package/dist/define/layout/split-view.js +1 -1
  162. package/dist/define/layout/split-view.js.map +1 -1
  163. package/dist/define/schema-design/schema-design-navigation.js +1 -1
  164. package/dist/define/schema-design/schema-design-navigation.js.map +1 -1
  165. package/dist/define/schema-design/schema-namespace-selector.js +1 -1
  166. package/dist/define/schema-design/schema-namespace-selector.js.map +1 -1
  167. package/dist/define/ui/ui-button.js +1 -1
  168. package/dist/define/ui/ui-button.js.map +1 -1
  169. package/dist/define/ui/ui-chip.js +1 -1
  170. package/dist/define/ui/ui-chip.js.map +1 -1
  171. package/dist/define/ui/ui-collapse.js +1 -1
  172. package/dist/define/ui/ui-collapse.js.map +1 -1
  173. package/dist/define/ui/ui-dialog.js +1 -1
  174. package/dist/define/ui/ui-dialog.js.map +1 -1
  175. package/dist/define/ui/ui-dropdown-list.js +1 -1
  176. package/dist/define/ui/ui-dropdown-list.js.map +1 -1
  177. package/dist/define/ui/ui-icon-button.js +1 -1
  178. package/dist/define/ui/ui-icon-button.js.map +1 -1
  179. package/dist/define/ui/ui-icon.js +1 -1
  180. package/dist/define/ui/ui-icon.js.map +1 -1
  181. package/dist/define/ui/ui-list-item.js +1 -1
  182. package/dist/define/ui/ui-list-item.js.map +1 -1
  183. package/dist/define/ui/ui-list.js +1 -1
  184. package/dist/define/ui/ui-list.js.map +1 -1
  185. package/dist/define/ui/ui-listbox.js +1 -1
  186. package/dist/define/ui/ui-listbox.js.map +1 -1
  187. package/dist/define/ui/ui-progress.js +1 -1
  188. package/dist/define/ui/ui-progress.js.map +1 -1
  189. package/dist/define/ui/ui-segmented-button-set.js +1 -1
  190. package/dist/define/ui/ui-segmented-button-set.js.map +1 -1
  191. package/dist/define/ui/ui-segmented-button.js +1 -1
  192. package/dist/define/ui/ui-segmented-button.js.map +1 -1
  193. package/dist/define/ui/ui-snackbar.js +1 -1
  194. package/dist/define/ui/ui-snackbar.js.map +1 -1
  195. package/dist/define/ui/ui-tab.js +1 -1
  196. package/dist/define/ui/ui-tab.js.map +1 -1
  197. package/dist/define/ui/ui-tabs.js +1 -1
  198. package/dist/define/ui/ui-tabs.js.map +1 -1
  199. package/dist/directives/data-attr.js +0 -1
  200. package/dist/directives/data-attr.js.map +1 -1
  201. package/dist/elements/ApiElement.js +0 -7
  202. package/dist/elements/ApiElement.js.map +1 -1
  203. package/dist/elements/amf/ApiAnnotationDocument.element.js +0 -2
  204. package/dist/elements/amf/ApiAnnotationDocument.element.js.map +1 -1
  205. package/dist/elements/amf/ApiAuthorizationEditor.element.js +0 -32
  206. package/dist/elements/amf/ApiAuthorizationEditor.element.js.map +1 -1
  207. package/dist/elements/amf/ApiDocumentation.element.js +0 -91
  208. package/dist/elements/amf/ApiDocumentation.element.js.map +1 -1
  209. package/dist/elements/amf/ApiDocumentationBase.js +0 -9
  210. package/dist/elements/amf/ApiDocumentationBase.js.map +1 -1
  211. package/dist/elements/amf/ApiDocumentationDocument.element.js +0 -1
  212. package/dist/elements/amf/ApiDocumentationDocument.element.js.map +1 -1
  213. package/dist/elements/amf/ApiNavigation.element.js +0 -97
  214. package/dist/elements/amf/ApiNavigation.element.js.map +1 -1
  215. package/dist/elements/amf/ApiOperationDocument.element.js +0 -76
  216. package/dist/elements/amf/ApiOperationDocument.element.js.map +1 -1
  217. package/dist/elements/amf/ApiParameterDocument.element.js +0 -3
  218. package/dist/elements/amf/ApiParameterDocument.element.js.map +1 -1
  219. package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js +0 -1
  220. package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js.map +1 -1
  221. package/dist/elements/amf/ApiPayloadDocument.element.js +0 -1
  222. package/dist/elements/amf/ApiPayloadDocument.element.js.map +1 -1
  223. package/dist/elements/amf/ApiRequest.element.js +0 -78
  224. package/dist/elements/amf/ApiRequest.element.js.map +1 -1
  225. package/dist/elements/amf/ApiRequestDocument.element.js +0 -38
  226. package/dist/elements/amf/ApiRequestDocument.element.js.map +1 -1
  227. package/dist/elements/amf/ApiRequestEditor.element.js +0 -118
  228. package/dist/elements/amf/ApiRequestEditor.element.js.map +1 -1
  229. package/dist/elements/amf/ApiResourceDocument.element.js +0 -75
  230. package/dist/elements/amf/ApiResourceDocument.element.js.map +1 -1
  231. package/dist/elements/amf/ApiResponseDocument.element.js +0 -17
  232. package/dist/elements/amf/ApiResponseDocument.element.js.map +1 -1
  233. package/dist/elements/amf/ApiSchemaDocument.element.js +0 -28
  234. package/dist/elements/amf/ApiSchemaDocument.element.js.map +1 -1
  235. package/dist/elements/amf/ApiSecurityDocument.element.js +0 -28
  236. package/dist/elements/amf/ApiSecurityDocument.element.js.map +1 -1
  237. package/dist/elements/amf/ApiSecurityRequirementDocument.element.js +0 -1
  238. package/dist/elements/amf/ApiSecurityRequirementDocument.element.js.map +1 -1
  239. package/dist/elements/amf/ApiServerPicker.element.js +2 -65
  240. package/dist/elements/amf/ApiServerPicker.element.js.map +1 -1
  241. package/dist/elements/amf/ApiSummary.element.js +0 -26
  242. package/dist/elements/amf/ApiSummary.element.js.map +1 -1
  243. package/dist/elements/amf/authorization/AmfApiKey.js +0 -5
  244. package/dist/elements/amf/authorization/AmfApiKey.js.map +1 -1
  245. package/dist/elements/amf/authorization/AmfBasic.js +0 -4
  246. package/dist/elements/amf/authorization/AmfBasic.js.map +1 -1
  247. package/dist/elements/amf/authorization/AmfBearer.js +0 -4
  248. package/dist/elements/amf/authorization/AmfBearer.js.map +1 -1
  249. package/dist/elements/amf/authorization/AmfOauth2.js +0 -13
  250. package/dist/elements/amf/authorization/AmfOauth2.js.map +1 -1
  251. package/dist/elements/amf/authorization/AmfOidc.js +0 -4
  252. package/dist/elements/amf/authorization/AmfOidc.js.map +1 -1
  253. package/dist/elements/amf/authorization/AmfPassThrough.js +0 -6
  254. package/dist/elements/amf/authorization/AmfPassThrough.js.map +1 -1
  255. package/dist/elements/amf/authorization/AmfRamlCustom.js +0 -6
  256. package/dist/elements/amf/authorization/AmfRamlCustom.js.map +1 -1
  257. package/dist/elements/authorization/OAuth2Authorize.js +0 -14
  258. package/dist/elements/authorization/OAuth2Authorize.js.map +1 -1
  259. package/dist/elements/authorization/OidcAuthorize.js +0 -14
  260. package/dist/elements/authorization/OidcAuthorize.js.map +1 -1
  261. package/dist/elements/authorization/ui/ApiKeyAuthorization.js +0 -2
  262. package/dist/elements/authorization/ui/ApiKeyAuthorization.js.map +1 -1
  263. package/dist/elements/authorization/ui/Authorization.js +18 -32
  264. package/dist/elements/authorization/ui/Authorization.js.map +1 -1
  265. package/dist/elements/authorization/ui/CcAuthorization.js +1 -3
  266. package/dist/elements/authorization/ui/CcAuthorization.js.map +1 -1
  267. package/dist/elements/authorization/ui/OAuth2Authorization.js +21 -50
  268. package/dist/elements/authorization/ui/OAuth2Authorization.js.map +1 -1
  269. package/dist/elements/authorization/ui/OidcAuthorization.js +4 -6
  270. package/dist/elements/authorization/ui/OidcAuthorization.js.map +1 -1
  271. package/dist/elements/code/HttpSnippets.js +9 -8
  272. package/dist/elements/code/HttpSnippets.js.map +1 -1
  273. package/dist/elements/dialog/ConfirmDelete.js +0 -12
  274. package/dist/elements/dialog/ConfirmDelete.js.map +1 -1
  275. package/dist/elements/dialog/Rename.js +0 -6
  276. package/dist/elements/dialog/Rename.js.map +1 -1
  277. package/dist/elements/environment/EnvironmentEditor.js +8 -11
  278. package/dist/elements/environment/EnvironmentEditor.js.map +1 -1
  279. package/dist/elements/environment/ServerEditor.js +7 -45
  280. package/dist/elements/environment/ServerEditor.js.map +1 -1
  281. package/dist/elements/environment/VariablesEditor.js +7 -12
  282. package/dist/elements/environment/VariablesEditor.js.map +1 -1
  283. package/dist/elements/files/ShareFile.js +19 -57
  284. package/dist/elements/files/ShareFile.js.map +1 -1
  285. package/dist/elements/har/HarViewer.js +6 -7
  286. package/dist/elements/har/HarViewer.js.map +1 -1
  287. package/dist/elements/highlight/MarkedHighlight.js +4 -56
  288. package/dist/elements/highlight/MarkedHighlight.js.map +1 -1
  289. package/dist/elements/highlight/PrismHighlight.js +9 -18
  290. package/dist/elements/highlight/PrismHighlight.js.map +1 -1
  291. package/dist/elements/highlight/PrismHighlighter.js +4 -6
  292. package/dist/elements/highlight/PrismHighlighter.js.map +1 -1
  293. package/dist/elements/http/BodyEditor.js +21 -33
  294. package/dist/elements/http/BodyEditor.js.map +1 -1
  295. package/dist/elements/http/BodyMultipartEditor.js +17 -18
  296. package/dist/elements/http/BodyMultipartEditor.js.map +1 -1
  297. package/dist/elements/http/BodyTextEditor.js +2 -15
  298. package/dist/elements/http/BodyTextEditor.js.map +1 -1
  299. package/dist/elements/http/BodyUrlEncodedEditor.js +20 -21
  300. package/dist/elements/http/BodyUrlEncodedEditor.js.map +1 -1
  301. package/dist/elements/http/HeadersForm.js +16 -17
  302. package/dist/elements/http/HeadersForm.js.map +1 -1
  303. package/dist/elements/http/HttpAssertions.js +8 -6
  304. package/dist/elements/http/HttpAssertions.js.map +1 -1
  305. package/dist/elements/http/LogBody.js +10 -21
  306. package/dist/elements/http/LogBody.js.map +1 -1
  307. package/dist/elements/http/LogHeaders.js +4 -23
  308. package/dist/elements/http/LogHeaders.js.map +1 -1
  309. package/dist/elements/http/LogTimings.js +11 -13
  310. package/dist/elements/http/LogTimings.js.map +1 -1
  311. package/dist/elements/http/RequestConfigElement.js +7 -4
  312. package/dist/elements/http/RequestConfigElement.js.map +1 -1
  313. package/dist/elements/http/RequestEditor.js +54 -88
  314. package/dist/elements/http/RequestEditor.js.map +1 -1
  315. package/dist/elements/http/RequestLog.js +9 -14
  316. package/dist/elements/http/RequestLog.js.map +1 -1
  317. package/dist/elements/http/UrlInput.js +15 -25
  318. package/dist/elements/http/UrlInput.js.map +1 -1
  319. package/dist/elements/http/UrlParamsForm.js +16 -13
  320. package/dist/elements/http/UrlParamsForm.js.map +1 -1
  321. package/dist/elements/layout/LayoutManager.js +16 -24
  322. package/dist/elements/layout/LayoutManager.js.map +1 -1
  323. package/dist/elements/layout/LayoutPanelElement.js +17 -23
  324. package/dist/elements/layout/LayoutPanelElement.js.map +1 -1
  325. package/dist/elements/layout/SplitItem.js +4 -12
  326. package/dist/elements/layout/SplitItem.js.map +1 -1
  327. package/dist/elements/layout/SplitLayout.js +18 -24
  328. package/dist/elements/layout/SplitLayout.js.map +1 -1
  329. package/dist/elements/layout/SplitPanel.js +10 -16
  330. package/dist/elements/layout/SplitPanel.js.map +1 -1
  331. package/dist/elements/layout/SplitView.js +17 -26
  332. package/dist/elements/layout/SplitView.js.map +1 -1
  333. package/dist/elements/navigation/AppNavigationElement.js +8 -47
  334. package/dist/elements/navigation/AppNavigationElement.js.map +1 -1
  335. package/dist/elements/navigation/AppNavigationItemElement.js +19 -24
  336. package/dist/elements/navigation/AppNavigationItemElement.js.map +1 -1
  337. package/dist/elements/project/HttpProjectRequest.js +0 -38
  338. package/dist/elements/project/HttpProjectRequest.js.map +1 -1
  339. package/dist/elements/project/HttpProjectRequestHistory.js +9 -35
  340. package/dist/elements/project/HttpProjectRequestHistory.js.map +1 -1
  341. package/dist/elements/project/ProjectNavigation.js +0 -4
  342. package/dist/elements/project/ProjectNavigation.js.map +1 -1
  343. package/dist/elements/project/ProjectRunReport.js +4 -15
  344. package/dist/elements/project/ProjectRunReport.js.map +1 -1
  345. package/dist/elements/project/ProjectRunner.js +2 -47
  346. package/dist/elements/project/ProjectRunner.js.map +1 -1
  347. package/dist/elements/schema-design/AssociationFormElement.js +0 -13
  348. package/dist/elements/schema-design/AssociationFormElement.js.map +1 -1
  349. package/dist/elements/schema-design/DataEntityEditorElement.js +0 -22
  350. package/dist/elements/schema-design/DataEntityEditorElement.js.map +1 -1
  351. package/dist/elements/schema-design/DataModelVisualizationElement.js +0 -16
  352. package/dist/elements/schema-design/DataModelVisualizationElement.js.map +1 -1
  353. package/dist/elements/schema-design/DataSchemaDocument.js +0 -36
  354. package/dist/elements/schema-design/DataSchemaDocument.js.map +1 -1
  355. package/dist/elements/schema-design/EntityFormElement.js +0 -18
  356. package/dist/elements/schema-design/EntityFormElement.js.map +1 -1
  357. package/dist/elements/schema-design/PropertyFormElement.js +0 -12
  358. package/dist/elements/schema-design/PropertyFormElement.js.map +1 -1
  359. package/dist/elements/schema-design/SchemaDesignNavigation.js +0 -9
  360. package/dist/elements/schema-design/SchemaDesignNavigation.js.map +1 -1
  361. package/dist/elements/schema-design/SchemaNamespaceSelector.js +0 -9
  362. package/dist/elements/schema-design/SchemaNamespaceSelector.js.map +1 -1
  363. package/dist/elements/user/UserAvatarElement.js +0 -9
  364. package/dist/elements/user/UserAvatarElement.js.map +1 -1
  365. package/dist/events/http-client/models/CertificatesEvents.js +2 -2
  366. package/dist/events/http-client/models/CertificatesEvents.js.map +1 -1
  367. package/dist/http-client/idb/Base.js +5 -10
  368. package/dist/http-client/idb/Base.js.map +1 -1
  369. package/dist/http-client/idb/LegacyMockedStore.js +0 -1
  370. package/dist/http-client/idb/LegacyMockedStore.js.map +1 -1
  371. package/dist/http-client/idb/MockedStore.js +3 -1
  372. package/dist/http-client/idb/MockedStore.js.map +1 -1
  373. package/dist/http-client/store/DataImportProcessor.js +0 -3
  374. package/dist/http-client/store/DataImportProcessor.js.map +1 -1
  375. package/dist/http-client/store/HttpClientIdbDatabase.js +8 -7
  376. package/dist/http-client/store/HttpClientIdbDatabase.js.map +1 -1
  377. package/dist/http-client/store/IdbThread.js +23 -20
  378. package/dist/http-client/store/IdbThread.js.map +1 -1
  379. package/dist/http-client/store/idb/IdbProjectUi.js +4 -1
  380. package/dist/http-client/store/idb/IdbProjectUi.js.map +1 -1
  381. package/dist/http-client/store/idb/IdbStore.js +0 -2
  382. package/dist/http-client/store/idb/IdbStore.js.map +1 -1
  383. package/dist/http-client/store/idb/IdbUrlHistory.js +4 -1
  384. package/dist/http-client/store/idb/IdbUrlHistory.js.map +1 -1
  385. package/dist/http-client/store/idb/IdbWsHistory.js +4 -1
  386. package/dist/http-client/store/idb/IdbWsHistory.js.map +1 -1
  387. package/dist/lib/chart/HttpHistoryChart.js +7 -8
  388. package/dist/lib/chart/HttpHistoryChart.js.map +1 -1
  389. package/dist/mixins/FileDropMixin.js +0 -1
  390. package/dist/mixins/FileDropMixin.js.map +1 -1
  391. package/dist/mixins/RenderableMixin.js +11 -15
  392. package/dist/mixins/RenderableMixin.js.map +1 -1
  393. package/dist/pages/ApplicationScreen.js +34 -55
  394. package/dist/pages/ApplicationScreen.js.map +1 -1
  395. package/dist/pages/api-client/ApiClient.screen.js +11 -20
  396. package/dist/pages/api-client/ApiClient.screen.js.map +1 -1
  397. package/dist/pages/api-client/Authenticate.screen.js +4 -6
  398. package/dist/pages/api-client/Authenticate.screen.js.map +1 -1
  399. package/dist/pages/api-client/StoreConfig.screen.js +21 -37
  400. package/dist/pages/api-client/StoreConfig.screen.js.map +1 -1
  401. package/dist/pages/api-client/Telemetry.screen.js +1 -2
  402. package/dist/pages/api-client/Telemetry.screen.js.map +1 -1
  403. package/dist/pages/api-client/pages/Files.page.js +6 -27
  404. package/dist/pages/api-client/pages/Files.page.js.map +1 -1
  405. package/dist/pages/api-client/pages/Settings.page.js +2 -4
  406. package/dist/pages/api-client/pages/Settings.page.js.map +1 -1
  407. package/dist/pages/api-client/pages/Trash.page.js +2 -13
  408. package/dist/pages/api-client/pages/Trash.page.js.map +1 -1
  409. package/dist/pages/demo/DemoPage.js +13 -13
  410. package/dist/pages/demo/DemoPage.js.map +1 -1
  411. package/dist/pages/http-project/HttpProject.screen.js +25 -35
  412. package/dist/pages/http-project/HttpProject.screen.js.map +1 -1
  413. package/dist/pages/schema-design/SchemaDesigner.screen.js +14 -27
  414. package/dist/pages/schema-design/SchemaDesigner.screen.js.map +1 -1
  415. package/dist/store/HttpStore.js +0 -3
  416. package/dist/store/HttpStore.js.map +1 -1
  417. package/dist/store/UserCache.js +5 -5
  418. package/dist/store/UserCache.js.map +1 -1
  419. package/dist/ui/UiElement.js +4 -5
  420. package/dist/ui/UiElement.js.map +1 -1
  421. package/dist/ui/button/SegmentedButton.js +9 -11
  422. package/dist/ui/button/SegmentedButton.js.map +1 -1
  423. package/dist/ui/button/SegmentedButtonsSet.js +6 -7
  424. package/dist/ui/button/SegmentedButtonsSet.js.map +1 -1
  425. package/dist/ui/button/UiButton.js +17 -39
  426. package/dist/ui/button/UiButton.js.map +1 -1
  427. package/dist/ui/button/UiIconButton.js +9 -35
  428. package/dist/ui/button/UiIconButton.js.map +1 -1
  429. package/dist/ui/chip/UiChip.js +9 -49
  430. package/dist/ui/chip/UiChip.js.map +1 -1
  431. package/dist/ui/collapse/UiCollapse.js +15 -20
  432. package/dist/ui/collapse/UiCollapse.js.map +1 -1
  433. package/dist/ui/controllers/ActionController.js +143 -144
  434. package/dist/ui/controllers/ActionController.js.map +1 -1
  435. package/dist/ui/controllers/RadioSelectionController.js +0 -1
  436. package/dist/ui/controllers/RadioSelectionController.js.map +1 -1
  437. package/dist/ui/date/DateTime.js +3 -3
  438. package/dist/ui/date/DateTime.js.map +1 -1
  439. package/dist/ui/dialog/UiDialog.js +14 -38
  440. package/dist/ui/dialog/UiDialog.js.map +1 -1
  441. package/dist/ui/effects/ripple.js +20 -18
  442. package/dist/ui/effects/ripple.js.map +1 -1
  443. package/dist/ui/effects/rippleDirective.js +6 -7
  444. package/dist/ui/effects/rippleDirective.js.map +1 -1
  445. package/dist/ui/icons/UiIcon.js +4 -3
  446. package/dist/ui/icons/UiIcon.js.map +1 -1
  447. package/dist/ui/input/CheckboxElement.js +12 -10
  448. package/dist/ui/input/CheckboxElement.js.map +1 -1
  449. package/dist/ui/input/CheckedElement.js +2 -13
  450. package/dist/ui/input/CheckedElement.js.map +1 -1
  451. package/dist/ui/input/Input.js +169 -234
  452. package/dist/ui/input/Input.js.map +1 -1
  453. package/dist/ui/input/RadioElement.js +13 -11
  454. package/dist/ui/input/RadioElement.js.map +1 -1
  455. package/dist/ui/input/SwitchElement.js +0 -18
  456. package/dist/ui/input/SwitchElement.js.map +1 -1
  457. package/dist/ui/input/TextAreaElement.js +0 -15
  458. package/dist/ui/input/TextAreaElement.js.map +1 -1
  459. package/dist/ui/list/DividerElement.js +5 -10
  460. package/dist/ui/list/DividerElement.js.map +1 -1
  461. package/dist/ui/list/UiDropdownList.js +7 -48
  462. package/dist/ui/list/UiDropdownList.js.map +1 -1
  463. package/dist/ui/list/UiList.js +3 -15
  464. package/dist/ui/list/UiList.js.map +1 -1
  465. package/dist/ui/list/UiListItem.js +4 -17
  466. package/dist/ui/list/UiListItem.js.map +1 -1
  467. package/dist/ui/list/UiListbox.js +0 -1
  468. package/dist/ui/list/UiListbox.js.map +1 -1
  469. package/dist/ui/notification/SnackNotifications.js +1 -2
  470. package/dist/ui/notification/SnackNotifications.js.map +1 -1
  471. package/dist/ui/notification/Snackbar.js +27 -51
  472. package/dist/ui/notification/Snackbar.js.map +1 -1
  473. package/dist/ui/progress/Range.js +24 -23
  474. package/dist/ui/progress/Range.js.map +1 -1
  475. package/dist/ui/progress/UiProgress.js +0 -11
  476. package/dist/ui/progress/UiProgress.js.map +1 -1
  477. package/dist/ui/table/DataTable.js +7 -12
  478. package/dist/ui/table/DataTable.js.map +1 -1
  479. package/dist/ui/tabs/UiTab.js +24 -25
  480. package/dist/ui/tabs/UiTab.js.map +1 -1
  481. package/dist/ui/tabs/UiTabs.js +21 -35
  482. package/dist/ui/tabs/UiTabs.js.map +1 -1
  483. package/dist/visualization/elements/VizWorkspaceElement.js +12 -21
  484. package/dist/visualization/elements/VizWorkspaceElement.js.map +1 -1
  485. package/dist/visualization/lib/AssociationAnchors.js +16 -28
  486. package/dist/visualization/lib/AssociationAnchors.js.map +1 -1
  487. package/dist/visualization/lib/Point.js +0 -2
  488. package/dist/visualization/lib/Point.js.map +1 -1
  489. package/dist/visualization/lib/SelectionManager.js +10 -11
  490. package/dist/visualization/lib/SelectionManager.js.map +1 -1
  491. package/dist/visualization/lib/WorkspaceAlignment.js +0 -1
  492. package/dist/visualization/lib/WorkspaceAlignment.js.map +1 -1
  493. package/dist/visualization/lib/WorkspaceDebugging.js +5 -8
  494. package/dist/visualization/lib/WorkspaceDebugging.js.map +1 -1
  495. package/dist/visualization/lib/WorkspaceEdges.js +17 -19
  496. package/dist/visualization/lib/WorkspaceEdges.js.map +1 -1
  497. package/dist/visualization/lib/WorkspaceGestures.js +0 -3
  498. package/dist/visualization/lib/WorkspaceGestures.js.map +1 -1
  499. package/dist/visualization/lib/WorkspaceSizing.js +4 -6
  500. package/dist/visualization/lib/WorkspaceSizing.js.map +1 -1
  501. package/dist/visualization/lib/lines/RectilinearLine.js +8 -34
  502. package/dist/visualization/lib/lines/RectilinearLine.js.map +1 -1
  503. package/dist/visualization/lib/tips/RectilinearTip.js +0 -1
  504. package/dist/visualization/lib/tips/RectilinearTip.js.map +1 -1
  505. package/dist/visualization/lib/tips/TipArtist.js +0 -3
  506. package/dist/visualization/lib/tips/TipArtist.js.map +1 -1
  507. package/dist/visualization/plugin/dnd/DragAndDropPlugin.js +3 -5
  508. package/dist/visualization/plugin/dnd/DragAndDropPlugin.js.map +1 -1
  509. package/dist/visualization/plugin/group-selection/GroupSelection.js +19 -19
  510. package/dist/visualization/plugin/group-selection/GroupSelection.js.map +1 -1
  511. package/dist/visualization/plugin/positioning/WorkspaceLayout.js +21 -38
  512. package/dist/visualization/plugin/positioning/WorkspaceLayout.js.map +1 -1
  513. package/package.json +3 -2
  514. package/tsconfig.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"DataImportProcessor.js","sourceRoot":"","sources":["../../../src/http-client/store/DataImportProcessor.ts"],"names":[],"mappings":"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","sourcesContent":["import { HttpProject, HttpProjectKind, IHttpProject, LegacyDataExportToApiProject, Project, PostmanDataTransformer, FileAddOptions } from \"@api-client/core/build/browser.js\";\nimport { ArcExportObject, ArcPouchTransformer, ExportArcProjects } from \"@api-client/core/build/legacy.js\";\nimport { StoreBindings } from \"../../bindings/base/StoreBindings.js\";\n\nexport interface IAnalyzeResult {\n /**\n * Indicates that there was an error during import analysis.\n */\n error?: boolean;\n /**\n * Error message.\n */\n message?: string;\n\n /**\n * The source application for the file.\n */\n source?: 'arc' | 'postman' | 'api-client';\n /**\n * The name of the project to import\n */\n name?: string;\n /**\n * Schema version, if any.\n */\n version?: string;\n}\n\nconst PostmanV20Schema = 'https://schema.getpostman.com/json/collection/v2.0.0/collection.json';\nconst PostmanV21Schema = 'https://schema.getpostman.com/json/collection/v2.1.0/collection.json';\n\n/**\n * A helper class that controls data import logic.\n */\nexport class DataImportProcessor {\n importData: unknown | undefined;\n\n analysis?: IAnalyzeResult;\n\n #abortCtrl: AbortController;\n\n signal: AbortSignal;\n\n constructor() {\n this.#abortCtrl = new AbortController();\n this.signal = this.#abortCtrl.signal;\n }\n\n abort(): void {\n this.#abortCtrl.abort();\n }\n\n async fromFile(file: File): Promise<IAnalyzeResult> {\n this.importData = undefined;\n this.analysis = undefined;\n\n const contents = await file.text();\n let data: unknown | undefined;\n try {\n data = JSON.parse(contents);\n } catch (e) {\n // ...\n }\n return this.analyzeData(data);\n }\n\n async importProject(db: StoreBindings, space: string, parent?: string): Promise<void> {\n const { importData, analysis } = this;\n if (!importData || !analysis) {\n throw new Error(`You need to initialize import first.`);\n }\n if (analysis.error) {\n throw new Error(`The import data are invalid.`);\n }\n switch (analysis.source) {\n case 'arc': this.importArcProject(importData as ArcExportObject, db, space, parent); break;\n case 'api-client': this.importHttpProject(importData as IHttpProject, db, space, parent); break;\n case 'postman': this.importPostmanProject(importData, analysis, db, space, parent); break;\n default: throw new Error(`Unknown import source: ${analysis.source}.`);\n }\n }\n\n protected analyzeData(data: unknown): IAnalyzeResult {\n this.importData = data;\n let analysis: IAnalyzeResult;\n\n if (!data) {\n analysis = {\n error: true,\n message: 'Unable to parse the input file. Not a JSON file.'\n };\n } else if (this.isHttpProject(data)) {\n analysis = this.analyzeHttpProject(data);\n } else if (this.isArcProject(data)) {\n analysis = this.analyzeArcProject(data);\n } else if (this.isPostmanCollection(data)) {\n analysis = this.analyzePostman(data);\n } else {\n analysis = {\n error: true,\n message: 'Unrecognized file. Expected ARC, Postman, or HTTP Client export.'\n };\n }\n this.analysis = analysis;\n return analysis;\n }\n\n /**\n * Checks whether the passed data contain Postman collection (v2 or v2.1).\n */\n protected isPostmanCollection(data: unknown): boolean {\n const typed = data as { info: { _postman_id: string, name: string, schema: string } }\n if (!typed.info || !typed.info.schema) {\n return false;\n }\n const { schema } = typed.info;\n return [PostmanV20Schema, PostmanV21Schema].includes(schema);\n }\n\n protected analyzePostman(data: unknown): IAnalyzeResult {\n const typed = data as { info: { _postman_id: string, name: string, schema: string } }\n const { schema, name } = typed.info;\n return {\n name: name || 'Unnamed collection',\n source: 'postman',\n version: schema === PostmanV20Schema ? 'v2' : 'v2.1'\n }\n }\n\n /**\n * Checks whether the passed data contain ARC's project\n */\n protected isArcProject(data: unknown): boolean {\n const typed = data as ArcExportObject;\n if (typed.kind !== 'ARC#Project') {\n return false;\n }\n return !!typed.projects && typed.projects.length === 1;\n }\n\n protected analyzeArcProject(data: unknown): IAnalyzeResult {\n const typed = data as ArcExportObject;\n const [project] = typed.projects as ExportArcProjects[];\n return {\n source: 'arc',\n name: project.name,\n }\n }\n\n /**\n * Checks whether the data is an HttpProject.\n */\n protected isHttpProject(data: unknown): boolean {\n const typed = data as IHttpProject;\n return typed.kind === HttpProjectKind;\n }\n\n protected analyzeHttpProject(data: unknown): IAnalyzeResult {\n const typed = data as IHttpProject;\n return {\n source: 'api-client',\n name: typed.info.name || 'Unnamed project',\n }\n }\n\n protected async importArcProject(importData: ArcExportObject, db: StoreBindings, space: string, parent?: string): Promise<void> {\n const transformer = new ArcPouchTransformer(importData);\n const normalized = await transformer.transform();\n const processor = new LegacyDataExportToApiProject();\n const projects = await processor.readProjects(normalized);\n const [data] = projects;\n this.upsert(data, db, space, parent);\n }\n\n protected async importHttpProject(importData: IHttpProject, db: StoreBindings, space: string, parent?: string): Promise<void> {\n const data = new HttpProject(importData);\n this.upsert(data, db, space, parent);\n }\n\n protected async importPostmanProject(importData: unknown, analysis: IAnalyzeResult, db: StoreBindings, space: string, parent?: string): Promise<void> {\n const data = await PostmanDataTransformer.transform(importData);\n const project = Array.isArray(data) ? data[0] : data;\n this.upsert(project, db, space, parent);\n }\n\n protected async upsert(data: HttpProject, db: StoreBindings, space: string, parent?: string): Promise<void> {\n const meta = Project.fromProject(data, space);\n const opts: FileAddOptions = {};\n if (parent) {\n opts.parent = parent;\n }\n // meta file\n const file = await db.files.add(meta.toJSON(), opts);\n // file contents\n await db.media.add(file.key, data.toJSON(), 'application/json');\n }\n}\n"]}
1
+ {"version":3,"file":"DataImportProcessor.js","sourceRoot":"","sources":["../../../src/http-client/store/DataImportProcessor.ts"],"names":[],"mappings":"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","sourcesContent":["import { HttpProject, HttpProjectKind, IHttpProject, LegacyDataExportToApiProject, Project, PostmanDataTransformer, FileAddOptions } from \"@api-client/core/build/browser.js\";\nimport { ArcExportObject, ArcPouchTransformer, ExportArcProjects } from \"@api-client/core/build/legacy.js\";\nimport { StoreBindings } from \"../../bindings/base/StoreBindings.js\";\n\nexport interface IAnalyzeResult {\n /**\n * Indicates that there was an error during import analysis.\n */\n error?: boolean;\n /**\n * Error message.\n */\n message?: string;\n\n /**\n * The source application for the file.\n */\n source?: 'arc' | 'postman' | 'api-client';\n /**\n * The name of the project to import\n */\n name?: string;\n /**\n * Schema version, if any.\n */\n version?: string;\n}\n\nconst PostmanV20Schema = 'https://schema.getpostman.com/json/collection/v2.0.0/collection.json';\nconst PostmanV21Schema = 'https://schema.getpostman.com/json/collection/v2.1.0/collection.json';\n\n/**\n * A helper class that controls data import logic.\n */\nexport class DataImportProcessor {\n importData: unknown | undefined;\n\n analysis?: IAnalyzeResult;\n\n #abortCtrl: AbortController;\n\n signal: AbortSignal;\n\n constructor() {\n this.#abortCtrl = new AbortController();\n this.signal = this.#abortCtrl.signal;\n }\n\n abort(): void {\n this.#abortCtrl.abort();\n }\n\n async fromFile(file: File): Promise<IAnalyzeResult> {\n this.importData = undefined;\n this.analysis = undefined;\n\n const contents = await file.text();\n let data: unknown | undefined;\n try {\n data = JSON.parse(contents);\n } catch (e) {\n // ...\n }\n return this.analyzeData(data);\n }\n\n async importProject(db: StoreBindings, space: string, parent?: string): Promise<void> {\n const { importData, analysis } = this;\n if (!importData || !analysis) {\n throw new Error(`You need to initialize import first.`);\n }\n if (analysis.error) {\n throw new Error(`The import data are invalid.`);\n }\n switch (analysis.source) {\n case 'arc': this.importArcProject(importData as ArcExportObject, db, space, parent); break;\n case 'api-client': this.importHttpProject(importData as IHttpProject, db, space, parent); break;\n case 'postman': this.importPostmanProject(importData, analysis, db, space, parent); break;\n default: throw new Error(`Unknown import source: ${analysis.source}.`);\n }\n }\n\n protected analyzeData(data: unknown): IAnalyzeResult {\n this.importData = data;\n let analysis: IAnalyzeResult;\n\n if (!data) {\n analysis = {\n error: true,\n message: 'Unable to parse the input file. Not a JSON file.'\n };\n } else if (this.isHttpProject(data)) {\n analysis = this.analyzeHttpProject(data);\n } else if (this.isArcProject(data)) {\n analysis = this.analyzeArcProject(data);\n } else if (this.isPostmanCollection(data)) {\n analysis = this.analyzePostman(data);\n } else {\n analysis = {\n error: true,\n message: 'Unrecognized file. Expected ARC, Postman, or HTTP Client export.'\n };\n }\n this.analysis = analysis;\n return analysis;\n }\n\n /**\n * Checks whether the passed data contain Postman collection (v2 or v2.1).\n */\n protected isPostmanCollection(data: unknown): boolean {\n const typed = data as { info: { _postman_id: string, name: string, schema: string } }\n if (!typed.info || !typed.info.schema) {\n return false;\n }\n const { schema } = typed.info;\n return [PostmanV20Schema, PostmanV21Schema].includes(schema);\n }\n\n protected analyzePostman(data: unknown): IAnalyzeResult {\n const typed = data as { info: { _postman_id: string, name: string, schema: string } }\n const { schema, name } = typed.info;\n return {\n name: name || 'Unnamed collection',\n source: 'postman',\n version: schema === PostmanV20Schema ? 'v2' : 'v2.1'\n }\n }\n\n /**\n * Checks whether the passed data contain ARC's project\n */\n protected isArcProject(data: unknown): boolean {\n const typed = data as ArcExportObject;\n if (typed.kind !== 'ARC#Project') {\n return false;\n }\n return !!typed.projects && typed.projects.length === 1;\n }\n\n protected analyzeArcProject(data: unknown): IAnalyzeResult {\n const typed = data as ArcExportObject;\n const [project] = typed.projects as ExportArcProjects[];\n return {\n source: 'arc',\n name: project.name,\n }\n }\n\n /**\n * Checks whether the data is an HttpProject.\n */\n protected isHttpProject(data: unknown): boolean {\n const typed = data as IHttpProject;\n return typed.kind === HttpProjectKind;\n }\n\n protected analyzeHttpProject(data: unknown): IAnalyzeResult {\n const typed = data as IHttpProject;\n return {\n source: 'api-client',\n name: typed.info.name || 'Unnamed project',\n }\n }\n\n protected async importArcProject(importData: ArcExportObject, db: StoreBindings, space: string, parent?: string): Promise<void> {\n const transformer = new ArcPouchTransformer(importData);\n const normalized = await transformer.transform();\n const processor = new LegacyDataExportToApiProject();\n const projects = await processor.readProjects(normalized);\n const [data] = projects;\n this.upsert(data, db, space, parent);\n }\n\n protected async importHttpProject(importData: IHttpProject, db: StoreBindings, space: string, parent?: string): Promise<void> {\n const data = new HttpProject(importData);\n this.upsert(data, db, space, parent);\n }\n\n protected async importPostmanProject(importData: unknown, analysis: IAnalyzeResult, db: StoreBindings, space: string, parent?: string): Promise<void> {\n const data = await PostmanDataTransformer.transform(importData);\n const project = Array.isArray(data) ? data[0] : data;\n this.upsert(project, db, space, parent);\n }\n\n protected async upsert(data: HttpProject, db: StoreBindings, space: string, parent?: string): Promise<void> {\n const meta = Project.fromProject(data, space);\n const opts: FileAddOptions = {};\n if (parent) {\n opts.parent = parent;\n }\n // meta file\n const file = await db.files.add(meta.toJSON(), opts);\n // file contents\n await db.media.add(file.key, data.toJSON(), 'application/json');\n }\n}\n"]}
@@ -7,12 +7,14 @@ import { IdbProjectUi } from './idb/IdbProjectUi.js';
7
7
  * The implementation of the API Client app database in IDB.
8
8
  */
9
9
  export class HttpClientIdbDatabase {
10
- /**
11
- * The default limit of items returned by the list operation.
12
- * @default 35
13
- */
14
- defaultLimit = 35;
15
- _db;
10
+ constructor() {
11
+ /**
12
+ * The default limit of items returned by the list operation.
13
+ * @default 35
14
+ */
15
+ this.defaultLimit = 35;
16
+ this.cursor = new Cursor();
17
+ }
16
18
  /**
17
19
  * The reference to the currently opened database.
18
20
  * This throws when the `initialize()` method wasn't called.
@@ -73,7 +75,6 @@ export class HttpClientIdbDatabase {
73
75
  this.db.close();
74
76
  this._db = undefined;
75
77
  }
76
- cursor = new Cursor();
77
78
  async readListState(source = {}) {
78
79
  if (source.cursor) {
79
80
  return this.cursor.decodeCursor(source.cursor);
@@ -1 +1 @@
1
- {"version":3,"file":"HttpClientIdbDatabase.js","sourceRoot":"","sources":["../../../src/http-client/store/HttpClientIdbDatabase.ts"],"names":[],"mappings":"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","sourcesContent":["import { openDB, IDBPDatabase, IDBPObjectStore } from 'idb/with-async-ittr';\nimport { ContextListOptions } from '@api-client/core/build/browser.js';\nimport { HttpClientPersistance } from \"./HttpClientPersistance.js\";\nimport { Cursor } from './Cursor.js';\nimport { IListState } from './State.js';\nimport { HttpClientDB, SpaceStoreNames, StoreName } from './types.js';\nimport { IdbUrlHistory } from './idb/IdbUrlHistory.js';\nimport { IdbWsHistory } from './idb/IdbWsHistory.js';\nimport { IdbProjectUi } from './idb/IdbProjectUi.js';\n\n/**\n * The implementation of the API Client app database in IDB.\n */\nexport class HttpClientIdbDatabase implements HttpClientPersistance {\n /**\n * The default limit of items returned by the list operation.\n * @default 35\n */\n defaultLimit = 35;\n\n protected _db?: IDBPDatabase<HttpClientDB>;\n\n /**\n * The reference to the currently opened database.\n * This throws when the `initialize()` method wasn't called.\n */\n get db(): IDBPDatabase<HttpClientDB> {\n const db = this._db;\n if (!db) {\n throw new Error(`Attempted to access the database before opening a connection.`);\n }\n return db;\n }\n \n #urlHistory?: IdbUrlHistory;\n\n /**\n * File metadata store.\n */\n get urlHistory(): IdbUrlHistory {\n const ref = this.#urlHistory;\n if (!ref) {\n throw new Error(`Store not initialized.`);\n }\n return ref;\n }\n\n #wsHistory?: IdbWsHistory;\n\n /**\n * File metadata store.\n */\n get wsHistory(): IdbWsHistory {\n const ref = this.#wsHistory;\n if (!ref) {\n throw new Error(`Store not initialized.`);\n }\n return ref;\n }\n\n #projectUi?: IdbProjectUi;\n\n /**\n * File metadata store.\n */\n get projectUi(): IdbProjectUi {\n const ref = this.#projectUi;\n if (!ref) {\n throw new Error(`Store not initialized.`);\n }\n return ref;\n }\n\n async initialize(): Promise<void> {\n const db = await this.open();\n\n this.#urlHistory = new IdbUrlHistory(this, db);\n this.#wsHistory = new IdbWsHistory(this, db);\n this.#projectUi = new IdbProjectUi(this, db);\n \n await this.#urlHistory.warmup();\n await this.#wsHistory.warmup();\n await this.#projectUi.warmup();\n }\n\n async cleanup(): Promise<void> {\n await this.urlHistory.cleanup();\n await this.wsHistory.cleanup();\n await this.projectUi.cleanup();\n\n this.db.close();\n this._db = undefined;\n }\n\n cursor = new Cursor();\n\n async readListState(source: ContextListOptions = {}): Promise<IListState> {\n if (source.cursor) {\n return this.cursor.decodeCursor(source.cursor);\n }\n return { ...source } as IListState;\n }\n\n /**\n * Creates a database cursor when there are results.\n * This sets `skip` and `lastKey` parameters.\n * \n * @param state The last list state object\n * @param results The read results.\n * @returns A cursor to be used with pagination.\n */\n async createCursorIfNeeded(state: IListState, results: unknown[]): Promise<string | undefined> {\n if (!results.length) {\n return undefined;\n }\n\n const copy = { ...state } as IListState;\n const { key } = (results[results.length - 1] as { key: string });\n copy.skip = 1;\n copy.lastKey = key;\n return this.cursor.encodeCursor(copy);\n }\n\n /**\n * Opens the ARC store.\n * @returns The reference to the database\n */\n async open(): Promise<IDBPDatabase<HttpClientDB>> {\n if (this._db) {\n return this._db;\n }\n const dbResult = await openDB<HttpClientDB>('HttpClient', 1, {\n upgrade: (db) => {\n const stores: StoreName[] = [\n 'UrlHistory', 'WsHistory',\n 'AuthCache', 'Hosts', 'Environments', \n 'ProjectUi', \n ];\n const names = db.objectStoreNames;\n for (const name of stores) {\n const exists = names.contains(name);\n const fnName = `_${name}UpgradeHandler` as unknown as '_UrlHistoryUpgradeHandler' | '_WsHistoryUpgradeHandler' | '_ProjectUiUpgradeHandler';\n if (typeof this[fnName] === 'function') {\n this[fnName](db, exists);\n } else if (!exists) {\n this._defaultUpgradeHandler(name as SpaceStoreNames, db, exists);\n }\n }\n },\n });\n this._db = dbResult;\n return dbResult;\n }\n\n /**\n * Creates a default store where the stored object is identified by the `data.key` path.\n * @param name The store name to create\n * @param db The handler to the database\n */\n private _defaultUpgradeHandler(name: SpaceStoreNames, db: IDBPDatabase<HttpClientDB>, storeExists: boolean): void {\n if (storeExists) {\n return;\n }\n const store = db.createObjectStore(name, { keyPath: 'data.key' });\n const typed = store as IDBPObjectStore<HttpClientDB, SpaceStoreNames[], SpaceStoreNames, 'versionchange'>;\n typed.createIndex('space', 'meta.space', { unique: false });\n }\n\n private _UrlHistoryUpgradeHandler(db: IDBPDatabase<HttpClientDB>, storeExists: boolean): void {\n if (storeExists) {\n return;\n }\n db.createObjectStore('UrlHistory', { keyPath: 'key' });\n }\n\n private _WsHistoryUpgradeHandler(db: IDBPDatabase<HttpClientDB>, storeExists: boolean): void {\n if (storeExists) {\n return;\n }\n db.createObjectStore('WsHistory', { keyPath: 'key' });\n }\n\n private _ProjectUiUpgradeHandler(db: IDBPDatabase<HttpClientDB>, storeExists: boolean): void {\n if (storeExists) {\n return;\n }\n const store = db.createObjectStore('ProjectUi', { keyPath: ['meta.project', 'meta.key'] });\n const typed = store as IDBPObjectStore<HttpClientDB, ['ProjectUi'], 'ProjectUi', 'versionchange'>;\n typed.createIndex('project', 'meta.project', { unique: false });\n }\n}\n"]}
1
+ {"version":3,"file":"HttpClientIdbDatabase.js","sourceRoot":"","sources":["../../../src/http-client/store/HttpClientIdbDatabase.ts"],"names":[],"mappings":"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","sourcesContent":["import { openDB, IDBPDatabase, IDBPObjectStore } from 'idb/with-async-ittr';\nimport { ContextListOptions } from '@api-client/core/build/browser.js';\nimport { HttpClientPersistance } from \"./HttpClientPersistance.js\";\nimport { Cursor } from './Cursor.js';\nimport { IListState } from './State.js';\nimport { HttpClientDB, SpaceStoreNames, StoreName } from './types.js';\nimport { IdbUrlHistory } from './idb/IdbUrlHistory.js';\nimport { IdbWsHistory } from './idb/IdbWsHistory.js';\nimport { IdbProjectUi } from './idb/IdbProjectUi.js';\n\n/**\n * The implementation of the API Client app database in IDB.\n */\nexport class HttpClientIdbDatabase implements HttpClientPersistance {\n /**\n * The default limit of items returned by the list operation.\n * @default 35\n */\n defaultLimit = 35;\n\n protected _db?: IDBPDatabase<HttpClientDB>;\n\n /**\n * The reference to the currently opened database.\n * This throws when the `initialize()` method wasn't called.\n */\n get db(): IDBPDatabase<HttpClientDB> {\n const db = this._db;\n if (!db) {\n throw new Error(`Attempted to access the database before opening a connection.`);\n }\n return db;\n }\n \n #urlHistory?: IdbUrlHistory;\n\n /**\n * File metadata store.\n */\n get urlHistory(): IdbUrlHistory {\n const ref = this.#urlHistory;\n if (!ref) {\n throw new Error(`Store not initialized.`);\n }\n return ref;\n }\n\n #wsHistory?: IdbWsHistory;\n\n /**\n * File metadata store.\n */\n get wsHistory(): IdbWsHistory {\n const ref = this.#wsHistory;\n if (!ref) {\n throw new Error(`Store not initialized.`);\n }\n return ref;\n }\n\n #projectUi?: IdbProjectUi;\n\n /**\n * File metadata store.\n */\n get projectUi(): IdbProjectUi {\n const ref = this.#projectUi;\n if (!ref) {\n throw new Error(`Store not initialized.`);\n }\n return ref;\n }\n\n async initialize(): Promise<void> {\n const db = await this.open();\n\n this.#urlHistory = new IdbUrlHistory(this, db);\n this.#wsHistory = new IdbWsHistory(this, db);\n this.#projectUi = new IdbProjectUi(this, db);\n \n await this.#urlHistory.warmup();\n await this.#wsHistory.warmup();\n await this.#projectUi.warmup();\n }\n\n async cleanup(): Promise<void> {\n await this.urlHistory.cleanup();\n await this.wsHistory.cleanup();\n await this.projectUi.cleanup();\n\n this.db.close();\n this._db = undefined;\n }\n\n cursor = new Cursor();\n\n async readListState(source: ContextListOptions = {}): Promise<IListState> {\n if (source.cursor) {\n return this.cursor.decodeCursor(source.cursor);\n }\n return { ...source } as IListState;\n }\n\n /**\n * Creates a database cursor when there are results.\n * This sets `skip` and `lastKey` parameters.\n * \n * @param state The last list state object\n * @param results The read results.\n * @returns A cursor to be used with pagination.\n */\n async createCursorIfNeeded(state: IListState, results: unknown[]): Promise<string | undefined> {\n if (!results.length) {\n return undefined;\n }\n\n const copy = { ...state } as IListState;\n const { key } = (results[results.length - 1] as { key: string });\n copy.skip = 1;\n copy.lastKey = key;\n return this.cursor.encodeCursor(copy);\n }\n\n /**\n * Opens the ARC store.\n * @returns The reference to the database\n */\n async open(): Promise<IDBPDatabase<HttpClientDB>> {\n if (this._db) {\n return this._db;\n }\n const dbResult = await openDB<HttpClientDB>('HttpClient', 1, {\n upgrade: (db) => {\n const stores: StoreName[] = [\n 'UrlHistory', 'WsHistory',\n 'AuthCache', 'Hosts', 'Environments', \n 'ProjectUi', \n ];\n const names = db.objectStoreNames;\n for (const name of stores) {\n const exists = names.contains(name);\n const fnName = `_${name}UpgradeHandler` as unknown as '_UrlHistoryUpgradeHandler' | '_WsHistoryUpgradeHandler' | '_ProjectUiUpgradeHandler';\n if (typeof this[fnName] === 'function') {\n this[fnName](db, exists);\n } else if (!exists) {\n this._defaultUpgradeHandler(name as SpaceStoreNames, db, exists);\n }\n }\n },\n });\n this._db = dbResult;\n return dbResult;\n }\n\n /**\n * Creates a default store where the stored object is identified by the `data.key` path.\n * @param name The store name to create\n * @param db The handler to the database\n */\n private _defaultUpgradeHandler(name: SpaceStoreNames, db: IDBPDatabase<HttpClientDB>, storeExists: boolean): void {\n if (storeExists) {\n return;\n }\n const store = db.createObjectStore(name, { keyPath: 'data.key' });\n const typed = store as IDBPObjectStore<HttpClientDB, SpaceStoreNames[], SpaceStoreNames, 'versionchange'>;\n typed.createIndex('space', 'meta.space', { unique: false });\n }\n\n private _UrlHistoryUpgradeHandler(db: IDBPDatabase<HttpClientDB>, storeExists: boolean): void {\n if (storeExists) {\n return;\n }\n db.createObjectStore('UrlHistory', { keyPath: 'key' });\n }\n\n private _WsHistoryUpgradeHandler(db: IDBPDatabase<HttpClientDB>, storeExists: boolean): void {\n if (storeExists) {\n return;\n }\n db.createObjectStore('WsHistory', { keyPath: 'key' });\n }\n\n private _ProjectUiUpgradeHandler(db: IDBPDatabase<HttpClientDB>, storeExists: boolean): void {\n if (storeExists) {\n return;\n }\n const store = db.createObjectStore('ProjectUi', { keyPath: ['meta.project', 'meta.key'] });\n const typed = store as IDBPObjectStore<HttpClientDB, ['ProjectUi'], 'ProjectUi', 'versionchange'>;\n typed.createIndex('project', 'meta.project', { unique: false });\n }\n}\n"]}
@@ -4,29 +4,32 @@ import { HttpClientIdbDatabase } from "./HttpClientIdbDatabase.js";
4
4
  * A logic running in the shared worker that accesses datastore for API Client.
5
5
  */
6
6
  export class IdbThread extends SharedWorkerThread {
7
- store = new HttpClientIdbDatabase();
7
+ constructor() {
8
+ super(...arguments);
9
+ this.store = new HttpClientIdbDatabase();
10
+ this.wsHistory = {
11
+ add: (url) => this.store.wsHistory.add(url),
12
+ query: (query) => this.store.wsHistory.query(query),
13
+ delete: (url) => this.store.wsHistory.delete(url),
14
+ clear: () => this.store.wsHistory.clear(),
15
+ };
16
+ this.urlHistory = {
17
+ add: (url) => this.store.urlHistory.add(url),
18
+ query: (query) => this.store.urlHistory.query(query),
19
+ delete: (url) => this.store.urlHistory.delete(url),
20
+ clear: () => this.store.urlHistory.clear(),
21
+ };
22
+ this.projectUi = {
23
+ clear: (key) => this.store.projectUi.clear(key),
24
+ set: (pid, key, meta) => this.store.projectUi.set(pid, key, meta),
25
+ get: (pid, key) => this.store.projectUi.get(pid, key),
26
+ getBulk: (pid, keys) => this.store.projectUi.getBulk(pid, keys),
27
+ delete: (pid, key) => this.store.projectUi.delete(pid, key),
28
+ };
29
+ }
8
30
  async initializeStore() {
9
31
  await this.store.initialize();
10
32
  }
11
- wsHistory = {
12
- add: (url) => this.store.wsHistory.add(url),
13
- query: (query) => this.store.wsHistory.query(query),
14
- delete: (url) => this.store.wsHistory.delete(url),
15
- clear: () => this.store.wsHistory.clear(),
16
- };
17
- urlHistory = {
18
- add: (url) => this.store.urlHistory.add(url),
19
- query: (query) => this.store.urlHistory.query(query),
20
- delete: (url) => this.store.urlHistory.delete(url),
21
- clear: () => this.store.urlHistory.clear(),
22
- };
23
- projectUi = {
24
- clear: (key) => this.store.projectUi.clear(key),
25
- set: (pid, key, meta) => this.store.projectUi.set(pid, key, meta),
26
- get: (pid, key) => this.store.projectUi.get(pid, key),
27
- getBulk: (pid, keys) => this.store.projectUi.getBulk(pid, keys),
28
- delete: (pid, key) => this.store.projectUi.delete(pid, key),
29
- };
30
33
  }
31
34
  // Probably this should go to a separate file...
32
35
  const instance = new IdbThread();
@@ -1 +1 @@
1
- {"version":3,"file":"IdbThread.js","sourceRoot":"","sources":["../../../src/http-client/store/IdbThread.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,kBAAkB;IAC/C,KAAK,GAAG,IAAI,qBAAqB,EAAE,CAAC;IAEpC,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;IAChC,CAAC;IAED,SAAS,GAAG;QACV,GAAG,EAAE,CAAC,GAAW,EAAiB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;QAClE,KAAK,EAAE,CAAC,KAAa,EAAiC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;QAC1F,MAAM,EAAE,CAAC,GAAW,EAAgC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;QACvF,KAAK,EAAE,GAAkB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE;KACzD,CAAA;IAED,UAAU,GAAG;QACX,GAAG,EAAE,CAAC,GAAW,EAAiB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;QACnE,KAAK,EAAE,CAAC,KAAa,EAAiC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;QAC3F,MAAM,EAAE,CAAC,GAAW,EAAgC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC;QACxF,KAAK,EAAE,GAAkB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE;KAC1D,CAAA;IAED,SAAS,GAAG;QACV,KAAK,EAAE,CAAC,GAAW,EAAgC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;QACrF,GAAG,EAAE,CAAC,GAAW,EAAE,GAAW,EAAE,IAAoB,EAAgD,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;QAC/I,GAAG,EAAE,CAAC,GAAW,EAAE,GAAW,EAAuC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;QAC1G,OAAO,EAAE,CAAC,GAAW,EAAE,IAAc,EAAiD,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;QAChI,MAAM,EAAE,CAAC,GAAW,EAAE,GAAW,EAAgC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC;KAC1G,CAAA;CACF;AAED,gDAAgD;AAChD,MAAM,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;AACjC,QAAQ,CAAC,UAAU,EAAE,CAAC","sourcesContent":["import { \n ContextChangeRecord, ContextDeleteRecord, \n IBulkOperationResult, \n IQueryResponse, IRequestUiMeta, IUrl\n} from \"@api-client/core/build/browser.js\";\nimport { HttpClientStore } from \"./HttpClientStore.js\";\nimport { SharedWorkerThread } from \"../../bindings/base/SharedWorkerThread.js\";\nimport { HttpClientIdbDatabase } from \"./HttpClientIdbDatabase.js\";\n\n/**\n * A logic running in the shared worker that accesses datastore for API Client.\n */\nexport class IdbThread extends SharedWorkerThread implements HttpClientStore {\n store = new HttpClientIdbDatabase();\n\n async initializeStore(): Promise<void> {\n await this.store.initialize();\n }\n\n wsHistory = {\n add: (url: string): Promise<IUrl> => this.store.wsHistory.add(url),\n query: (query: string): Promise<IQueryResponse<IUrl>> => this.store.wsHistory.query(query),\n delete: (url: string): Promise<ContextDeleteRecord> => this.store.wsHistory.delete(url),\n clear: (): Promise<void> => this.store.wsHistory.clear(),\n }\n\n urlHistory = {\n add: (url: string): Promise<IUrl> => this.store.urlHistory.add(url),\n query: (query: string): Promise<IQueryResponse<IUrl>> => this.store.urlHistory.query(query),\n delete: (url: string): Promise<ContextDeleteRecord> => this.store.urlHistory.delete(url),\n clear: (): Promise<void> => this.store.urlHistory.clear(),\n }\n\n projectUi = {\n clear: (key: string): Promise<ContextDeleteRecord> => this.store.projectUi.clear(key),\n set: (pid: string, key: string, meta: IRequestUiMeta): Promise<ContextChangeRecord<IRequestUiMeta>> => this.store.projectUi.set(pid, key, meta),\n get: (pid: string, key: string): Promise<IRequestUiMeta | undefined> => this.store.projectUi.get(pid, key),\n getBulk: (pid: string, keys: string[]): Promise<IBulkOperationResult<IRequestUiMeta>> => this.store.projectUi.getBulk(pid, keys),\n delete: (pid: string, key: string): Promise<ContextDeleteRecord> => this.store.projectUi.delete(pid, key),\n }\n}\n\n// Probably this should go to a separate file...\nconst instance = new IdbThread();\ninstance.initialize();\n"]}
1
+ {"version":3,"file":"IdbThread.js","sourceRoot":"","sources":["../../../src/http-client/store/IdbThread.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,kBAAkB;IAAjD;;QACE,UAAK,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAMpC,cAAS,GAAG;YACV,GAAG,EAAE,CAAC,GAAW,EAAiB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;YAClE,KAAK,EAAE,CAAC,KAAa,EAAiC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1F,MAAM,EAAE,CAAC,GAAW,EAAgC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;YACvF,KAAK,EAAE,GAAkB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE;SACzD,CAAA;QAED,eAAU,GAAG;YACX,GAAG,EAAE,CAAC,GAAW,EAAiB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;YACnE,KAAK,EAAE,CAAC,KAAa,EAAiC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;YAC3F,MAAM,EAAE,CAAC,GAAW,EAAgC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC;YACxF,KAAK,EAAE,GAAkB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE;SAC1D,CAAA;QAED,cAAS,GAAG;YACV,KAAK,EAAE,CAAC,GAAW,EAAgC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;YACrF,GAAG,EAAE,CAAC,GAAW,EAAE,GAAW,EAAE,IAAoB,EAAgD,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;YAC/I,GAAG,EAAE,CAAC,GAAW,EAAE,GAAW,EAAuC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;YAC1G,OAAO,EAAE,CAAC,GAAW,EAAE,IAAc,EAAiD,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;YAChI,MAAM,EAAE,CAAC,GAAW,EAAE,GAAW,EAAgC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC;SAC1G,CAAA;IACH,CAAC;IAzBC,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;IAChC,CAAC;CAuBF;AAED,gDAAgD;AAChD,MAAM,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;AACjC,QAAQ,CAAC,UAAU,EAAE,CAAC","sourcesContent":["import { \n ContextChangeRecord, ContextDeleteRecord, \n IBulkOperationResult, \n IQueryResponse, IRequestUiMeta, IUrl\n} from \"@api-client/core/build/browser.js\";\nimport { HttpClientStore } from \"./HttpClientStore.js\";\nimport { SharedWorkerThread } from \"../../bindings/base/SharedWorkerThread.js\";\nimport { HttpClientIdbDatabase } from \"./HttpClientIdbDatabase.js\";\n\n/**\n * A logic running in the shared worker that accesses datastore for API Client.\n */\nexport class IdbThread extends SharedWorkerThread implements HttpClientStore {\n store = new HttpClientIdbDatabase();\n\n async initializeStore(): Promise<void> {\n await this.store.initialize();\n }\n\n wsHistory = {\n add: (url: string): Promise<IUrl> => this.store.wsHistory.add(url),\n query: (query: string): Promise<IQueryResponse<IUrl>> => this.store.wsHistory.query(query),\n delete: (url: string): Promise<ContextDeleteRecord> => this.store.wsHistory.delete(url),\n clear: (): Promise<void> => this.store.wsHistory.clear(),\n }\n\n urlHistory = {\n add: (url: string): Promise<IUrl> => this.store.urlHistory.add(url),\n query: (query: string): Promise<IQueryResponse<IUrl>> => this.store.urlHistory.query(query),\n delete: (url: string): Promise<ContextDeleteRecord> => this.store.urlHistory.delete(url),\n clear: (): Promise<void> => this.store.urlHistory.clear(),\n }\n\n projectUi = {\n clear: (key: string): Promise<ContextDeleteRecord> => this.store.projectUi.clear(key),\n set: (pid: string, key: string, meta: IRequestUiMeta): Promise<ContextChangeRecord<IRequestUiMeta>> => this.store.projectUi.set(pid, key, meta),\n get: (pid: string, key: string): Promise<IRequestUiMeta | undefined> => this.store.projectUi.get(pid, key),\n getBulk: (pid: string, keys: string[]): Promise<IBulkOperationResult<IRequestUiMeta>> => this.store.projectUi.getBulk(pid, keys),\n delete: (pid: string, key: string): Promise<ContextDeleteRecord> => this.store.projectUi.delete(pid, key),\n }\n}\n\n// Probably this should go to a separate file...\nconst instance = new IdbThread();\ninstance.initialize();\n"]}
@@ -2,7 +2,10 @@ import { RequestUiMetaKind } from "@api-client/core/build/browser.js";
2
2
  import { StoreBroadcast } from "../StoreBroadcast.js";
3
3
  import { IdbStore } from "./IdbStore.js";
4
4
  export class IdbProjectUi extends IdbStore {
5
- channel = new BroadcastChannel(StoreBroadcast.projectUi);
5
+ constructor() {
6
+ super(...arguments);
7
+ this.channel = new BroadcastChannel(StoreBroadcast.projectUi);
8
+ }
6
9
  async clear(key) {
7
10
  const tx = this.db.transaction('ProjectUi', 'readwrite');
8
11
  const index = tx.store.index('project');
@@ -1 +1 @@
1
- {"version":3,"file":"IdbProjectUi.js","sourceRoot":"","sources":["../../../../src/http-client/store/idb/IdbProjectUi.ts"],"names":[],"mappings":"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","sourcesContent":["import { ContextDeleteRecord, IRequestUiMeta, ContextChangeRecord, RequestUiMetaKind, IBulkOperationResult } from \"@api-client/core/build/browser.js\";\nimport { ProjectUiCreatedBroadcastEvent, ProjectUiDeletedBroadcastEvent } from \"../../../events/BroadcastUiEvents.js\";\nimport { StoreBroadcast } from \"../StoreBroadcast.js\";\nimport { ProjectUi } from \"../stores/ProjectUi.js\";\nimport { IStoredRequestUi } from \"../types.js\";\nimport { IdbStore } from \"./IdbStore.js\";\n\nexport class IdbProjectUi extends IdbStore implements ProjectUi {\n channel = new BroadcastChannel(StoreBroadcast.projectUi);\n\n async clear(key: string): Promise<ContextDeleteRecord> {\n const tx = this.db.transaction('ProjectUi', 'readwrite');\n const index = tx.store.index('project');\n const items = await index.getAll(key);\n await Promise.all(items.map(item => tx.store.delete([item.meta.project, item.meta.key])));\n items.forEach(item => {\n this.notifyDeleted(item.meta.project, item.meta.key);\n });\n return {\n key,\n }\n }\n\n async set(pid: string, key: string, meta: IRequestUiMeta): Promise<ContextChangeRecord<IRequestUiMeta>> {\n const value: IStoredRequestUi = {\n data: meta,\n meta: { project: pid, key, },\n };\n await this.db.put('ProjectUi', value);\n const event: ProjectUiCreatedBroadcastEvent = {\n type: 'event',\n operation: 'created',\n kind: RequestUiMetaKind,\n key,\n project: pid,\n data: meta,\n space: '',\n path: '/projects/ui',\n };\n this.channel.postMessage(event);\n return {\n key,\n parent: pid,\n item: meta,\n kind: RequestUiMetaKind,\n };\n }\n\n async get(pid: string, key: string): Promise<IRequestUiMeta | undefined> {\n const item = await this.db.get('ProjectUi', [pid, key]);\n if (item) {\n return item.data;\n }\n return undefined;\n }\n\n async getBulk(pid: string, keys: string[]): Promise<IBulkOperationResult<IRequestUiMeta>> {\n const { store } = this.db.transaction('ProjectUi', 'readonly');\n const items = await Promise.all(keys.map(key => store.get([pid, key])));\n const result: (IRequestUiMeta | undefined)[] = items.map((item) => {\n if (item) {\n return item.data;\n }\n return undefined;\n });\n return {\n items: result,\n };\n }\n\n async delete(pid: string, key: string): Promise<ContextDeleteRecord> {\n await this.db.delete('ProjectUi', [pid, key]);\n this.notifyDeleted(pid, key);\n return {\n key,\n kind: RequestUiMetaKind,\n parent: pid,\n }\n }\n\n protected notifyDeleted(projectId: string, requestId: string): void {\n const event: ProjectUiDeletedBroadcastEvent = {\n type: 'event',\n operation: 'deleted',\n kind: RequestUiMetaKind,\n key: requestId,\n project: projectId,\n space: '',\n path: '/projects/ui',\n };\n this.channel.postMessage(event);\n }\n}\n"]}
1
+ {"version":3,"file":"IdbProjectUi.js","sourceRoot":"","sources":["../../../../src/http-client/store/idb/IdbProjectUi.ts"],"names":[],"mappings":"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","sourcesContent":["import { ContextDeleteRecord, IRequestUiMeta, ContextChangeRecord, RequestUiMetaKind, IBulkOperationResult } from \"@api-client/core/build/browser.js\";\nimport { ProjectUiCreatedBroadcastEvent, ProjectUiDeletedBroadcastEvent } from \"../../../events/BroadcastUiEvents.js\";\nimport { StoreBroadcast } from \"../StoreBroadcast.js\";\nimport { ProjectUi } from \"../stores/ProjectUi.js\";\nimport { IStoredRequestUi } from \"../types.js\";\nimport { IdbStore } from \"./IdbStore.js\";\n\nexport class IdbProjectUi extends IdbStore implements ProjectUi {\n channel = new BroadcastChannel(StoreBroadcast.projectUi);\n\n async clear(key: string): Promise<ContextDeleteRecord> {\n const tx = this.db.transaction('ProjectUi', 'readwrite');\n const index = tx.store.index('project');\n const items = await index.getAll(key);\n await Promise.all(items.map(item => tx.store.delete([item.meta.project, item.meta.key])));\n items.forEach(item => {\n this.notifyDeleted(item.meta.project, item.meta.key);\n });\n return {\n key,\n }\n }\n\n async set(pid: string, key: string, meta: IRequestUiMeta): Promise<ContextChangeRecord<IRequestUiMeta>> {\n const value: IStoredRequestUi = {\n data: meta,\n meta: { project: pid, key, },\n };\n await this.db.put('ProjectUi', value);\n const event: ProjectUiCreatedBroadcastEvent = {\n type: 'event',\n operation: 'created',\n kind: RequestUiMetaKind,\n key,\n project: pid,\n data: meta,\n space: '',\n path: '/projects/ui',\n };\n this.channel.postMessage(event);\n return {\n key,\n parent: pid,\n item: meta,\n kind: RequestUiMetaKind,\n };\n }\n\n async get(pid: string, key: string): Promise<IRequestUiMeta | undefined> {\n const item = await this.db.get('ProjectUi', [pid, key]);\n if (item) {\n return item.data;\n }\n return undefined;\n }\n\n async getBulk(pid: string, keys: string[]): Promise<IBulkOperationResult<IRequestUiMeta>> {\n const { store } = this.db.transaction('ProjectUi', 'readonly');\n const items = await Promise.all(keys.map(key => store.get([pid, key])));\n const result: (IRequestUiMeta | undefined)[] = items.map((item) => {\n if (item) {\n return item.data;\n }\n return undefined;\n });\n return {\n items: result,\n };\n }\n\n async delete(pid: string, key: string): Promise<ContextDeleteRecord> {\n await this.db.delete('ProjectUi', [pid, key]);\n this.notifyDeleted(pid, key);\n return {\n key,\n kind: RequestUiMetaKind,\n parent: pid,\n }\n }\n\n protected notifyDeleted(projectId: string, requestId: string): void {\n const event: ProjectUiDeletedBroadcastEvent = {\n type: 'event',\n operation: 'deleted',\n kind: RequestUiMetaKind,\n key: requestId,\n project: projectId,\n space: '',\n path: '/projects/ui',\n };\n this.channel.postMessage(event);\n }\n}\n"]}
@@ -1,6 +1,4 @@
1
1
  export class IdbStore {
2
- parent;
3
- db;
4
2
  /**
5
3
  * @param parent The parent data store object
6
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"IdbStore.js","sourceRoot":"","sources":["../../../../src/http-client/store/idb/IdbStore.ts"],"names":[],"mappings":"AAKA,MAAM,OAAgB,QAAQ;IAIT;IAAsC;IAHzD;;OAEG;IACH,YAAmB,MAA6B,EAAS,EAA8B;QAApE,WAAM,GAAN,MAAM,CAAuB;QAAS,OAAE,GAAF,EAAE,CAA4B;IAAG,CAAC;IAE3F;;;OAGG;IACH,KAAK,CAAC,MAAM;QACV,GAAG;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO;QACX,GAAG;IACL,CAAC;IAED;;;;;;OAMG;IACO,KAAK,CAAC,kBAAkB,CAAC,EAA8B,EAAE,SAAoB,EAAE,IAAgB;QACvG,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACzB,MAAM,EAAE,UAAU,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAC9E,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAClD,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,KAAK,GAAc,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;YACtD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAsB,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC5B,SAAS;aACV;YACD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;YAC5B,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;gBACjC,SAAS;aACV;YACD,MAAM,EAAE,GAAG,EAAE,GAAG,IAAuB,CAAC;YACxC,IAAI,CAAC,GAAG,EAAE;gBACR,SAAS;aACV;YACD,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE;gBACxB,IAAI,GAAG,KAAK,OAAO,EAAE;oBACnB,SAAS;iBACV;gBACD,QAAQ,GAAG,IAAI,CAAC;aACjB;YACD,IAAI,GAAG,EAAE;gBACP,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACpB,GAAG,GAAG,CAAC,CAAC;gBACR,SAAS;aACV;YACD,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,SAAS;aACV;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE;gBACzB,MAAM;aACP;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF","sourcesContent":["import { IDBPDatabase } from \"idb\";\nimport { HttpClientDB, IStoredEntity, StoreName } from \"../types.js\";\nimport { IListState } from \"../State.js\";\nimport { HttpClientIdbDatabase } from \"../HttpClientIdbDatabase.js\";\n\nexport abstract class IdbStore {\n /**\n * @param parent The parent data store object\n */\n constructor(public parent: HttpClientIdbDatabase, public db: IDBPDatabase<HttpClientDB>) {}\n \n /**\n * A logic to be implemented when the model starts-up.\n * It is optional to implement but always called.\n */\n async warmup(): Promise<void> {\n // \n }\n\n /**\n * Cleans up before shut down.\n * It is optional to implement but always called.\n */\n async cleanup(): Promise<void> {\n // \n }\n\n /**\n * Lists entities that uses `IStoredEntity` format.\n * @param db A reference to the database \n * @param storeName The name of the store to query.\n * @param opts Query options.\n * @returns The list of listed objects. \n */\n protected async listStoredEntities(db: IDBPDatabase<HttpClientDB>, storeName: StoreName, opts: IListState): Promise<unknown[]> {\n let adv = opts.skip || 0;\n const { descending, limit = this.parent.defaultLimit, lastKey, space } = opts;\n const tx = db.transaction(storeName, 'readonly');\n const dir = descending === true ? 'prev' : 'next';\n let keyFound = false;\n const items: unknown[] = [];\n for await (const cursor of tx.store.iterate(null, dir)) {\n const info = cursor.value as IStoredEntity;\n if (!info.meta || !info.data) {\n continue;\n }\n const { meta, data } = info;\n if (space && meta.space !== space) {\n continue;\n }\n const { key } = data as { key: string };\n if (!key) {\n continue;\n }\n if (lastKey && !keyFound) {\n if (key !== lastKey) {\n continue;\n }\n keyFound = true;\n }\n if (adv) {\n cursor.advance(adv);\n adv = 0;\n continue;\n }\n if (meta.deleted) {\n continue;\n }\n items.push(data);\n if (items.length >= limit) {\n break;\n }\n }\n return items;\n }\n}\n"]}
1
+ {"version":3,"file":"IdbStore.js","sourceRoot":"","sources":["../../../../src/http-client/store/idb/IdbStore.ts"],"names":[],"mappings":"AAKA,MAAM,OAAgB,QAAQ;IAC5B;;OAEG;IACH,YAAmB,MAA6B,EAAS,EAA8B;QAApE,WAAM,GAAN,MAAM,CAAuB;QAAS,OAAE,GAAF,EAAE,CAA4B;IAAG,CAAC;IAE3F;;;OAGG;IACH,KAAK,CAAC,MAAM;QACV,GAAG;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO;QACX,GAAG;IACL,CAAC;IAED;;;;;;OAMG;IACO,KAAK,CAAC,kBAAkB,CAAC,EAA8B,EAAE,SAAoB,EAAE,IAAgB;QACvG,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACzB,MAAM,EAAE,UAAU,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAC9E,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAClD,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,KAAK,GAAc,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;YACtD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAsB,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC5B,SAAS;aACV;YACD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;YAC5B,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;gBACjC,SAAS;aACV;YACD,MAAM,EAAE,GAAG,EAAE,GAAG,IAAuB,CAAC;YACxC,IAAI,CAAC,GAAG,EAAE;gBACR,SAAS;aACV;YACD,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE;gBACxB,IAAI,GAAG,KAAK,OAAO,EAAE;oBACnB,SAAS;iBACV;gBACD,QAAQ,GAAG,IAAI,CAAC;aACjB;YACD,IAAI,GAAG,EAAE;gBACP,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACpB,GAAG,GAAG,CAAC,CAAC;gBACR,SAAS;aACV;YACD,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,SAAS;aACV;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE;gBACzB,MAAM;aACP;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF","sourcesContent":["import { IDBPDatabase } from \"idb\";\nimport { HttpClientDB, IStoredEntity, StoreName } from \"../types.js\";\nimport { IListState } from \"../State.js\";\nimport { HttpClientIdbDatabase } from \"../HttpClientIdbDatabase.js\";\n\nexport abstract class IdbStore {\n /**\n * @param parent The parent data store object\n */\n constructor(public parent: HttpClientIdbDatabase, public db: IDBPDatabase<HttpClientDB>) {}\n \n /**\n * A logic to be implemented when the model starts-up.\n * It is optional to implement but always called.\n */\n async warmup(): Promise<void> {\n // \n }\n\n /**\n * Cleans up before shut down.\n * It is optional to implement but always called.\n */\n async cleanup(): Promise<void> {\n // \n }\n\n /**\n * Lists entities that uses `IStoredEntity` format.\n * @param db A reference to the database \n * @param storeName The name of the store to query.\n * @param opts Query options.\n * @returns The list of listed objects. \n */\n protected async listStoredEntities(db: IDBPDatabase<HttpClientDB>, storeName: StoreName, opts: IListState): Promise<unknown[]> {\n let adv = opts.skip || 0;\n const { descending, limit = this.parent.defaultLimit, lastKey, space } = opts;\n const tx = db.transaction(storeName, 'readonly');\n const dir = descending === true ? 'prev' : 'next';\n let keyFound = false;\n const items: unknown[] = [];\n for await (const cursor of tx.store.iterate(null, dir)) {\n const info = cursor.value as IStoredEntity;\n if (!info.meta || !info.data) {\n continue;\n }\n const { meta, data } = info;\n if (space && meta.space !== space) {\n continue;\n }\n const { key } = data as { key: string };\n if (!key) {\n continue;\n }\n if (lastKey && !keyFound) {\n if (key !== lastKey) {\n continue;\n }\n keyFound = true;\n }\n if (adv) {\n cursor.advance(adv);\n adv = 0;\n continue;\n }\n if (meta.deleted) {\n continue;\n }\n items.push(data);\n if (items.length >= limit) {\n break;\n }\n }\n return items;\n }\n}\n"]}
@@ -4,7 +4,10 @@ function setMidnight(date) {
4
4
  date.setHours(0, 0, 0, 0);
5
5
  }
6
6
  export class IdbUrlHistory extends IdbStore {
7
- channel = new BroadcastChannel(StoreBroadcast.urlHistory);
7
+ constructor() {
8
+ super(...arguments);
9
+ this.channel = new BroadcastChannel(StoreBroadcast.urlHistory);
10
+ }
8
11
  async add(url) {
9
12
  const tx = this.db.transaction('UrlHistory', 'readwrite');
10
13
  const { store } = tx;
@@ -1 +1 @@
1
- {"version":3,"file":"IdbUrlHistory.js","sourceRoot":"","sources":["../../../../src/http-client/store/idb/IdbUrlHistory.ts"],"names":[],"mappings":"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","sourcesContent":["import { BroadcastCreatedEvent, ClearedBroadcastEvent, ContextDeleteRecord, DeletedBroadcastEvent, IQueryResponse, IUrl } from \"@api-client/core/build/browser.js\";\nimport { StoreBroadcast } from \"../StoreBroadcast.js\";\nimport { UrlHistory } from \"../stores/UrlHistory.js\";\nimport { IdbStore } from \"./IdbStore.js\";\n\nfunction setMidnight(date: Date): void {\n date.setHours(0, 0, 0, 0);\n}\n\nexport class IdbUrlHistory extends IdbStore implements UrlHistory {\n channel = new BroadcastChannel(StoreBroadcast.urlHistory);\n\n async add(url: string): Promise<IUrl> {\n const tx = this.db.transaction('UrlHistory', 'readwrite');\n const { store } = tx;\n let item = await store.get(url);\n const time = Date.now();\n const midnight = new Date(time);\n setMidnight(midnight);\n if (item) {\n item.cnt += 1;\n item.time = time;\n item.midnight = midnight.getTime();\n } else {\n item = {\n cnt: 1,\n time,\n key: url,\n midnight: midnight.getTime(),\n } as IUrl;\n }\n await store.put(item);\n await tx.done;\n\n const event: BroadcastCreatedEvent = {\n type: 'event',\n operation: 'created',\n key: url,\n data: item,\n kind: '',\n space: '',\n path: '/history/url'\n };\n this.channel.postMessage(event);\n return item;\n }\n\n async query(query: string): Promise<IQueryResponse<IUrl>> {\n const q = String(query).toLowerCase();\n const tx = this.db.transaction('UrlHistory', 'readonly');\n const result: IQueryResponse<IUrl> = {\n items: [],\n };\n for await (const cursor of tx.store) {\n const item = cursor.value;\n const url = String(item.key).toLowerCase();\n if (url.includes(q)) {\n result.items.push({\n doc: item,\n index: ['key'],\n });\n }\n }\n return result;\n }\n\n async delete(url: string): Promise<ContextDeleteRecord> {\n const tx = this.db.transaction('UrlHistory', 'readwrite');\n await tx.store.delete(url);\n const event: DeletedBroadcastEvent = {\n type: 'event',\n operation: 'deleted',\n kind: '',\n key: url,\n path: '/history/url',\n space: '',\n };\n this.channel.postMessage(event);\n return {\n key: url,\n }\n }\n\n async clear(): Promise<void> {\n await this.db.clear('UrlHistory');\n const event: ClearedBroadcastEvent = {\n type: 'event',\n operation: 'cleared',\n path: '/history/url',\n space: '',\n name: 'UrlHistory',\n };\n this.channel.postMessage(event);\n }\n}\n"]}
1
+ {"version":3,"file":"IdbUrlHistory.js","sourceRoot":"","sources":["../../../../src/http-client/store/idb/IdbUrlHistory.ts"],"names":[],"mappings":"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","sourcesContent":["import { BroadcastCreatedEvent, ClearedBroadcastEvent, ContextDeleteRecord, DeletedBroadcastEvent, IQueryResponse, IUrl } from \"@api-client/core/build/browser.js\";\nimport { StoreBroadcast } from \"../StoreBroadcast.js\";\nimport { UrlHistory } from \"../stores/UrlHistory.js\";\nimport { IdbStore } from \"./IdbStore.js\";\n\nfunction setMidnight(date: Date): void {\n date.setHours(0, 0, 0, 0);\n}\n\nexport class IdbUrlHistory extends IdbStore implements UrlHistory {\n channel = new BroadcastChannel(StoreBroadcast.urlHistory);\n\n async add(url: string): Promise<IUrl> {\n const tx = this.db.transaction('UrlHistory', 'readwrite');\n const { store } = tx;\n let item = await store.get(url);\n const time = Date.now();\n const midnight = new Date(time);\n setMidnight(midnight);\n if (item) {\n item.cnt += 1;\n item.time = time;\n item.midnight = midnight.getTime();\n } else {\n item = {\n cnt: 1,\n time,\n key: url,\n midnight: midnight.getTime(),\n } as IUrl;\n }\n await store.put(item);\n await tx.done;\n\n const event: BroadcastCreatedEvent = {\n type: 'event',\n operation: 'created',\n key: url,\n data: item,\n kind: '',\n space: '',\n path: '/history/url'\n };\n this.channel.postMessage(event);\n return item;\n }\n\n async query(query: string): Promise<IQueryResponse<IUrl>> {\n const q = String(query).toLowerCase();\n const tx = this.db.transaction('UrlHistory', 'readonly');\n const result: IQueryResponse<IUrl> = {\n items: [],\n };\n for await (const cursor of tx.store) {\n const item = cursor.value;\n const url = String(item.key).toLowerCase();\n if (url.includes(q)) {\n result.items.push({\n doc: item,\n index: ['key'],\n });\n }\n }\n return result;\n }\n\n async delete(url: string): Promise<ContextDeleteRecord> {\n const tx = this.db.transaction('UrlHistory', 'readwrite');\n await tx.store.delete(url);\n const event: DeletedBroadcastEvent = {\n type: 'event',\n operation: 'deleted',\n kind: '',\n key: url,\n path: '/history/url',\n space: '',\n };\n this.channel.postMessage(event);\n return {\n key: url,\n }\n }\n\n async clear(): Promise<void> {\n await this.db.clear('UrlHistory');\n const event: ClearedBroadcastEvent = {\n type: 'event',\n operation: 'cleared',\n path: '/history/url',\n space: '',\n name: 'UrlHistory',\n };\n this.channel.postMessage(event);\n }\n}\n"]}
@@ -4,7 +4,10 @@ function setMidnight(date) {
4
4
  date.setHours(0, 0, 0, 0);
5
5
  }
6
6
  export class IdbWsHistory extends IdbStore {
7
- channel = new BroadcastChannel(StoreBroadcast.wsHistory);
7
+ constructor() {
8
+ super(...arguments);
9
+ this.channel = new BroadcastChannel(StoreBroadcast.wsHistory);
10
+ }
8
11
  async add(url) {
9
12
  const tx = this.db.transaction('WsHistory', 'readwrite');
10
13
  const { store } = tx;
@@ -1 +1 @@
1
- {"version":3,"file":"IdbWsHistory.js","sourceRoot":"","sources":["../../../../src/http-client/store/idb/IdbWsHistory.ts"],"names":[],"mappings":"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","sourcesContent":["import { BroadcastCreatedEvent, ClearedBroadcastEvent, ContextDeleteRecord, DeletedBroadcastEvent, IQueryResponse, IUrl } from \"@api-client/core/build/browser.js\";\nimport { StoreBroadcast } from \"../StoreBroadcast.js\";\nimport { WsHistory } from \"../stores/WsHistory.js\";\nimport { IdbStore } from \"./IdbStore.js\";\n\nfunction setMidnight(date: Date): void {\n date.setHours(0, 0, 0, 0);\n}\n\nexport class IdbWsHistory extends IdbStore implements WsHistory {\n channel = new BroadcastChannel(StoreBroadcast.wsHistory);\n\n async add(url: string): Promise<IUrl> {\n const tx = this.db.transaction('WsHistory', 'readwrite');\n const { store } = tx;\n let item = await store.get(url);\n const time = Date.now();\n const midnight = new Date(time);\n setMidnight(midnight);\n if (item) {\n item.cnt += 1;\n item.time = time;\n item.midnight = midnight.getTime();\n } else {\n item = {\n cnt: 1,\n time,\n key: url,\n midnight: midnight.getTime(),\n } as IUrl;\n }\n await store.put(item);\n await tx.done;\n\n const event: BroadcastCreatedEvent = {\n type: 'event',\n operation: 'created',\n key: url,\n data: item,\n kind: '',\n space: '',\n path: '/history/ws'\n };\n this.channel.postMessage(event);\n return item;\n }\n\n async query(query: string): Promise<IQueryResponse<IUrl>> {\n const q = String(query).toLowerCase();\n const tx = this.db.transaction('WsHistory', 'readonly');\n const result: IQueryResponse<IUrl> = {\n items: [],\n };\n for await (const cursor of tx.store) {\n const item = cursor.value;\n const url = String(item.key).toLowerCase();\n if (url.includes(q)) {\n result.items.push({\n doc: item,\n index: ['key'],\n });\n }\n }\n return result;\n }\n\n async delete(url: string): Promise<ContextDeleteRecord> {\n const tx = this.db.transaction('WsHistory', 'readwrite');\n await tx.store.delete(url);\n const event: DeletedBroadcastEvent = {\n type: 'event',\n operation: 'deleted',\n kind: '',\n key: url,\n path: '/history/ws',\n space: '',\n };\n this.channel.postMessage(event);\n return {\n key: url,\n }\n }\n\n async clear(): Promise<void> {\n await this.db.clear('WsHistory');\n const event: ClearedBroadcastEvent = {\n type: 'event',\n operation: 'cleared',\n path: '/history/ws',\n space: '',\n name: 'WsHistory',\n };\n this.channel.postMessage(event);\n }\n}\n"]}
1
+ {"version":3,"file":"IdbWsHistory.js","sourceRoot":"","sources":["../../../../src/http-client/store/idb/IdbWsHistory.ts"],"names":[],"mappings":"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","sourcesContent":["import { BroadcastCreatedEvent, ClearedBroadcastEvent, ContextDeleteRecord, DeletedBroadcastEvent, IQueryResponse, IUrl } from \"@api-client/core/build/browser.js\";\nimport { StoreBroadcast } from \"../StoreBroadcast.js\";\nimport { WsHistory } from \"../stores/WsHistory.js\";\nimport { IdbStore } from \"./IdbStore.js\";\n\nfunction setMidnight(date: Date): void {\n date.setHours(0, 0, 0, 0);\n}\n\nexport class IdbWsHistory extends IdbStore implements WsHistory {\n channel = new BroadcastChannel(StoreBroadcast.wsHistory);\n\n async add(url: string): Promise<IUrl> {\n const tx = this.db.transaction('WsHistory', 'readwrite');\n const { store } = tx;\n let item = await store.get(url);\n const time = Date.now();\n const midnight = new Date(time);\n setMidnight(midnight);\n if (item) {\n item.cnt += 1;\n item.time = time;\n item.midnight = midnight.getTime();\n } else {\n item = {\n cnt: 1,\n time,\n key: url,\n midnight: midnight.getTime(),\n } as IUrl;\n }\n await store.put(item);\n await tx.done;\n\n const event: BroadcastCreatedEvent = {\n type: 'event',\n operation: 'created',\n key: url,\n data: item,\n kind: '',\n space: '',\n path: '/history/ws'\n };\n this.channel.postMessage(event);\n return item;\n }\n\n async query(query: string): Promise<IQueryResponse<IUrl>> {\n const q = String(query).toLowerCase();\n const tx = this.db.transaction('WsHistory', 'readonly');\n const result: IQueryResponse<IUrl> = {\n items: [],\n };\n for await (const cursor of tx.store) {\n const item = cursor.value;\n const url = String(item.key).toLowerCase();\n if (url.includes(q)) {\n result.items.push({\n doc: item,\n index: ['key'],\n });\n }\n }\n return result;\n }\n\n async delete(url: string): Promise<ContextDeleteRecord> {\n const tx = this.db.transaction('WsHistory', 'readwrite');\n await tx.store.delete(url);\n const event: DeletedBroadcastEvent = {\n type: 'event',\n operation: 'deleted',\n kind: '',\n key: url,\n path: '/history/ws',\n space: '',\n };\n this.channel.postMessage(event);\n return {\n key: url,\n }\n }\n\n async clear(): Promise<void> {\n await this.db.clear('WsHistory');\n const event: ClearedBroadcastEvent = {\n type: 'event',\n operation: 'cleared',\n path: '/history/ws',\n space: '',\n name: 'WsHistory',\n };\n this.channel.postMessage(event);\n }\n}\n"]}
@@ -154,19 +154,18 @@ export { chartStyles };
154
154
  const DaySeparatorKind = 'Chart#DaySeparator';
155
155
  const EntryKind = 'Chart#Entry';
156
156
  export class HttpHistoryChart {
157
- data;
158
- _topDuration = 0;
159
- _topRequestSize = 0;
160
- _topResponseSize = 0;
161
- /**
162
- * The ordered from the oldest to the newest history data.
163
- */
164
- _values = [];
165
157
  /**
166
158
  * @param data Sorted history data. Each array item is a group if requests made that day.
167
159
  */
168
160
  constructor(data) {
169
161
  this.data = data;
162
+ this._topDuration = 0;
163
+ this._topRequestSize = 0;
164
+ this._topResponseSize = 0;
165
+ /**
166
+ * The ordered from the oldest to the newest history data.
167
+ */
168
+ this._values = [];
170
169
  this._analyze();
171
170
  }
172
171
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"HttpHistoryChart.js","sourceRoot":"","sources":["../../../src/lib/chart/HttpHistoryChart.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable class-methods-use-this */\nimport { ErrorResponse, IHttpHistory, IResponse } from '@api-client/core/build/browser.js';\nimport { css, html, TemplateResult } from 'lit';\nimport { range } from 'lit/directives/range.js';\nimport { map } from 'lit/directives/map.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { getTime, relativeDay } from '../time/Conversion.js';\n\nconst chartStyles = css`\n.grid-container {\n display: grid;\n grid-template:\n \"header header\" 40px\n \"rows data\" auto\n \". columns\" 80px / 80px auto;\n\n font-family: var(--md-sys-typescale-body-small-font-family-name);\n font-style: var(--md-sys-typescale-body-small-font-family-style);\n font-weight: var(--md-sys-typescale-body-small-font-weight);\n font-size: var(--md-sys-typescale-body-small-font-size);\n letter-spacing: var(--md-sys-typescale-body-small-tracking);\n line-height: var(--md-sys-typescale-body-small-height);\n text-transform: var(--md-sys-typescale-body-small-text-transform);\n text-decoration: var(--md-sys-typescale-body-small-text-decoration);\n}\n\n.chart-title {\n font-weight: 500;\n font-size: 1.1rem;\n grid-area: header;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.chart-rows {\n grid-area: rows;\n position: relative;\n background-image: repeating-linear-gradient(to top, #CCC, #CCC 1px, white 1px, white 10%, #CCC 10% );\n border-right: 1px #e5e5e5 solid;\n text-align: right;\n padding-right: 20px;\n}\n\n.chart-rows .label {\n left: 0;\n top: calc(100% / 2 - calc(1rem / 2));\n position: absolute;\n transform: rotate(-90deg);\n left: -68px;\n}\n\n.chart-data {\n grid-area: data; \n}\n\n.chart-rows,\n.chart-data {\n background-image: repeating-linear-gradient(to top, #CCC, #CCC 1px, white 1px, white 10%, #CCC 10% );\n}\n\n.chart-columns {\n grid-area: columns;\n /* overflow: hidden; */\n}\n\n.chart-data,\n.chart-columns {\n display: flex;\n gap: 12px;\n}\n\n.data-rows {\n display: flex;\n flex-direction: column-reverse;\n height: 100%;\n}\n\n.data-rows > * {\n flex: 1 1 0%;\n display: flex;\n align-items: start;\n justify-content: end;\n margin-top: 8px;\n}\n\n.data-column,\n.data-bar {\n display: block;\n min-width: 8px;\n background-color: transparent;\n min-width: 20px;\n flex: 1 1 0%;\n}\n\n.data-bar.day-separator {\n background-color: #03a9f45e;\n}\n\n.data-bar.day-separator,\n.data-column.day-separator {\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n max-width: 60px;\n}\n\n.data-bar.day-separator .label {\n transform: rotate(-90deg);\n white-space: nowrap;\n background-color: #a2dffb;\n padding: 8px;\n}\n\n.data-column {\n display: flex;\n align-items: center;\n padding-top: 8px;\n}\n\n.data-column .label {\n display: block;\n transform: rotate(-90deg);\n white-space: nowrap;\n /* overflow: hidden;\n text-overflow: ellipsis; */\n}\n\n.bar-day-entry {\n display: flex;\n flex-direction: column;\n}\n\n.bar-day-entry .label {\n flex: 1;\n min-height: 0px;\n position: relative;\n z-index: 1;\n place-self: center end;\n display: flex;\n align-items: end;\n}\n\n.label.inside {\n transform: translate(0px, 1.5rem);\n}\n\n.bar-value {\n transition: all 0.4s ease-in-out 0s;\n background: rgb(76 175 80 / 78%);\n}\n`;\n\nexport { chartStyles };\n\nconst DaySeparatorKind = 'Chart#DaySeparator';\nconst EntryKind = 'Chart#Entry';\n\ninterface IDaySeparator {\n kind: typeof DaySeparatorKind;\n label: string;\n}\n\ninterface IEntry {\n kind: typeof EntryKind;\n /**\n * Request duration.\n */\n d: number;\n /**\n * Request size\n */\n res: number;\n /**\n * Response size\n */\n rps: number;\n /**\n * The log created time\n */\n t: number;\n}\n\ntype DataEntry = IEntry | IDaySeparator;\n\nexport class HttpHistoryChart {\n protected _topDuration = 0;\n\n protected _topRequestSize = 0;\n \n protected _topResponseSize = 0;\n\n /**\n * The ordered from the oldest to the newest history data.\n */\n protected _values: DataEntry[] = [];\n\n /**\n * @param data Sorted history data. Each array item is a group if requests made that day.\n */\n constructor(protected data: IHttpHistory[][]) {\n this._analyze();\n }\n\n /**\n * Normalizes the data, formats the labels and sets the `_values` array.\n */\n protected _analyze(): void {\n const { data } = this;\n const result: DataEntry[] = [];\n const copy = [...data].reverse();\n for (const group of copy) {\n if (!group.length) {\n continue;\n }\n const groupEntry: IDaySeparator = {\n kind: DaySeparatorKind,\n label: relativeDay(group[0].midnight || 0),\n };\n result.push(groupEntry);\n for (const item of [...group].reverse()) {\n const { log, created } = item;\n if (!log) {\n continue;\n }\n const entry: IEntry = {\n kind: EntryKind,\n d: 0,\n res: 0,\n rps: 0,\n t: created,\n };\n result.push(entry);\n const { size, response } = log;\n if (size) {\n entry.res = size.request;\n entry.rps = size.response;\n if (this._topRequestSize < size.request) {\n this._topRequestSize = size.request;\n }\n if (this._topResponseSize < size.response) {\n this._topResponseSize = size.response;\n }\n }\n if (!ErrorResponse.isErrorResponse(response)) {\n const typed = response as IResponse;\n entry.d = typed.loadingTime;\n if (this._topDuration < typed.loadingTime) {\n this._topDuration = typed.loadingTime;\n }\n }\n }\n }\n this._values = result;\n }\n\n /**\n * Creates a plot for the request duration.\n */\n durationPlot(): TemplateResult {\n return html`\n <figure aria-hidden=\"true\" class=\"grid-container chart\">\n <figcaption class=\"chart-title\">Request duration</figcaption>\n ${this._durationRows()}\n ${this._durationChart()}\n ${this._durationColumns()}\n </figure>\n `;\n }\n\n private _durationRows(): TemplateResult {\n const step = this._topDuration / 10;\n return html`\n <div class=\"chart-rows\">\n <div class=\"label\">Milliseconds</div>\n <div class=\"data-rows\">\n ${map(range(10), (i) => html`<span>${Math.round((i+1) * step)}</span>`)}\n </div>\n </div>\n `;\n }\n\n private _durationChart(): TemplateResult {\n const data = this._values;\n return html`<div class=\"chart-data\">\n ${data.map(i => this._durationItem(i))}\n </div>`;\n }\n\n private _durationColumns(): TemplateResult {\n const data = this._values;\n return html`\n <div class=\"chart-columns\">\n ${data.map(i => this._durationColumn(i))}\n </div>`;\n }\n\n private _durationItem(item: DataEntry): TemplateResult {\n if (item.kind === DaySeparatorKind) {\n return this._durationDaySeparatorItem(item);\n }\n return this._durationEntryItem(item);\n }\n\n private _durationDaySeparatorItem(item: IDaySeparator): TemplateResult {\n return html`\n <div class=\"data-bar day-separator\">\n <span class=\"label\">${item.label}</span>\n </div>\n `;\n }\n\n private _durationEntryItem(item: IEntry): TemplateResult {\n const { d } = item;\n let scale = 0;\n if (this._topDuration) {\n scale = d / this._topDuration;\n }\n const classes = {\n 'label': true,\n 'inside': scale >= 0.75,\n };\n return html`\n <div class=\"data-bar bar-day-entry\">\n <span class=\"${classMap(classes)}\">${d}</span>\n <div class=\"bar-value\" style=\"flex-basis: ${scale * 100}%\">\n </div>\n </div>\n `;\n }\n\n private _durationColumn(item: DataEntry): TemplateResult {\n const classes = {\n 'data-column': true,\n 'day-separator': item.kind === DaySeparatorKind,\n };\n let label: string | undefined;\n if (item.kind === EntryKind) {\n label = getTime(item.t);\n }\n return html`\n <div class=\"${classMap(classes)}\">\n ${label ? html`<span class=\"label\">${label}</span>` : ''}\n </div>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"HttpHistoryChart.js","sourceRoot":"","sources":["../../../src/lib/chart/HttpHistoryChart.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable class-methods-use-this */\nimport { ErrorResponse, IHttpHistory, IResponse } from '@api-client/core/build/browser.js';\nimport { css, html, TemplateResult } from 'lit';\nimport { range } from 'lit/directives/range.js';\nimport { map } from 'lit/directives/map.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { getTime, relativeDay } from '../time/Conversion.js';\n\nconst chartStyles = css`\n.grid-container {\n display: grid;\n grid-template:\n \"header header\" 40px\n \"rows data\" auto\n \". columns\" 80px / 80px auto;\n\n font-family: var(--md-sys-typescale-body-small-font-family-name);\n font-style: var(--md-sys-typescale-body-small-font-family-style);\n font-weight: var(--md-sys-typescale-body-small-font-weight);\n font-size: var(--md-sys-typescale-body-small-font-size);\n letter-spacing: var(--md-sys-typescale-body-small-tracking);\n line-height: var(--md-sys-typescale-body-small-height);\n text-transform: var(--md-sys-typescale-body-small-text-transform);\n text-decoration: var(--md-sys-typescale-body-small-text-decoration);\n}\n\n.chart-title {\n font-weight: 500;\n font-size: 1.1rem;\n grid-area: header;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.chart-rows {\n grid-area: rows;\n position: relative;\n background-image: repeating-linear-gradient(to top, #CCC, #CCC 1px, white 1px, white 10%, #CCC 10% );\n border-right: 1px #e5e5e5 solid;\n text-align: right;\n padding-right: 20px;\n}\n\n.chart-rows .label {\n left: 0;\n top: calc(100% / 2 - calc(1rem / 2));\n position: absolute;\n transform: rotate(-90deg);\n left: -68px;\n}\n\n.chart-data {\n grid-area: data; \n}\n\n.chart-rows,\n.chart-data {\n background-image: repeating-linear-gradient(to top, #CCC, #CCC 1px, white 1px, white 10%, #CCC 10% );\n}\n\n.chart-columns {\n grid-area: columns;\n /* overflow: hidden; */\n}\n\n.chart-data,\n.chart-columns {\n display: flex;\n gap: 12px;\n}\n\n.data-rows {\n display: flex;\n flex-direction: column-reverse;\n height: 100%;\n}\n\n.data-rows > * {\n flex: 1 1 0%;\n display: flex;\n align-items: start;\n justify-content: end;\n margin-top: 8px;\n}\n\n.data-column,\n.data-bar {\n display: block;\n min-width: 8px;\n background-color: transparent;\n min-width: 20px;\n flex: 1 1 0%;\n}\n\n.data-bar.day-separator {\n background-color: #03a9f45e;\n}\n\n.data-bar.day-separator,\n.data-column.day-separator {\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n max-width: 60px;\n}\n\n.data-bar.day-separator .label {\n transform: rotate(-90deg);\n white-space: nowrap;\n background-color: #a2dffb;\n padding: 8px;\n}\n\n.data-column {\n display: flex;\n align-items: center;\n padding-top: 8px;\n}\n\n.data-column .label {\n display: block;\n transform: rotate(-90deg);\n white-space: nowrap;\n /* overflow: hidden;\n text-overflow: ellipsis; */\n}\n\n.bar-day-entry {\n display: flex;\n flex-direction: column;\n}\n\n.bar-day-entry .label {\n flex: 1;\n min-height: 0px;\n position: relative;\n z-index: 1;\n place-self: center end;\n display: flex;\n align-items: end;\n}\n\n.label.inside {\n transform: translate(0px, 1.5rem);\n}\n\n.bar-value {\n transition: all 0.4s ease-in-out 0s;\n background: rgb(76 175 80 / 78%);\n}\n`;\n\nexport { chartStyles };\n\nconst DaySeparatorKind = 'Chart#DaySeparator';\nconst EntryKind = 'Chart#Entry';\n\ninterface IDaySeparator {\n kind: typeof DaySeparatorKind;\n label: string;\n}\n\ninterface IEntry {\n kind: typeof EntryKind;\n /**\n * Request duration.\n */\n d: number;\n /**\n * Request size\n */\n res: number;\n /**\n * Response size\n */\n rps: number;\n /**\n * The log created time\n */\n t: number;\n}\n\ntype DataEntry = IEntry | IDaySeparator;\n\nexport class HttpHistoryChart {\n protected _topDuration = 0;\n\n protected _topRequestSize = 0;\n \n protected _topResponseSize = 0;\n\n /**\n * The ordered from the oldest to the newest history data.\n */\n protected _values: DataEntry[] = [];\n\n /**\n * @param data Sorted history data. Each array item is a group if requests made that day.\n */\n constructor(protected data: IHttpHistory[][]) {\n this._analyze();\n }\n\n /**\n * Normalizes the data, formats the labels and sets the `_values` array.\n */\n protected _analyze(): void {\n const { data } = this;\n const result: DataEntry[] = [];\n const copy = [...data].reverse();\n for (const group of copy) {\n if (!group.length) {\n continue;\n }\n const groupEntry: IDaySeparator = {\n kind: DaySeparatorKind,\n label: relativeDay(group[0].midnight || 0),\n };\n result.push(groupEntry);\n for (const item of [...group].reverse()) {\n const { log, created } = item;\n if (!log) {\n continue;\n }\n const entry: IEntry = {\n kind: EntryKind,\n d: 0,\n res: 0,\n rps: 0,\n t: created,\n };\n result.push(entry);\n const { size, response } = log;\n if (size) {\n entry.res = size.request;\n entry.rps = size.response;\n if (this._topRequestSize < size.request) {\n this._topRequestSize = size.request;\n }\n if (this._topResponseSize < size.response) {\n this._topResponseSize = size.response;\n }\n }\n if (!ErrorResponse.isErrorResponse(response)) {\n const typed = response as IResponse;\n entry.d = typed.loadingTime;\n if (this._topDuration < typed.loadingTime) {\n this._topDuration = typed.loadingTime;\n }\n }\n }\n }\n this._values = result;\n }\n\n /**\n * Creates a plot for the request duration.\n */\n durationPlot(): TemplateResult {\n return html`\n <figure aria-hidden=\"true\" class=\"grid-container chart\">\n <figcaption class=\"chart-title\">Request duration</figcaption>\n ${this._durationRows()}\n ${this._durationChart()}\n ${this._durationColumns()}\n </figure>\n `;\n }\n\n private _durationRows(): TemplateResult {\n const step = this._topDuration / 10;\n return html`\n <div class=\"chart-rows\">\n <div class=\"label\">Milliseconds</div>\n <div class=\"data-rows\">\n ${map(range(10), (i) => html`<span>${Math.round((i+1) * step)}</span>`)}\n </div>\n </div>\n `;\n }\n\n private _durationChart(): TemplateResult {\n const data = this._values;\n return html`<div class=\"chart-data\">\n ${data.map(i => this._durationItem(i))}\n </div>`;\n }\n\n private _durationColumns(): TemplateResult {\n const data = this._values;\n return html`\n <div class=\"chart-columns\">\n ${data.map(i => this._durationColumn(i))}\n </div>`;\n }\n\n private _durationItem(item: DataEntry): TemplateResult {\n if (item.kind === DaySeparatorKind) {\n return this._durationDaySeparatorItem(item);\n }\n return this._durationEntryItem(item);\n }\n\n private _durationDaySeparatorItem(item: IDaySeparator): TemplateResult {\n return html`\n <div class=\"data-bar day-separator\">\n <span class=\"label\">${item.label}</span>\n </div>\n `;\n }\n\n private _durationEntryItem(item: IEntry): TemplateResult {\n const { d } = item;\n let scale = 0;\n if (this._topDuration) {\n scale = d / this._topDuration;\n }\n const classes = {\n 'label': true,\n 'inside': scale >= 0.75,\n };\n return html`\n <div class=\"data-bar bar-day-entry\">\n <span class=\"${classMap(classes)}\">${d}</span>\n <div class=\"bar-value\" style=\"flex-basis: ${scale * 100}%\">\n </div>\n </div>\n `;\n }\n\n private _durationColumn(item: DataEntry): TemplateResult {\n const classes = {\n 'data-column': true,\n 'day-separator': item.kind === DaySeparatorKind,\n };\n let label: string | undefined;\n if (item.kind === EntryKind) {\n label = getTime(item.t);\n }\n return html`\n <div class=\"${classMap(classes)}\">\n ${label ? html`<span class=\"label\">${label}</span>` : ''}\n </div>\n `;\n }\n}\n"]}
@@ -26,7 +26,6 @@ export const dropHandler = Symbol('dropHandler');
26
26
  */
27
27
  export const FileDropMixin = dedupeMixin((superClass) => {
28
28
  class MyMixinClass extends superClass {
29
- dropTargetActive;
30
29
  constructor(...args) {
31
30
  super(...args);
32
31
  this[dragEnterHandler] = this[dragEnterHandler].bind(this);
@@ -1 +1 @@
1
- {"version":3,"file":"FileDropMixin.js","sourceRoot":"","sources":["../../src/mixins/FileDropMixin.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable max-classes-per-file */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable class-methods-use-this */\nimport { html, TemplateResult, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { dedupeMixin } from '@open-wc/dedupe-mixin';\nimport '../define/ui/ui-icon.js';\n\nexport const dragEnterHandler = Symbol('dragEnterHandler');\nexport const dragLeaveHandler = Symbol('dragLeaveHandler');\nexport const dragOverHandler = Symbol('dragOverHandler');\nexport const dropHandler = Symbol('dropHandler');\n\ntype Constructor<T = {}> = new (...args: any[]) => T;\n\nexport declare class FileDropMixinInterface {\n dropTargetActive: boolean;\n\n /**\n * Processes dropped to the page files\n * @param files The list of dropped files\n * @abstract This is to be implemented by the platform bindings\n */\n processDroppedFiles(files: FileList): Promise<void>;\n}\n\n/**\n * Adds methods to accept files via drag and drop.\n * The mixin register the dnd events on the body element. When an object is dragged over the window it adds\n * this `drop-target` class to the `body` element. Additionally it sets the `dropTargetActive` property.\n * \n * The mixin also assumes that when the `drop-target` is set then the `drop-info` overlay is rendered.\n * However, it does not change the logic if the element is not in the DOM.\n * Use the provided `dropTargetTemplate()` function to generate template for the drag info.\n * \n * The class implementing this mixin should override the `processDroppedFiles(files)` method\n * to process the incoming files.\n *\n * @mixin\n */\nexport const FileDropMixin = dedupeMixin(<T extends Constructor<LitElement>>(superClass: T): Constructor<FileDropMixinInterface> & T => {\n class MyMixinClass extends superClass {\n @property() dropTargetActive: boolean;\n\n constructor(...args: any[]) {\n super(...args);\n this[dragEnterHandler] = this[dragEnterHandler].bind(this);\n this[dragLeaveHandler] = this[dragLeaveHandler].bind(this);\n this[dragOverHandler] = this[dragOverHandler].bind(this);\n this[dropHandler] = this[dropHandler].bind(this);\n\n this.dropTargetActive = false;\n\n document.body.addEventListener('dragenter', this[dragEnterHandler]);\n document.body.addEventListener('dragleave', this[dragLeaveHandler]);\n document.body.addEventListener('dragover', this[dragOverHandler]);\n document.body.addEventListener('drop', this[dropHandler]);\n }\n\n /**\n * Processes dropped to the page files\n * @param files The list of dropped files\n * @abstract This is to be implemented by the platform bindings\n */\n async processDroppedFiles(files: FileList): Promise<void> {\n // ...\n }\n\n /**\n * @returns The template for the drop file message\n */\n dropTargetTemplate(): TemplateResult {\n return html`\n <div class=\"drop-info\">\n <ui-icon icon=\"fileDownload\" class=\"drop-icon\"></ui-icon>\n <p class=\"drop-message\">Drop the file here</p>\n </div>\n `;\n }\n\n [dragEnterHandler](e: DragEvent): void {\n if (!e.dataTransfer) {\n return;\n }\n if (![...e.dataTransfer.types].includes('Files')) {\n return;\n }\n e.preventDefault();\n document.body.classList.add('drop-target');\n this.dropTargetActive = true;\n e.dataTransfer.effectAllowed = 'copy';\n }\n\n [dragLeaveHandler](e: DragEvent): void {\n if (!e.dataTransfer) {\n return;\n }\n if (![...e.dataTransfer.types].includes('Files')) {\n return;\n }\n const node = e.target as HTMLElement;\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n if (node !== document.body && !node.classList.contains('drop-info')) {\n return;\n }\n e.preventDefault();\n document.body.classList.remove('drop-target');\n this.dropTargetActive = false;\n }\n\n [dragOverHandler](e: DragEvent): void {\n if (!e.dataTransfer) {\n return;\n }\n if (![...e.dataTransfer.types].includes('Files')) {\n return;\n }\n const node = e.target as HTMLElement;\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n if (node !== document.body && !node.classList.contains('drop-info')) {\n return;\n }\n e.preventDefault();\n document.body.classList.add('drop-target');\n this.dropTargetActive = true;\n }\n\n [dropHandler](e: DragEvent): void {\n if (!e.dataTransfer) {\n return;\n }\n if (![...e.dataTransfer.types].includes('Files')) {\n return;\n }\n e.preventDefault();\n document.body.classList.remove('drop-target');\n this.dropTargetActive = false;\n this.processDroppedFiles(e.dataTransfer.files);\n }\n };\n return MyMixinClass as Constructor<FileDropMixinInterface> & T;\n});\n"]}
1
+ {"version":3,"file":"FileDropMixin.js","sourceRoot":"","sources":["../../src/mixins/FileDropMixin.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable max-classes-per-file */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable class-methods-use-this */\nimport { html, TemplateResult, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { dedupeMixin } from '@open-wc/dedupe-mixin';\nimport '../define/ui/ui-icon.js';\n\nexport const dragEnterHandler = Symbol('dragEnterHandler');\nexport const dragLeaveHandler = Symbol('dragLeaveHandler');\nexport const dragOverHandler = Symbol('dragOverHandler');\nexport const dropHandler = Symbol('dropHandler');\n\ntype Constructor<T = {}> = new (...args: any[]) => T;\n\nexport declare class FileDropMixinInterface {\n dropTargetActive: boolean;\n\n /**\n * Processes dropped to the page files\n * @param files The list of dropped files\n * @abstract This is to be implemented by the platform bindings\n */\n processDroppedFiles(files: FileList): Promise<void>;\n}\n\n/**\n * Adds methods to accept files via drag and drop.\n * The mixin register the dnd events on the body element. When an object is dragged over the window it adds\n * this `drop-target` class to the `body` element. Additionally it sets the `dropTargetActive` property.\n * \n * The mixin also assumes that when the `drop-target` is set then the `drop-info` overlay is rendered.\n * However, it does not change the logic if the element is not in the DOM.\n * Use the provided `dropTargetTemplate()` function to generate template for the drag info.\n * \n * The class implementing this mixin should override the `processDroppedFiles(files)` method\n * to process the incoming files.\n *\n * @mixin\n */\nexport const FileDropMixin = dedupeMixin(<T extends Constructor<LitElement>>(superClass: T): Constructor<FileDropMixinInterface> & T => {\n class MyMixinClass extends superClass {\n @property() dropTargetActive: boolean;\n\n constructor(...args: any[]) {\n super(...args);\n this[dragEnterHandler] = this[dragEnterHandler].bind(this);\n this[dragLeaveHandler] = this[dragLeaveHandler].bind(this);\n this[dragOverHandler] = this[dragOverHandler].bind(this);\n this[dropHandler] = this[dropHandler].bind(this);\n\n this.dropTargetActive = false;\n\n document.body.addEventListener('dragenter', this[dragEnterHandler]);\n document.body.addEventListener('dragleave', this[dragLeaveHandler]);\n document.body.addEventListener('dragover', this[dragOverHandler]);\n document.body.addEventListener('drop', this[dropHandler]);\n }\n\n /**\n * Processes dropped to the page files\n * @param files The list of dropped files\n * @abstract This is to be implemented by the platform bindings\n */\n async processDroppedFiles(files: FileList): Promise<void> {\n // ...\n }\n\n /**\n * @returns The template for the drop file message\n */\n dropTargetTemplate(): TemplateResult {\n return html`\n <div class=\"drop-info\">\n <ui-icon icon=\"fileDownload\" class=\"drop-icon\"></ui-icon>\n <p class=\"drop-message\">Drop the file here</p>\n </div>\n `;\n }\n\n [dragEnterHandler](e: DragEvent): void {\n if (!e.dataTransfer) {\n return;\n }\n if (![...e.dataTransfer.types].includes('Files')) {\n return;\n }\n e.preventDefault();\n document.body.classList.add('drop-target');\n this.dropTargetActive = true;\n e.dataTransfer.effectAllowed = 'copy';\n }\n\n [dragLeaveHandler](e: DragEvent): void {\n if (!e.dataTransfer) {\n return;\n }\n if (![...e.dataTransfer.types].includes('Files')) {\n return;\n }\n const node = e.target as HTMLElement;\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n if (node !== document.body && !node.classList.contains('drop-info')) {\n return;\n }\n e.preventDefault();\n document.body.classList.remove('drop-target');\n this.dropTargetActive = false;\n }\n\n [dragOverHandler](e: DragEvent): void {\n if (!e.dataTransfer) {\n return;\n }\n if (![...e.dataTransfer.types].includes('Files')) {\n return;\n }\n const node = e.target as HTMLElement;\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n if (node !== document.body && !node.classList.contains('drop-info')) {\n return;\n }\n e.preventDefault();\n document.body.classList.add('drop-target');\n this.dropTargetActive = true;\n }\n\n [dropHandler](e: DragEvent): void {\n if (!e.dataTransfer) {\n return;\n }\n if (![...e.dataTransfer.types].includes('Files')) {\n return;\n }\n e.preventDefault();\n document.body.classList.remove('drop-target');\n this.dropTargetActive = false;\n this.processDroppedFiles(e.dataTransfer.files);\n }\n };\n return MyMixinClass as Constructor<FileDropMixinInterface> & T;\n});\n"]}
@@ -26,24 +26,11 @@ export const supportsAdoptingStyleSheets = window.ShadowRoot &&
26
26
  * @mixin
27
27
  */
28
28
  export const RenderableMixin = dedupeMixin((superClass) => {
29
+ var _a, _b;
29
30
  class RenderableMixinClass extends superClass {
30
31
  static get styles() {
31
32
  return css ``;
32
33
  }
33
- /**
34
- * Determines whether the initial render had run and the `firstRender()`
35
- * function was called.
36
- *
37
- * @default false
38
- */
39
- firstRendered = false;
40
- [renderingValue] = false;
41
- [hasPendingUpdatePromise] = false;
42
- [updateResolver];
43
- /**
44
- * @type A promise resolved when the render finished.
45
- */
46
- updateComplete;
47
34
  /**
48
35
  * True when rendering debouncer is running.
49
36
  */
@@ -52,6 +39,15 @@ export const RenderableMixin = dedupeMixin((superClass) => {
52
39
  }
53
40
  constructor(...args) {
54
41
  super(...args);
42
+ /**
43
+ * Determines whether the initial render had run and the `firstRender()`
44
+ * function was called.
45
+ *
46
+ * @default false
47
+ */
48
+ this.firstRendered = false;
49
+ this[_a] = false;
50
+ this[_b] = false;
55
51
  this[setUpdatePromise]();
56
52
  this.adaptStyles();
57
53
  }
@@ -118,7 +114,7 @@ export const RenderableMixin = dedupeMixin((superClass) => {
118
114
  this[renderPage]();
119
115
  });
120
116
  }
121
- [renderPage]() {
117
+ [(_a = renderingValue, _b = hasPendingUpdatePromise, renderPage)]() {
122
118
  const root = document.querySelector('#app');
123
119
  if (!root) {
124
120
  // eslint-disable-next-line no-console