mobility-toolbox-js 2.3.9 → 2.3.10

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 (471) hide show
  1. package/.esdoc.js +18 -0
  2. package/.eslintignore +1 -0
  3. package/.eslintrc.js +25 -0
  4. package/.fixpackrc +20 -0
  5. package/.github/workflows/build.yml +16 -0
  6. package/.github/workflows/conventional-pr-title.yml +16 -0
  7. package/.github/workflows/cypress.yml +101 -0
  8. package/.github/workflows/test.yml +17 -0
  9. package/.husky/commit-msg +4 -0
  10. package/.husky/post-checkout +4 -0
  11. package/.husky/post-merge +4 -0
  12. package/.husky/post-rebase +4 -0
  13. package/.husky/pre-commit +4 -0
  14. package/.lintstagedrc.js +10 -0
  15. package/.nvmrc +1 -0
  16. package/.prettierrc.js +5 -0
  17. package/.stylelintrc.js +4 -0
  18. package/CHANGELOG.md +132 -0
  19. package/LICENSE +21 -0
  20. package/MIGRATION-V2.md +248 -0
  21. package/README.md +42 -0
  22. package/__mocks__/mapbox-gl.js +81 -0
  23. package/__mocks__/maplibre-gl.js +81 -0
  24. package/babel.config.js +9 -0
  25. package/commitlint.config.js +1 -0
  26. package/cypress/e2e/examples/api.cy.js +7 -0
  27. package/cypress/e2e/examples/examples.cy.js +7 -0
  28. package/cypress/e2e/examples/navigation.cy.js +29 -0
  29. package/cypress/fixtures/example.json +5 -0
  30. package/cypress/plugins/index.js +21 -0
  31. package/cypress/support/commands.js +25 -0
  32. package/cypress/support/e2e.js +20 -0
  33. package/cypress.config.ts +15 -0
  34. package/data/fetchRoute.json +292 -0
  35. package/data/fetchTrajectories.json +18 -0
  36. package/data/fetchTrajectoryById.json +3 -0
  37. package/data/fetchTrajectoryStations.json +18 -0
  38. package/data/stopsSearch.json +15 -0
  39. package/dependabot.yml +15 -0
  40. package/doc/.eslintrc.json +1 -0
  41. package/doc/README.md +34 -0
  42. package/doc/next.config.js +16 -0
  43. package/doc/package.json +41 -0
  44. package/doc/pages/404.js +5 -0
  45. package/doc/pages/_app.js +61 -0
  46. package/doc/pages/_document.js +64 -0
  47. package/doc/pages/doc/[...slug].js +23 -0
  48. package/doc/pages/doc.js +23 -0
  49. package/doc/pages/example/[example].js +52 -0
  50. package/doc/pages/examples.js +34 -0
  51. package/doc/pages/index.js +25 -0
  52. package/doc/public/README.md +15 -0
  53. package/doc/public/favicon.ico +0 -0
  54. package/doc/public/static/assets/Lato-Black.ttf +0 -0
  55. package/doc/public/static/assets/Lato-BlackItalic.ttf +0 -0
  56. package/doc/public/static/assets/Lato-Bold.ttf +0 -0
  57. package/doc/public/static/assets/Lato-BoldItalic.ttf +0 -0
  58. package/doc/public/static/assets/Lato-Italic.ttf +0 -0
  59. package/doc/public/static/assets/Lato-Light.ttf +0 -0
  60. package/doc/public/static/assets/Lato-LightItalic.ttf +0 -0
  61. package/doc/public/static/assets/Lato-Regular.ttf +0 -0
  62. package/doc/public/static/assets/Lato-Thin.ttf +0 -0
  63. package/doc/public/static/assets/Lato-ThinItalic.ttf +0 -0
  64. package/doc/public/static/assets/OFL.txt +93 -0
  65. package/doc/public/static/examples/assets/tralis-live-map/index.js +11 -0
  66. package/doc/public/static/examples/assets/tralis-live-map/s1kreis.svg +105 -0
  67. package/doc/public/static/examples/assets/tralis-live-map/s20kreis.svg +101 -0
  68. package/doc/public/static/examples/assets/tralis-live-map/s2kreis.svg +95 -0
  69. package/doc/public/static/examples/assets/tralis-live-map/s3kreis.svg +95 -0
  70. package/doc/public/static/examples/assets/tralis-live-map/s4kreis.svg +95 -0
  71. package/doc/public/static/examples/assets/tralis-live-map/s6kreis.svg +95 -0
  72. package/doc/public/static/examples/assets/tralis-live-map/s7kreis.svg +95 -0
  73. package/doc/public/static/examples/assets/tralis-live-map/s8kreis.svg +93 -0
  74. package/doc/public/static/examples/assets/tralis-live-map/unknown.svg +107 -0
  75. package/doc/public/static/examples/layers.html +11 -0
  76. package/doc/public/static/examples/layers.js +97 -0
  77. package/doc/public/static/examples/mb-copyright.html +26 -0
  78. package/doc/public/static/examples/mb-copyright.js +37 -0
  79. package/doc/public/static/examples/mb-tracker.html +1 -0
  80. package/doc/public/static/examples/mb-tracker.js +40 -0
  81. package/doc/public/static/examples/mb-tracker.md +1 -0
  82. package/doc/public/static/examples/mb-tralis.html +1 -0
  83. package/doc/public/static/examples/mb-tralis.js +34 -0
  84. package/doc/public/static/examples/ol-copyright.html +26 -0
  85. package/doc/public/static/examples/ol-copyright.js +43 -0
  86. package/doc/public/static/examples/ol-mapbox-layer.html +1 -0
  87. package/doc/public/static/examples/ol-mapbox-layer.js +28 -0
  88. package/doc/public/static/examples/ol-mapbox-style-layer.html +12 -0
  89. package/doc/public/static/examples/ol-mapbox-style-layer.js +48 -0
  90. package/doc/public/static/examples/ol-query.html +32 -0
  91. package/doc/public/static/examples/ol-query.js +83 -0
  92. package/doc/public/static/examples/ol-routing.html +26 -0
  93. package/doc/public/static/examples/ol-routing.js +65 -0
  94. package/doc/public/static/examples/ol-routing.md +1 -0
  95. package/doc/public/static/examples/ol-stop-finder.html +15 -0
  96. package/doc/public/static/examples/ol-stop-finder.js +35 -0
  97. package/doc/public/static/examples/ol-stop-finder.md +1 -0
  98. package/doc/public/static/examples/ol-tracker.html +1 -0
  99. package/doc/public/static/examples/ol-tracker.js +41 -0
  100. package/doc/public/static/examples/ol-tracker.md +1 -0
  101. package/doc/public/static/examples/ol-tralis.html +5 -0
  102. package/doc/public/static/examples/ol-tralis.js +62 -0
  103. package/doc/public/static/examples/tralis-live-map.html +1 -0
  104. package/doc/public/static/examples/tralis-live-map.js +67 -0
  105. package/doc/public/static/examples/tralis-live-map.md +3 -0
  106. package/doc/public/static/img/live_tracker_mb.jpg +0 -0
  107. package/doc/public/static/img/live_tracker_munich.jpg +0 -0
  108. package/doc/public/static/img/live_tracker_ol.jpg +0 -0
  109. package/doc/public/static/img/mapbox.jpg +0 -0
  110. package/doc/public/static/img/mapbox_style.jpg +0 -0
  111. package/doc/public/static/img/ol-copyright.png +0 -0
  112. package/doc/public/static/img/query_objects.jpg +0 -0
  113. package/doc/public/static/img/routing.jpg +0 -0
  114. package/doc/public/static/img/simple_map.jpg +0 -0
  115. package/doc/public/static/img/stops.jpg +0 -0
  116. package/doc/public/vercel.svg +4 -0
  117. package/doc/src/components/CodeSandboxButton.js +102 -0
  118. package/doc/src/components/Documentation.js +42 -0
  119. package/doc/src/components/Esdoc/Anchor.js +57 -0
  120. package/doc/src/components/Esdoc/ClassDoc.js +272 -0
  121. package/doc/src/components/Esdoc/DeprecatedHTML.js +16 -0
  122. package/doc/src/components/Esdoc/DetailDocs.js +279 -0
  123. package/doc/src/components/Esdoc/DetailHTML.js +33 -0
  124. package/doc/src/components/Esdoc/DirectSubclassHTML.js +30 -0
  125. package/doc/src/components/Esdoc/DocBuilderUtils.js +697 -0
  126. package/doc/src/components/Esdoc/DocLinkHTML.js +63 -0
  127. package/doc/src/components/Esdoc/DocsLinkHTML.js +38 -0
  128. package/doc/src/components/Esdoc/Esdoc.js +63 -0
  129. package/doc/src/components/Esdoc/EsdocContent.js +56 -0
  130. package/doc/src/components/Esdoc/EsdocNavigation.js +13 -0
  131. package/doc/src/components/Esdoc/EsdocSearch.js +78 -0
  132. package/doc/src/components/Esdoc/ExperimentalHTML.js +17 -0
  133. package/doc/src/components/Esdoc/ExtendsChainHTML.js +32 -0
  134. package/doc/src/components/Esdoc/FileDocLinkHTML.js +62 -0
  135. package/doc/src/components/Esdoc/IdentifiersDoc.js +113 -0
  136. package/doc/src/components/Esdoc/IndirectSubclassHTML.js +30 -0
  137. package/doc/src/components/Esdoc/InheritedSummaryDoc.js +70 -0
  138. package/doc/src/components/Esdoc/InheritedSummaryHTML.js +38 -0
  139. package/doc/src/components/Esdoc/MixinClassesHTML.js +29 -0
  140. package/doc/src/components/Esdoc/NavDoc.js +112 -0
  141. package/doc/src/components/Esdoc/OverrideMethod.js +44 -0
  142. package/doc/src/components/Esdoc/OverrideMethodDescription.js +35 -0
  143. package/doc/src/components/Esdoc/Properties.js +89 -0
  144. package/doc/src/components/Esdoc/README.md +45 -0
  145. package/doc/src/components/Esdoc/SignatureHTML.js +123 -0
  146. package/doc/src/components/Esdoc/SingleDoc.js +31 -0
  147. package/doc/src/components/Esdoc/SummaryDoc.js +160 -0
  148. package/doc/src/components/Esdoc/SummaryHTML.js +96 -0
  149. package/doc/src/components/Esdoc/TypeDocLinkHTML.js +251 -0
  150. package/doc/src/components/Esdoc/index.js +7 -0
  151. package/doc/src/components/Esdoc/taffydb.js +2070 -0
  152. package/doc/src/components/Example.js +200 -0
  153. package/doc/src/components/ExampleCard.js +126 -0
  154. package/doc/src/components/Examples.js +78 -0
  155. package/doc/src/components/Home.js +121 -0
  156. package/doc/src/components/TrackerExample.js +39 -0
  157. package/doc/src/examples.js +117 -0
  158. package/doc/styles/App.scss +53 -0
  159. package/doc/styles/identifiers.css +38 -0
  160. package/doc/styles/search.css +76 -0
  161. package/doc/styles/style.css +603 -0
  162. package/esdoc/README.md +27 -0
  163. package/esdoc/plugins/MyPlugin.js +69 -0
  164. package/esdoc/plugins/dynamic-property-plugin/Plugin.js +50 -0
  165. package/esdoc/plugins/externals-plugin/Plugin.js +45 -0
  166. package/esdoc/plugins/externals-plugin/externals.js +93 -0
  167. package/esdoc/plugins/optional-chaining-plugin/Plugin.js +8 -0
  168. package/global-setup.js +3 -0
  169. package/jest.config.js +24 -0
  170. package/package.json +18 -18
  171. package/pull_request_template.md +17 -0
  172. package/scripts/read-pkg-json.js +22 -0
  173. package/src/api/RealtimeAPI.test.js +144 -0
  174. package/src/api/RealtimeAPI.ts +712 -0
  175. package/src/api/RoutingAPI.test.js +41 -0
  176. package/src/api/RoutingAPI.ts +47 -0
  177. package/src/api/StopsAPI.test.js +34 -0
  178. package/src/api/StopsAPI.ts +45 -0
  179. package/{api → src/api}/typedefs.js +11 -1
  180. package/src/common/api/HttpAPI.test.js +68 -0
  181. package/src/common/api/HttpAPI.ts +77 -0
  182. package/src/common/api/WebSocketAPI.test.js +421 -0
  183. package/src/common/api/WebSocketAPI.ts +515 -0
  184. package/src/common/controls/ControlCommon.test.js +106 -0
  185. package/src/common/controls/ControlCommon.ts +194 -0
  186. package/src/common/controls/CopyrightControlCommon.ts +41 -0
  187. package/src/common/controls/StopFinderControlCommon.ts +192 -0
  188. package/src/common/layers/LayerCommon.test.js +158 -0
  189. package/src/common/layers/LayerCommon.ts +321 -0
  190. package/src/common/mixins/RealtimeLayerMixin.ts +1168 -0
  191. package/src/common/mixins/UserInteractionsLayerMixin.test.js +227 -0
  192. package/src/common/mixins/UserInteractionsLayerMixin.ts +352 -0
  193. package/src/common/styles/realtimeDefaultStyle.ts +436 -0
  194. package/src/common/styles/realtimeDelayStyle.ts +27 -0
  195. package/src/common/styles/realtimeHeadingStyle.ts +138 -0
  196. package/src/common/styles/realtimeSimpleStyle.ts +25 -0
  197. package/{common → src/common}/typedefs.js +1 -1
  198. package/src/common/utils/compareDepartures.ts +46 -0
  199. package/src/common/utils/createCanvas.ts +33 -0
  200. package/src/common/utils/createRealtimeFilters.test.js +100 -0
  201. package/src/common/utils/createRealtimeFilters.ts +96 -0
  202. package/src/common/utils/debounceDeparturesMessages.ts +52 -0
  203. package/src/common/utils/debounceWebsocketMessages.ts +47 -0
  204. package/src/common/utils/getLayersAsFlatArray.ts +17 -0
  205. package/src/common/utils/getMapboxMapCopyrights.test.js +47 -0
  206. package/src/common/utils/getMapboxMapCopyrights.ts +52 -0
  207. package/src/common/utils/getMapboxRender.ts +104 -0
  208. package/src/common/utils/getMaplibreRender.ts +54 -0
  209. package/{common/utils/getRealtimeModeSuffix.d.ts → src/common/utils/getRealtimeModeSuffix.ts} +4 -2
  210. package/src/common/utils/getUrlWithParams.ts +21 -0
  211. package/src/common/utils/getVehiclePosition.ts +92 -0
  212. package/{common → src/common}/utils/index.js +1 -2
  213. package/src/common/utils/realtimeConfig.test.js +57 -0
  214. package/src/common/utils/realtimeConfig.ts +228 -0
  215. package/src/common/utils/removeDuplicate.test.js +22 -0
  216. package/src/common/utils/removeDuplicate.ts +22 -0
  217. package/src/common/utils/renderTrajectories.ts +194 -0
  218. package/src/common/utils/sortAndFilterDepartures.ts +78 -0
  219. package/src/common/utils/sortByDelay.ts +29 -0
  220. package/src/common/utils/timeUtils.test.js +16 -0
  221. package/src/common/utils/timeUtils.ts +45 -0
  222. package/{iife.js → src/iife.js} +3 -1
  223. package/src/index.js +10 -0
  224. package/{mapbox/controls/CopyrightControl.js → src/mapbox/controls/CopyrightControl.ts} +26 -21
  225. package/src/mapbox/layers/Layer.test.js +217 -0
  226. package/src/mapbox/layers/Layer.ts +144 -0
  227. package/src/mapbox/layers/RealtimeLayer.test.js +13 -0
  228. package/src/mapbox/layers/RealtimeLayer.ts +350 -0
  229. package/src/mapbox/utils/getMercatorResolution.ts +21 -0
  230. package/src/mapbox/utils/getSourceCoordinates.ts +34 -0
  231. package/src/ol/README.md +0 -0
  232. package/src/ol/controls/CopyrightControl.test.js +211 -0
  233. package/src/ol/controls/CopyrightControl.ts +82 -0
  234. package/src/ol/controls/RoutingControl.test.js +205 -0
  235. package/src/ol/controls/RoutingControl.ts +869 -0
  236. package/src/ol/controls/StopFinderControl.test.js +59 -0
  237. package/{ol/controls/StopFinderControl.js → src/ol/controls/StopFinderControl.ts} +10 -7
  238. package/src/ol/controls/snapshots/RoutingControlRouteGen10.json +58 -0
  239. package/src/ol/controls/snapshots/RoutingControlRouteGen100.json +292 -0
  240. package/src/ol/controls/snapshots/RoutingControlRouteGen30.json +69 -0
  241. package/src/ol/controls/snapshots/RoutingControlRouteGen5.json +58 -0
  242. package/src/ol/controls/snapshots/RoutingControlRouteOSM.json +759 -0
  243. package/src/ol/controls/snapshots/RoutingControlStation1.json +60 -0
  244. package/src/ol/controls/snapshots/RoutingControlStation2.json +49 -0
  245. package/src/ol/layers/Layer.test.js +212 -0
  246. package/src/ol/layers/Layer.ts +252 -0
  247. package/src/ol/layers/MapGlLayer.ts +294 -0
  248. package/src/ol/layers/MapboxLayer.test.js +190 -0
  249. package/src/ol/layers/MapboxLayer.ts +136 -0
  250. package/src/ol/layers/MapboxStyleLayer.test.js +258 -0
  251. package/src/ol/layers/MapboxStyleLayer.ts +466 -0
  252. package/{ol/layers/MaplibreLayer.d.ts → src/ol/layers/MaplibreLayer.ts} +21 -10
  253. package/src/ol/layers/RealtimeLayer.test.js +84 -0
  254. package/src/ol/layers/RealtimeLayer.ts +465 -0
  255. package/src/ol/layers/RoutingLayer.test.js +48 -0
  256. package/src/ol/layers/RoutingLayer.ts +113 -0
  257. package/src/ol/layers/VectorLayer.test.js +87 -0
  258. package/src/ol/layers/VectorLayer.ts +48 -0
  259. package/src/ol/layers/WMSLayer.test.js +65 -0
  260. package/src/ol/layers/WMSLayer.ts +114 -0
  261. package/src/ol/styles/fullTrajectoryDelayStyle.ts +37 -0
  262. package/src/ol/styles/fullTrajectoryStyle.ts +56 -0
  263. package/{setupTests.js → src/setupTests.js} +12 -7
  264. package/tsconfig.json +23 -0
  265. package/api/RealtimeAPI.d.ts +0 -290
  266. package/api/RealtimeAPI.d.ts.map +0 -1
  267. package/api/RealtimeAPI.js +0 -483
  268. package/api/RoutingAPI.d.ts +0 -37
  269. package/api/RoutingAPI.d.ts.map +0 -1
  270. package/api/RoutingAPI.js +0 -35
  271. package/api/StopsAPI.d.ts +0 -38
  272. package/api/StopsAPI.d.ts.map +0 -1
  273. package/api/StopsAPI.js +0 -36
  274. package/api/index.d.ts +0 -4
  275. package/api/index.d.ts.map +0 -1
  276. package/api/typedefs.d.ts +0 -179
  277. package/api/typedefs.d.ts.map +0 -1
  278. package/common/api/HttpAPI.d.ts +0 -31
  279. package/common/api/HttpAPI.d.ts.map +0 -1
  280. package/common/api/HttpAPI.js +0 -57
  281. package/common/api/WebSocketAPI.d.ts +0 -153
  282. package/common/api/WebSocketAPI.d.ts.map +0 -1
  283. package/common/api/WebSocketAPI.js +0 -341
  284. package/common/controls/ControlCommon.d.ts +0 -76
  285. package/common/controls/ControlCommon.d.ts.map +0 -1
  286. package/common/controls/ControlCommon.js +0 -150
  287. package/common/controls/CopyrightControlCommon.d.ts +0 -13
  288. package/common/controls/CopyrightControlCommon.d.ts.map +0 -1
  289. package/common/controls/CopyrightControlCommon.js +0 -34
  290. package/common/controls/StopFinderControlCommon.d.ts +0 -55
  291. package/common/controls/StopFinderControlCommon.d.ts.map +0 -1
  292. package/common/controls/StopFinderControlCommon.js +0 -144
  293. package/common/index.d.ts +0 -3
  294. package/common/index.d.ts.map +0 -1
  295. package/common/layers/LayerCommon.d.ts +0 -94
  296. package/common/layers/LayerCommon.d.ts.map +0 -1
  297. package/common/layers/LayerCommon.js +0 -244
  298. package/common/mixins/RealtimeLayerMixin.d.ts +0 -288
  299. package/common/mixins/RealtimeLayerMixin.d.ts.map +0 -1
  300. package/common/mixins/RealtimeLayerMixin.js +0 -779
  301. package/common/mixins/UserInteractionsLayerMixin.d.ts +0 -60
  302. package/common/mixins/UserInteractionsLayerMixin.d.ts.map +0 -1
  303. package/common/mixins/UserInteractionsLayerMixin.js +0 -241
  304. package/common/styles/index.d.ts +0 -5
  305. package/common/styles/index.d.ts.map +0 -1
  306. package/common/styles/realtimeDefaultStyle.d.ts +0 -36
  307. package/common/styles/realtimeDefaultStyle.d.ts.map +0 -1
  308. package/common/styles/realtimeDefaultStyle.js +0 -276
  309. package/common/styles/realtimeDelayStyle.d.ts +0 -12
  310. package/common/styles/realtimeDelayStyle.d.ts.map +0 -1
  311. package/common/styles/realtimeDelayStyle.js +0 -13
  312. package/common/styles/realtimeHeadingStyle.d.ts +0 -12
  313. package/common/styles/realtimeHeadingStyle.d.ts.map +0 -1
  314. package/common/styles/realtimeHeadingStyle.js +0 -87
  315. package/common/styles/realtimeSimpleStyle.d.ts +0 -4
  316. package/common/styles/realtimeSimpleStyle.d.ts.map +0 -1
  317. package/common/styles/realtimeSimpleStyle.js +0 -23
  318. package/common/typedefs.d.ts +0 -183
  319. package/common/typedefs.d.ts.map +0 -1
  320. package/common/utils/compareDepartures.d.ts +0 -11
  321. package/common/utils/compareDepartures.d.ts.map +0 -1
  322. package/common/utils/compareDepartures.js +0 -35
  323. package/common/utils/createCanvas.d.ts +0 -11
  324. package/common/utils/createCanvas.d.ts.map +0 -1
  325. package/common/utils/createCanvas.js +0 -28
  326. package/common/utils/createRealtimeFilters.d.ts +0 -13
  327. package/common/utils/createRealtimeFilters.d.ts.map +0 -1
  328. package/common/utils/createRealtimeFilters.js +0 -74
  329. package/common/utils/debounceDeparturesMessages.d.ts +0 -13
  330. package/common/utils/debounceDeparturesMessages.d.ts.map +0 -1
  331. package/common/utils/debounceDeparturesMessages.js +0 -28
  332. package/common/utils/debounceWebsocketMessages.d.ts +0 -12
  333. package/common/utils/debounceWebsocketMessages.d.ts.map +0 -1
  334. package/common/utils/debounceWebsocketMessages.js +0 -30
  335. package/common/utils/getLayersAsFlatArray.d.ts +0 -4
  336. package/common/utils/getLayersAsFlatArray.d.ts.map +0 -1
  337. package/common/utils/getLayersAsFlatArray.js +0 -16
  338. package/common/utils/getMapboxMapCopyrights.d.ts +0 -18
  339. package/common/utils/getMapboxMapCopyrights.d.ts.map +0 -1
  340. package/common/utils/getMapboxMapCopyrights.js +0 -30
  341. package/common/utils/getMapboxRender.d.ts +0 -8
  342. package/common/utils/getMapboxRender.d.ts.map +0 -1
  343. package/common/utils/getMapboxRender.js +0 -88
  344. package/common/utils/getMaplibreRender.d.ts +0 -9
  345. package/common/utils/getMaplibreRender.d.ts.map +0 -1
  346. package/common/utils/getMaplibreRender.js +0 -40
  347. package/common/utils/getRealtimeModeSuffix.d.ts.map +0 -1
  348. package/common/utils/getRealtimeModeSuffix.js +0 -7
  349. package/common/utils/getUrlWithParams.d.ts +0 -9
  350. package/common/utils/getUrlWithParams.d.ts.map +0 -1
  351. package/common/utils/getUrlWithParams.js +0 -18
  352. package/common/utils/getVehiclePosition.d.ts +0 -16
  353. package/common/utils/getVehiclePosition.d.ts.map +0 -1
  354. package/common/utils/getVehiclePosition.js +0 -72
  355. package/common/utils/index.d.ts +0 -18
  356. package/common/utils/index.d.ts.map +0 -1
  357. package/common/utils/realtimeConfig.d.ts +0 -53
  358. package/common/utils/realtimeConfig.d.ts.map +0 -1
  359. package/common/utils/realtimeConfig.js +0 -202
  360. package/common/utils/removeDuplicate.d.ts +0 -10
  361. package/common/utils/removeDuplicate.d.ts.map +0 -1
  362. package/common/utils/removeDuplicate.js +0 -15
  363. package/common/utils/renderTrajectories.d.ts +0 -17
  364. package/common/utils/renderTrajectories.d.ts.map +0 -1
  365. package/common/utils/renderTrajectories.js +0 -110
  366. package/common/utils/sortAndFilterDepartures.d.ts +0 -16
  367. package/common/utils/sortAndFilterDepartures.d.ts.map +0 -1
  368. package/common/utils/sortAndFilterDepartures.js +0 -58
  369. package/common/utils/sortByDelay.d.ts +0 -4
  370. package/common/utils/sortByDelay.d.ts.map +0 -1
  371. package/common/utils/sortByDelay.js +0 -21
  372. package/common/utils/timeUtils.d.ts +0 -24
  373. package/common/utils/timeUtils.d.ts.map +0 -1
  374. package/common/utils/timeUtils.js +0 -39
  375. package/iife.d.ts +0 -3
  376. package/iife.d.ts.map +0 -1
  377. package/index.d.ts +0 -10
  378. package/index.d.ts.map +0 -1
  379. package/index.js +0 -10
  380. package/mapbox/controls/CopyrightControl.d.ts +0 -29
  381. package/mapbox/controls/CopyrightControl.d.ts.map +0 -1
  382. package/mapbox/controls/index.d.ts +0 -2
  383. package/mapbox/controls/index.d.ts.map +0 -1
  384. package/mapbox/index.d.ts +0 -6
  385. package/mapbox/index.d.ts.map +0 -1
  386. package/mapbox/layers/Layer.d.ts +0 -59
  387. package/mapbox/layers/Layer.d.ts.map +0 -1
  388. package/mapbox/layers/Layer.js +0 -101
  389. package/mapbox/layers/RealtimeLayer.d.ts +0 -180
  390. package/mapbox/layers/RealtimeLayer.d.ts.map +0 -1
  391. package/mapbox/layers/RealtimeLayer.js +0 -270
  392. package/mapbox/layers/index.d.ts +0 -3
  393. package/mapbox/layers/index.d.ts.map +0 -1
  394. package/mapbox/utils/getMercatorResolution.d.ts +0 -9
  395. package/mapbox/utils/getMercatorResolution.d.ts.map +0 -1
  396. package/mapbox/utils/getMercatorResolution.js +0 -18
  397. package/mapbox/utils/getSourceCoordinates.d.ts +0 -9
  398. package/mapbox/utils/getSourceCoordinates.d.ts.map +0 -1
  399. package/mapbox/utils/getSourceCoordinates.js +0 -27
  400. package/mapbox/utils/index.d.ts +0 -3
  401. package/mapbox/utils/index.d.ts.map +0 -1
  402. package/mbt.js +0 -64706
  403. package/mbt.js.map +0 -7
  404. package/mbt.min.js +0 -1090
  405. package/mbt.min.js.map +0 -7
  406. package/ol/controls/CopyrightControl.d.ts +0 -31
  407. package/ol/controls/CopyrightControl.d.ts.map +0 -1
  408. package/ol/controls/CopyrightControl.js +0 -68
  409. package/ol/controls/RoutingControl.d.ts +0 -193
  410. package/ol/controls/RoutingControl.d.ts.map +0 -1
  411. package/ol/controls/RoutingControl.js +0 -631
  412. package/ol/controls/StopFinderControl.d.ts +0 -30
  413. package/ol/controls/StopFinderControl.d.ts.map +0 -1
  414. package/ol/controls/index.d.ts +0 -4
  415. package/ol/controls/index.d.ts.map +0 -1
  416. package/ol/index.d.ts +0 -6
  417. package/ol/index.d.ts.map +0 -1
  418. package/ol/layers/Layer.d.ts +0 -86
  419. package/ol/layers/Layer.d.ts.map +0 -1
  420. package/ol/layers/Layer.js +0 -174
  421. package/ol/layers/MapGlLayer.d.ts +0 -67
  422. package/ol/layers/MapGlLayer.d.ts.map +0 -1
  423. package/ol/layers/MapGlLayer.js +0 -218
  424. package/ol/layers/MapboxLayer.d.ts +0 -50
  425. package/ol/layers/MapboxLayer.d.ts.map +0 -1
  426. package/ol/layers/MapboxLayer.js +0 -109
  427. package/ol/layers/MapboxStyleLayer.d.ts +0 -130
  428. package/ol/layers/MapboxStyleLayer.d.ts.map +0 -1
  429. package/ol/layers/MapboxStyleLayer.js +0 -378
  430. package/ol/layers/MaplibreLayer.d.ts.map +0 -1
  431. package/ol/layers/MaplibreLayer.js +0 -34
  432. package/ol/layers/RealtimeLayer.d.ts +0 -202
  433. package/ol/layers/RealtimeLayer.d.ts.map +0 -1
  434. package/ol/layers/RealtimeLayer.js +0 -332
  435. package/ol/layers/RoutingLayer.d.ts +0 -35
  436. package/ol/layers/RoutingLayer.d.ts.map +0 -1
  437. package/ol/layers/RoutingLayer.js +0 -85
  438. package/ol/layers/VectorLayer.d.ts +0 -25
  439. package/ol/layers/VectorLayer.d.ts.map +0 -1
  440. package/ol/layers/VectorLayer.js +0 -38
  441. package/ol/layers/WMSLayer.d.ts +0 -42
  442. package/ol/layers/WMSLayer.d.ts.map +0 -1
  443. package/ol/layers/WMSLayer.js +0 -88
  444. package/ol/layers/index.d.ts +0 -9
  445. package/ol/layers/index.d.ts.map +0 -1
  446. package/ol/styles/fullTrajectoryDelayStyle.d.ts +0 -4
  447. package/ol/styles/fullTrajectoryDelayStyle.d.ts.map +0 -1
  448. package/ol/styles/fullTrajectoryDelayStyle.js +0 -33
  449. package/ol/styles/fullTrajectoryStyle.d.ts +0 -5
  450. package/ol/styles/fullTrajectoryStyle.d.ts.map +0 -1
  451. package/ol/styles/fullTrajectoryStyle.js +0 -44
  452. package/ol/styles/index.d.ts +0 -3
  453. package/ol/styles/index.d.ts.map +0 -1
  454. package/setupTests.d.ts +0 -2
  455. package/setupTests.d.ts.map +0 -1
  456. /package/{api → src/api}/index.js +0 -0
  457. /package/{common → src/common}/index.js +0 -0
  458. /package/{common → src/common}/styles/index.js +0 -0
  459. /package/{mapbox → src/mapbox}/controls/index.js +0 -0
  460. /package/{mapbox → src/mapbox}/index.js +0 -0
  461. /package/{mapbox → src/mapbox}/layers/index.js +0 -0
  462. /package/{mapbox → src/mapbox}/utils/index.js +0 -0
  463. /package/{ol → src/ol}/controls/index.js +0 -0
  464. /package/{ol → src/ol}/index.js +0 -0
  465. /package/{ol → src/ol}/layers/index.js +0 -0
  466. /package/{ol → src/ol}/styles/index.js +0 -0
  467. /package/{types → src/types}/common.d.ts +0 -0
  468. /package/{types → src/types}/index.d.ts +0 -0
  469. /package/{types → src/types}/realtime.d.ts +0 -0
  470. /package/{types → src/types}/routing.d.ts +0 -0
  471. /package/{types → src/types}/stops.d.ts +0 -0
@@ -0,0 +1,697 @@
1
+ /* eslint-disable no-restricted-syntax */
2
+ /* eslint-disable no-underscore-dangle */
3
+ import React from 'react';
4
+
5
+ // We had to copy the taffydb code here instead of loading the module because nextjs can't import the module properly
6
+ // so the taffydb.js file in this folder is a copy paste from taffydb@2.7.3 with a esm default export at the end.
7
+ import taffy from './taffydb';
8
+ import docss from './index.json';
9
+
10
+ /**
11
+ * Load the config into a in memory db.
12
+ * https://github.com/esdoc/esdoc-plugins/blob/2de5022baa569785a189056a99acd1d7ca8284b7/esdoc-publish-html-plugin/src/Plugin.js#L33
13
+ */
14
+ export const _data = taffy(docss);
15
+
16
+ /**
17
+ * Index used for the search.
18
+ */
19
+ let searchIndex;
20
+
21
+ /**
22
+ * find doc objects that is ordered.
23
+ * https://github.com/esdoc/esdoc-plugins/blob/2de5022baa569785a189056a99acd1d7ca8284b7/esdoc-publish-html-plugin/src/Builder/DocBuilder.js#L117
24
+ * @param {string} order - doc objects order(``column asec`` or ``column desc``).
25
+ * @param {...Object} cond - condition objects
26
+ * @returns {DocObject[]} found doc objects.
27
+ * @private
28
+ */
29
+ export const _orderedFind = (order, ...cond) => {
30
+ const data = _data(...cond);
31
+
32
+ if (order) {
33
+ return data.order(`${order}, name asec`).map((v) => v);
34
+ }
35
+ return data.order('name asec').map((v) => v);
36
+ };
37
+
38
+ /**
39
+ * find doc object.
40
+ * https://github.com/esdoc/esdoc-plugins/blob/2de5022baa569785a189056a99acd1d7ca8284b7/esdoc-publish-html-plugin/src/Builder/DocBuilder.js#L36
41
+ * @param {...Object} cond - find condition.
42
+ * @returns {DocObject[]} found doc objects.
43
+ * @private
44
+ */
45
+ export const _find = (...cond) => {
46
+ return _orderedFind(null, ...cond);
47
+ };
48
+
49
+ /**
50
+ * find all identifiers with kind grouping.
51
+ * https://github.com/esdoc/esdoc-plugins/blob/2de5022baa569785a189056a99acd1d7ca8284b7/esdoc-publish-html-plugin/src/Builder/DocBuilder.js#L46
52
+ * @returns {{class: DocObject[], interface: DocObject[], function: DocObject[], variable: DocObject[], typedef: DocObject[], external: DocObject[]}} found doc objects.
53
+ * @private
54
+ */
55
+ export const _findAllIdentifiersKindGrouping = () => {
56
+ const result = {
57
+ class: _find([{ kind: 'class', interface: false }]),
58
+ interface: _find([{ kind: 'class', interface: true }]),
59
+ function: _find([{ kind: 'function' }]),
60
+ variable: _find([{ kind: 'variable' }]),
61
+ typedef: _find([{ kind: 'typedef' }]),
62
+ external: _find([{ kind: 'external' }]).filter((v) => !v.builtinExternal),
63
+ };
64
+ return result;
65
+ };
66
+
67
+ /**
68
+ * fuzzy find doc object by name.
69
+ * https://github.com/esdoc/esdoc-plugins/blob/2de5022baa569785a189056a99acd1d7ca8284b7/esdoc-publish-html-plugin/src/Builder/DocBuilder.js#L63
70
+ * - equal with longname
71
+ * - equal with name
72
+ * - include in longname
73
+ * - include in ancestor
74
+ *
75
+ * @param {string} name - target identifier name.
76
+ * @param {string} [kind] - target kind.
77
+ * @returns {DocObject[]} found doc objects.
78
+ * @private
79
+ */
80
+ export const _findByName = (name, kind = null) => {
81
+ let docs;
82
+
83
+ if (kind) {
84
+ docs = _orderedFind(null, { longname: name, kind });
85
+ } else {
86
+ docs = _orderedFind(null, { longname: name });
87
+ }
88
+ if (docs.length) return docs;
89
+
90
+ if (kind) {
91
+ docs = _orderedFind(null, { name, kind });
92
+ } else {
93
+ docs = _orderedFind(null, { name });
94
+ }
95
+ if (docs.length) return docs;
96
+
97
+ const regexp = new RegExp(`[~]${name.replace('*', '\\*')}$`); // if name is `*`, need to escape.
98
+ if (kind) {
99
+ docs = _orderedFind(null, { longname: { regex: regexp }, kind });
100
+ } else {
101
+ docs = _orderedFind(null, { longname: { regex: regexp } });
102
+ }
103
+ if (docs.length) return docs;
104
+
105
+ // inherited method?
106
+ const matched = name.match(/(.*)[.#](.*)$/); // instance method(Foo#bar) or static method(Foo.baz)
107
+ if (matched) {
108
+ const parent = matched[1];
109
+ const childName = matched[2];
110
+ const parentDoc = _findByName(parent, 'class')[0];
111
+ if (parentDoc && parentDoc._custom_extends_chains) {
112
+ for (const superLongname of parentDoc._custom_extends_chains) {
113
+ docs = _find({ memberof: superLongname, name: childName });
114
+ if (docs.length) return docs;
115
+ }
116
+ }
117
+ }
118
+
119
+ return [];
120
+ };
121
+
122
+ /**
123
+ * get file name of output html page.
124
+ * https://github.com/esdoc/esdoc-plugins/blob/2de5022baa569785a189056a99acd1d7ca8284b7/esdoc-publish-html-plugin/src/Builder/DocBuilder.js#L555
125
+ * @param {DocObject} doc - target doc object.
126
+ * @returns {string} file name.
127
+ * @private
128
+ */
129
+ const _getOutputFileName = (doc) => {
130
+ switch (doc.kind) {
131
+ case 'variable':
132
+ return 'variable/index.html';
133
+ case 'function':
134
+ return 'function/index.html';
135
+ case 'member': // fall
136
+ case 'method': // fall
137
+ case 'constructor': // fall
138
+ case 'set': // fall
139
+ case 'get': {
140
+ // fal
141
+ const parentDoc = _find({ longname: doc.memberof })[0];
142
+ return _getOutputFileName(parentDoc);
143
+ }
144
+ case 'external':
145
+ return 'external/index.html';
146
+ case 'typedef':
147
+ return 'typedef/index.html';
148
+ case 'class':
149
+ return `class/${doc.longname}.html`;
150
+ case 'file':
151
+ return `file/${doc.name}.html`;
152
+ case 'testFile':
153
+ return `test-file/${doc.name}.html`;
154
+ case 'test':
155
+ return 'test.html';
156
+ default:
157
+ throw new Error('DocBuilder: can not resolve file name.');
158
+ }
159
+ };
160
+
161
+ /**
162
+ * gat url of output html page.
163
+ * https://github.com/esdoc/esdoc-plugins/blob/2de5022baa569785a189056a99acd1d7ca8284b7/esdoc-publish-html-plugin/src/Builder/DocBuilder.js#L533
164
+ * @param {DocObject} doc - target doc object.
165
+ * @returns {string} url of output html. it is relative path from output root dir.
166
+ * @private
167
+ */
168
+ export const _getURL = (doc) => {
169
+ let inner = false;
170
+ if (
171
+ [
172
+ 'variable',
173
+ 'function',
174
+ 'member',
175
+ 'typedef',
176
+ 'method',
177
+ 'constructor',
178
+ 'get',
179
+ 'set',
180
+ ].includes(doc.kind)
181
+ ) {
182
+ inner = true;
183
+ }
184
+
185
+ if (inner) {
186
+ const scope = doc.static ? 'static' : 'instance';
187
+ const fileName = _getOutputFileName(doc);
188
+ return `${fileName}#${scope}-${doc.kind}-${doc.name}`;
189
+ }
190
+ const fileName = _getOutputFileName(doc);
191
+ return fileName;
192
+ };
193
+
194
+ /**
195
+ * resolve class extends chain.
196
+ * https://github.com/esdoc/esdoc-plugins/blob/2de5022baa569785a189056a99acd1d7ca8284b7/esdoc-publish-html-plugin/src/Builder/DocResolver.js#L146
197
+ * add following special property.
198
+ * - ``_custom_extends_chain``: ancestor class chain.
199
+ * - ``_custom_direct_subclasses``: class list that direct extends target doc.
200
+ * - ``_custom_indirect_subclasses``: class list that indirect extends target doc.
201
+ * - ``_custom_indirect_implements``: class list that target doc indirect implements.
202
+ * - ``_custom_direct_implemented``: class list that direct implements target doc.
203
+ * - ``_custom_indirect_implemented``: class list that indirect implements target doc.
204
+ *
205
+ * @private
206
+ */
207
+ export const _resolveExtendsChain = (docs) => {
208
+ if (_data.__RESOLVED_EXTENDS_CHAIN__) return;
209
+
210
+ const extendsChain = (doc) => {
211
+ if (!doc.extends) return;
212
+
213
+ const selfDoc = doc;
214
+
215
+ // traverse super class.
216
+ const chains = [];
217
+
218
+ /* eslint-disable */
219
+ while (1) {
220
+ if (!doc.extends) break;
221
+
222
+ let superClassDoc = _findByName(doc.extends[0])[0];
223
+
224
+ if (superClassDoc) {
225
+ // this is circular extends
226
+ if (superClassDoc.longname === selfDoc.longname) {
227
+ break;
228
+ }
229
+
230
+ chains.push(superClassDoc.longname);
231
+ doc = superClassDoc;
232
+ } else {
233
+ chains.push(doc.extends[0]);
234
+ break;
235
+ }
236
+ }
237
+
238
+ if (chains.length) {
239
+ // direct subclass
240
+ let superClassDoc = _findByName(chains[0])[0];
241
+ if (superClassDoc) {
242
+ if (!superClassDoc._custom_direct_subclasses)
243
+ superClassDoc._custom_direct_subclasses = [];
244
+ superClassDoc._custom_direct_subclasses.push(selfDoc.longname);
245
+ }
246
+
247
+ // indirect subclass
248
+ for (let superClassLongname of chains.slice(1)) {
249
+ superClassDoc = _findByName(superClassLongname)[0];
250
+ if (superClassDoc) {
251
+ if (!superClassDoc._custom_indirect_subclasses)
252
+ superClassDoc._custom_indirect_subclasses = [];
253
+ superClassDoc._custom_indirect_subclasses.push(selfDoc.longname);
254
+ }
255
+ }
256
+
257
+ // indirect implements and mixes
258
+ for (let superClassLongname of chains) {
259
+ superClassDoc = _findByName(superClassLongname)[0];
260
+ if (!superClassDoc) continue;
261
+
262
+ // indirect implements
263
+ if (superClassDoc.implements) {
264
+ if (!selfDoc._custom_indirect_implements)
265
+ selfDoc._custom_indirect_implements = [];
266
+ selfDoc._custom_indirect_implements.push(...superClassDoc.implements);
267
+ }
268
+
269
+ // indirect mixes
270
+ //if (superClassDoc.mixes) {
271
+ // if (!selfDoc._custom_indirect_mixes) selfDoc._custom_indirect_mixes = [];
272
+ // selfDoc._custom_indirect_mixes.push(...superClassDoc.mixes);
273
+ //}
274
+ }
275
+
276
+ // extends chains
277
+ selfDoc._custom_extends_chains = chains.reverse();
278
+ }
279
+ };
280
+
281
+ let implemented = (doc) => {
282
+ let selfDoc = doc;
283
+
284
+ // direct implemented (like direct subclass)
285
+ for (let superClassLongname of selfDoc.implements || []) {
286
+ let superClassDoc = _findByName(superClassLongname)[0];
287
+ if (!superClassDoc) continue;
288
+ if (!superClassDoc._custom_direct_implemented)
289
+ superClassDoc._custom_direct_implemented = [];
290
+ superClassDoc._custom_direct_implemented.push(selfDoc.longname);
291
+ }
292
+
293
+ // indirect implemented (like indirect subclass)
294
+ for (let superClassLongname of selfDoc._custom_indirect_implements || []) {
295
+ let superClassDoc = _findByName(superClassLongname)[0];
296
+ if (!superClassDoc) continue;
297
+ if (!superClassDoc._custom_indirect_implemented)
298
+ superClassDoc._custom_indirect_implemented = [];
299
+ superClassDoc._custom_indirect_implemented.push(selfDoc.longname);
300
+ }
301
+ };
302
+
303
+ //var mixed = (doc) =>{
304
+ // var selfDoc = doc;
305
+ //
306
+ // // direct mixed (like direct subclass)
307
+ // for (var superClassLongname of selfDoc.mixes || []) {
308
+ // var superClassDoc = _find({longname: superClassLongname})[0];
309
+ // if (!superClassDoc) continue;
310
+ // if(!superClassDoc._custom_direct_mixed) superClassDoc._custom_direct_mixed = [];
311
+ // superClassDoc._custom_direct_mixed.push(selfDoc.longname);
312
+ // }
313
+ //
314
+ // // indirect mixed (like indirect subclass)
315
+ // for (var superClassLongname of selfDoc._custom_indirect_mixes || []) {
316
+ // var superClassDoc = _find({longname: superClassLongname})[0];
317
+ // if (!superClassDoc) continue;
318
+ // if(!superClassDoc._custom_indirect_mixed) superClassDoc._custom_indirect_mixed = [];
319
+ // superClassDoc._custom_indirect_mixed.push(selfDoc.longname);
320
+ // }
321
+ //};
322
+
323
+ let classDocs = _find({ kind: 'class' });
324
+ for (let doc of classDocs) {
325
+ extendsChain(doc);
326
+ implemented(doc);
327
+ //mixed(doc);
328
+ }
329
+ return docs;
330
+
331
+ _data.__RESOLVED_EXTENDS_CHAIN__ = true;
332
+ };
333
+
334
+ /**
335
+ * resolve ignore property.
336
+ * https://github.com/esdoc/esdoc-plugins/blob/2de5022baa569785a189056a99acd1d7ca8284b7/esdoc-publish-html-plugin/src/Builder/DocResolver.js#L43
337
+ * remove docs that has ignore property.
338
+ * @private
339
+ */
340
+ export const _resolveIgnore = (docs) => {
341
+ if (_data.__RESOLVED_IGNORE__) return;
342
+
343
+ const ignoreDocs = _find({ ignore: true });
344
+ for (const doc of ignoreDocs) {
345
+ const longname = doc.longname.replace(/[$]/g, '\\$');
346
+ const regex = new RegExp(`^${longname}[.~#]`);
347
+ _data({ longname: { regex: regex } }).remove();
348
+ }
349
+ _data({ ignore: true }).remove();
350
+
351
+ _data.__RESOLVED_IGNORE__ = true;
352
+ return docs;
353
+ };
354
+
355
+ /**
356
+ * resolve @link as html link.
357
+ * https://github.com/esdoc/esdoc-plugins/blob/2de5022baa569785a189056a99acd1d7ca8284b7/esdoc-publish-html-plugin/src/Builder/DocResolver.js#L89
358
+ * @private
359
+ * @todo resolve all ``description`` property.
360
+ */
361
+ export const _resolveLink = (docs) => {
362
+ if (_data.__RESOLVED_LINK__) return;
363
+
364
+ const link = (str) => {
365
+ if (!str) return str;
366
+ return str.replace(/\{@link ([\w#_\-.:~\/$]+)}/g, (str, longname) => {
367
+ // Code from DocLinkHTML.js
368
+ // transform {@link } in markdown.
369
+ const doc = _findByName(longname)[0];
370
+ if (!doc) {
371
+ return str;
372
+ }
373
+ const url = _getURL(doc, false);
374
+ if (url) {
375
+ return `[${longname}](/doc/${url.replace(/\./g, '%20')})`;
376
+ }
377
+ });
378
+ };
379
+
380
+ _data().each((v) => {
381
+ v.description = link(v.description);
382
+
383
+ if (v.params) {
384
+ for (const param of v.params) {
385
+ param.description = link(param.description);
386
+ }
387
+ }
388
+
389
+ if (v.properties) {
390
+ for (const property of v.properties) {
391
+ property.description = link(property.description);
392
+ }
393
+ }
394
+
395
+ if (v.return) {
396
+ v.return.description = link(v.return.description);
397
+ }
398
+
399
+ if (v.throws) {
400
+ for (const _throw of v.throws) {
401
+ _throw.description = link(_throw.description);
402
+ }
403
+ }
404
+
405
+ if (v.listens) {
406
+ for (const _listen of v.listens) {
407
+ _listen.description = link(_listen.description);
408
+ }
409
+ }
410
+
411
+ if (v.emits) {
412
+ for (const _emit of v.emits) {
413
+ _emit.description = link(_emit.description);
414
+ }
415
+ }
416
+
417
+ if (v.see) {
418
+ for (let i = 0; i < v.see.length; i++) {
419
+ if (v.see[i].indexOf('{@link') === 0) {
420
+ v.see[i] = link(v.see[i]);
421
+ } else if (v.see[i].indexOf('<a href') === 0) {
422
+ // ignore
423
+ } else {
424
+ v.see[i] = `<a href="${v.see[i]}">${v.see[i]}</a>`;
425
+ }
426
+ }
427
+ }
428
+ });
429
+
430
+ _data.__RESOLVED_LINK__ = true;
431
+ return docs;
432
+ };
433
+
434
+ /**
435
+ * resolve necessary identifier.
436
+ * https://github.com/esdoc/esdoc-plugins/blob/2de5022baa569785a189056a99acd1d7ca8284b7/esdoc-publish-html-plugin/src/Builder/DocResolver.js#L277
437
+ *
438
+ * ```javascript
439
+ * class Foo {}
440
+ *
441
+ * export default Bar extends Foo {}
442
+ * ```
443
+ *
444
+ * ``Foo`` is not exported, but ``Bar`` extends ``Foo``.
445
+ * ``Foo`` is necessary.
446
+ * So, ``Foo`` must be exported by force.
447
+ *
448
+ * @private
449
+ */
450
+ export const _resolveNecessary = (docs) => {
451
+ _data({ export: false }).update(function () {
452
+ let doc = this;
453
+ let childNames = [];
454
+ if (doc._custom_direct_subclasses)
455
+ childNames.push(...doc._custom_direct_subclasses);
456
+ if (doc._custom_indirect_subclasses)
457
+ childNames.push(...doc._custom_indirect_subclasses);
458
+ if (doc._custom_direct_implemented)
459
+ childNames.push(...doc._custom_direct_implemented);
460
+ if (doc._custom_indirect_implemented)
461
+ childNames.push(...doc._custom_indirect_implemented);
462
+
463
+ for (let childName of childNames) {
464
+ let childDoc = _find({ longname: childName })[0];
465
+ if (!childDoc) continue;
466
+ if (!childDoc.ignore && childDoc.export) {
467
+ doc.ignore = false;
468
+ return doc;
469
+ }
470
+ }
471
+ });
472
+ return docs;
473
+ };
474
+
475
+ /**
476
+ * find doc object for each access.
477
+ * https://github.com/esdoc/esdoc-plugins/blob/2de5022baa569785a189056a99acd1d7ca8284b7/esdoc-publish-html-plugin/src/Builder/DocBuilder.js#L226
478
+ * @param {DocObject} doc - parent doc object.
479
+ * @param {string} kind - kind property condition.
480
+ * @param {boolean} isStatic - static property condition
481
+ * @returns {Array[]} found doc objects.
482
+ * @property {Array[]} 0 - ['Public', DocObject[]]
483
+ * @property {Array[]} 1 - ['Protected', DocObject[]]
484
+ * @property {Array[]} 2 - ['Private', DocObject[]]
485
+ * @private
486
+ */
487
+ export const _findAccessDocs = (doc, kind, isStatic = true) => {
488
+ const cond = { kind: kind, static: isStatic };
489
+
490
+ if (doc) cond.memberof = doc.longname;
491
+
492
+ /* eslint-disable default-case */
493
+ switch (kind) {
494
+ case 'class':
495
+ cond.interface = false;
496
+ break;
497
+ case 'interface':
498
+ cond.kind = 'class';
499
+ cond.interface = true;
500
+ break;
501
+ case 'member':
502
+ cond.kind = ['member', 'get', 'set'];
503
+ break;
504
+ }
505
+
506
+ const publicDocs = _find(cond, { access: 'public' }).filter(
507
+ (v) => !v.builtinExternal,
508
+ );
509
+ const protectedDocs = _find(cond, { access: 'protected' }).filter(
510
+ (v) => !v.builtinExternal,
511
+ );
512
+ const privateDocs = _find(cond, { access: 'private' }).filter(
513
+ (v) => !v.builtinExternal,
514
+ );
515
+ const accessDocs = [
516
+ ['Public', publicDocs],
517
+ // We don't want to display private and protected functions
518
+ // to keep the doc simple as possible. Feel free to uncomment
519
+ // the following line if you want them.
520
+ // ['Protected', protectedDocs],
521
+ // ['Private', privateDocs],
522
+ ];
523
+
524
+ return accessDocs;
525
+ };
526
+
527
+ /**
528
+ * shorten description.
529
+ * e.g. ``this is JavaScript. this is Java.`` => ``this is JavaScript.``.
530
+ * https://github.com/esdoc/esdoc-plugins/blob/2de5022baa569785a189056a99acd1d7ca8284b7/esdoc-publish-html-plugin/src/Builder/util.js#L4
531
+ *
532
+ * @param {DocObject} doc - target doc object.
533
+ * @param {boolean} [asMarkdown=false] - is true, test as markdown and convert to html.
534
+ * @returns {string} shorten description.
535
+ * @todo shorten before process markdown.
536
+ */
537
+ export function shorten(doc, asMarkdown = false) {
538
+ if (!doc) return '';
539
+
540
+ if (doc.summary) return doc.summary;
541
+
542
+ const desc = doc.descriptionRaw;
543
+ if (!desc) return '';
544
+
545
+ let len = desc.length;
546
+ let inSQuote = false;
547
+ let inWQuote = false;
548
+ let inCode = false;
549
+ for (let i = 0; i < desc.length; i++) {
550
+ const char1 = desc.charAt(i);
551
+ const char2 = desc.charAt(i + 1);
552
+ const char4 = desc.substr(i, 6);
553
+ const char5 = desc.substr(i, 7);
554
+ if (char1 === "'") inSQuote = !inSQuote;
555
+ else if (char1 === '"') inWQuote = !inWQuote;
556
+ else if (char4 === '<code>') inCode = true;
557
+ else if (char5 === '</code>') inCode = false;
558
+
559
+ if (inSQuote || inCode || inWQuote) continue;
560
+
561
+ if (char1 === '.') {
562
+ if (char2 === ' ' || char2 === '\n' || char2 === '<') {
563
+ len = i + 1;
564
+ break;
565
+ }
566
+ } else if (char1 === '\n' && char2 === '\n') {
567
+ len = i + 1;
568
+ break;
569
+ }
570
+ }
571
+
572
+ let result = desc.substr(0, len);
573
+ // Use Markdown component instead
574
+ // if (asMarkdown) {
575
+ // result = markdown(result);
576
+ // }
577
+
578
+ return result;
579
+ }
580
+
581
+ /**
582
+ * parse ``@example`` value.
583
+ * ``@example`` value can have ``<caption>`` tag.
584
+ * https://github.com/esdoc/esdoc-plugins/blob/2de5022baa569785a189056a99acd1d7ca8284b7/esdoc-publish-html-plugin/src/Builder/util.js#L127
585
+ *
586
+ * @param {string} example - target example value.
587
+ * @returns {{body: string, caption: string}} parsed example value.
588
+ */
589
+ export function parseExample(example) {
590
+ let body = example;
591
+ let caption = '';
592
+
593
+ /* eslint-disable no-control-regex */
594
+ const regexp = new RegExp('^<caption>(.*?)</caption>\n');
595
+ const matched = example.match(regexp);
596
+ if (matched) {
597
+ body = example.replace(regexp, '');
598
+ caption = matched[1].trim();
599
+ }
600
+
601
+ return { body, caption };
602
+ }
603
+
604
+ /**
605
+ * escape URL hash.
606
+ * https://github.com/esdoc/esdoc-plugins/blob/2de5022baa569785a189056a99acd1d7ca8284b7/esdoc-publish-html-plugin/src/Builder/util.js#L149
607
+ * @param {string} hash - URL hash for HTML a tag and id tag
608
+ * @returns {string} escaped URL hash
609
+ */
610
+ export const escapeURLHash = (hash) => {
611
+ return hash
612
+ .toLowerCase()
613
+ .replace(/[~!@#$%^&*()_+=\[\]\\{}|;':"<>?,.\/ ]/g, '-');
614
+ };
615
+
616
+ /**
617
+ * Create search index of identifier builder class.
618
+ * https://github.com/esdoc/esdoc-plugins/blob/2de5022baa569785a189056a99acd1d7ca8284b7/esdoc-publish-html-plugin/src/Builder/SearchIndexBuilder.js#L7
619
+ */
620
+ export const _getSearchIndex = () => {
621
+ if (searchIndex) {
622
+ return searchIndex;
623
+ }
624
+
625
+ searchIndex = [];
626
+ const docs = _find({});
627
+
628
+ for (const doc of docs) {
629
+ if (doc.kind === 'index') continue;
630
+ if (doc.kind.indexOf('manual') === 0) continue;
631
+
632
+ let indexText;
633
+ let url;
634
+ let displayText;
635
+
636
+ if (doc.importPath) {
637
+ displayText = (
638
+ <>
639
+ <span>{doc.name}</span>{' '}
640
+ <span class="search-result-import-path">{doc.importPath}</span>
641
+ </>
642
+ );
643
+ indexText = `${doc.importPath}~${doc.name}`.toLowerCase();
644
+ url = _getURL(doc);
645
+ } else if (doc.kind === 'test') {
646
+ displayText = doc.testFullDescription;
647
+ indexText = [
648
+ ...(doc.testTargets || []),
649
+ ...(doc._custom_test_targets || []),
650
+ ]
651
+ .join(' ')
652
+ .toLowerCase();
653
+ const filePath = doc.longname.split('~')[0];
654
+ const fileDoc = _find({ kind: 'testFile', name: filePath })[0];
655
+ url = `${_getURL(fileDoc)}#lineNumber${doc.lineNumber}`;
656
+ } else if (doc.kind === 'external') {
657
+ displayText = doc.longname;
658
+ indexText = displayText.toLowerCase();
659
+ url = doc.externalLink;
660
+ } else if (doc.kind === 'file' || doc.kind === 'testFile') {
661
+ displayText = doc.name;
662
+ indexText = displayText.toLowerCase();
663
+ url = _getURL(doc);
664
+ } else if (doc.kind === 'packageJSON') {
665
+ continue;
666
+ } else {
667
+ displayText = doc.longname;
668
+ indexText = displayText.toLowerCase();
669
+ url = _getURL(doc);
670
+ }
671
+
672
+ let kind = doc.kind;
673
+ /* eslint-disable default-case */
674
+ switch (kind) {
675
+ case 'constructor':
676
+ kind = 'method';
677
+ break;
678
+ case 'get':
679
+ case 'set':
680
+ kind = 'member';
681
+ break;
682
+ }
683
+
684
+ searchIndex.push([indexText, url, displayText, kind]);
685
+ }
686
+
687
+ searchIndex.sort((a, b) => {
688
+ if (a[2] === b[2]) {
689
+ return 0;
690
+ } else if (a[2] < b[2]) {
691
+ return -1;
692
+ } else {
693
+ return 1;
694
+ }
695
+ });
696
+ return searchIndex;
697
+ };