@mapcreator/api 3.3.6 → 5.0.0-alpha.100

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 (495) hide show
  1. package/LICENSE +29 -29
  2. package/README.md +86 -63
  3. package/cjs/api/apiCommon.d.ts +7 -0
  4. package/cjs/api/apiCommon.d.ts.map +1 -0
  5. package/cjs/api/apiCommon.js +31 -0
  6. package/cjs/api/apiCommon.js.map +1 -0
  7. package/cjs/api/choropleth.d.ts +138 -0
  8. package/cjs/api/choropleth.d.ts.map +1 -0
  9. package/cjs/api/choropleth.js +41 -0
  10. package/cjs/api/choropleth.js.map +1 -0
  11. package/cjs/api/color.d.ts +16 -0
  12. package/cjs/api/color.d.ts.map +1 -0
  13. package/cjs/api/color.js +8 -0
  14. package/cjs/api/color.js.map +1 -0
  15. package/cjs/api/dimension.d.ts +25 -0
  16. package/cjs/api/dimension.d.ts.map +1 -0
  17. package/cjs/api/dimension.js +14 -0
  18. package/cjs/api/dimension.js.map +1 -0
  19. package/cjs/api/dimensionSet.d.ts +15 -0
  20. package/cjs/api/dimensionSet.d.ts.map +1 -0
  21. package/cjs/api/dimensionSet.js +7 -0
  22. package/cjs/api/dimensionSet.js.map +1 -0
  23. package/cjs/api/feature.d.ts +16 -0
  24. package/cjs/api/feature.d.ts.map +1 -0
  25. package/cjs/api/feature.js +8 -0
  26. package/cjs/api/feature.js.map +1 -0
  27. package/cjs/api/font.d.ts +32 -0
  28. package/cjs/api/font.d.ts.map +1 -0
  29. package/cjs/api/font.js +15 -0
  30. package/cjs/api/font.js.map +1 -0
  31. package/cjs/api/fontFamily.d.ts +17 -0
  32. package/cjs/api/fontFamily.d.ts.map +1 -0
  33. package/cjs/api/fontFamily.js +17 -0
  34. package/cjs/api/fontFamily.js.map +1 -0
  35. package/cjs/api/geocode.d.ts +10 -0
  36. package/cjs/api/geocode.d.ts.map +1 -0
  37. package/cjs/api/geocode.js +9 -0
  38. package/cjs/api/geocode.js.map +1 -0
  39. package/cjs/api/highlight.d.ts +41 -0
  40. package/cjs/api/highlight.d.ts.map +1 -0
  41. package/cjs/api/highlight.js +25 -0
  42. package/cjs/api/highlight.js.map +1 -0
  43. package/cjs/api/insetMap.d.ts +37 -0
  44. package/cjs/api/insetMap.d.ts.map +1 -0
  45. package/cjs/api/insetMap.js +47 -0
  46. package/cjs/api/insetMap.js.map +1 -0
  47. package/cjs/api/job.d.ts +42 -0
  48. package/cjs/api/job.d.ts.map +1 -0
  49. package/cjs/api/job.js +71 -0
  50. package/cjs/api/job.js.map +1 -0
  51. package/cjs/api/jobResult.d.ts +40 -0
  52. package/cjs/api/jobResult.d.ts.map +1 -0
  53. package/cjs/api/jobResult.js +35 -0
  54. package/cjs/api/jobResult.js.map +1 -0
  55. package/cjs/api/jobRevision.d.ts +76 -0
  56. package/cjs/api/jobRevision.d.ts.map +1 -0
  57. package/cjs/api/jobRevision.js +126 -0
  58. package/cjs/api/jobRevision.js.map +1 -0
  59. package/cjs/api/jobShare.d.ts +26 -0
  60. package/cjs/api/jobShare.d.ts.map +1 -0
  61. package/cjs/api/jobShare.js +9 -0
  62. package/cjs/api/jobShare.js.map +1 -0
  63. package/cjs/api/jobType.d.ts +17 -0
  64. package/cjs/api/jobType.d.ts.map +1 -0
  65. package/cjs/api/jobType.js +11 -0
  66. package/cjs/api/jobType.js.map +1 -0
  67. package/cjs/api/language.d.ts +17 -0
  68. package/cjs/api/language.d.ts.map +1 -0
  69. package/cjs/api/language.js +3 -0
  70. package/cjs/api/language.js.map +1 -0
  71. package/cjs/api/layer.d.ts +26 -0
  72. package/cjs/api/layer.d.ts.map +1 -0
  73. package/cjs/api/layer.js +14 -0
  74. package/cjs/api/layer.js.map +1 -0
  75. package/cjs/api/layerFaq.d.ts +27 -0
  76. package/cjs/api/layerFaq.d.ts.map +1 -0
  77. package/cjs/api/layerFaq.js +16 -0
  78. package/cjs/api/layerFaq.js.map +1 -0
  79. package/cjs/api/layerGroup.d.ts +16 -0
  80. package/cjs/api/layerGroup.d.ts.map +1 -0
  81. package/cjs/api/layerGroup.js +36 -0
  82. package/cjs/api/layerGroup.js.map +1 -0
  83. package/cjs/api/mapstyleSet.d.ts +32 -0
  84. package/cjs/api/mapstyleSet.d.ts.map +1 -0
  85. package/cjs/api/mapstyleSet.js +28 -0
  86. package/cjs/api/mapstyleSet.js.map +1 -0
  87. package/cjs/api/message.d.ts +32 -0
  88. package/cjs/api/message.d.ts.map +1 -0
  89. package/cjs/api/message.js +37 -0
  90. package/cjs/api/message.js.map +1 -0
  91. package/cjs/api/organisation.d.ts +41 -0
  92. package/cjs/api/organisation.d.ts.map +1 -0
  93. package/cjs/api/organisation.js +41 -0
  94. package/cjs/api/organisation.js.map +1 -0
  95. package/cjs/api/resources.d.ts +65 -0
  96. package/cjs/api/resources.d.ts.map +1 -0
  97. package/cjs/api/resources.js +61 -0
  98. package/cjs/api/resources.js.map +1 -0
  99. package/cjs/api/svg.d.ts +21 -0
  100. package/cjs/api/svg.d.ts.map +1 -0
  101. package/cjs/api/svg.js +15 -0
  102. package/cjs/api/svg.js.map +1 -0
  103. package/cjs/api/svgSet.d.ts +22 -0
  104. package/cjs/api/svgSet.d.ts.map +1 -0
  105. package/cjs/api/svgSet.js +25 -0
  106. package/cjs/api/svgSet.js.map +1 -0
  107. package/cjs/api/user.d.ts +129 -0
  108. package/cjs/api/user.d.ts.map +1 -0
  109. package/cjs/api/user.js +145 -0
  110. package/cjs/api/user.js.map +1 -0
  111. package/cjs/index.d.ts +28 -0
  112. package/cjs/index.d.ts.map +1 -0
  113. package/cjs/index.js +53 -0
  114. package/cjs/index.js.map +1 -0
  115. package/cjs/oauth.d.ts +31 -0
  116. package/cjs/oauth.d.ts.map +1 -0
  117. package/cjs/oauth.js +76 -0
  118. package/cjs/oauth.js.map +1 -0
  119. package/cjs/utils.d.ts +72 -0
  120. package/cjs/utils.d.ts.map +1 -0
  121. package/cjs/utils.js +220 -0
  122. package/cjs/utils.js.map +1 -0
  123. package/esm/api/apiCommon.d.ts +7 -0
  124. package/esm/api/apiCommon.d.ts.map +1 -0
  125. package/esm/api/apiCommon.js +28 -0
  126. package/esm/api/apiCommon.js.map +1 -0
  127. package/esm/api/choropleth.d.ts +138 -0
  128. package/esm/api/choropleth.d.ts.map +1 -0
  129. package/esm/api/choropleth.js +34 -0
  130. package/esm/api/choropleth.js.map +1 -0
  131. package/esm/api/color.d.ts +16 -0
  132. package/esm/api/color.d.ts.map +1 -0
  133. package/esm/api/color.js +5 -0
  134. package/esm/api/color.js.map +1 -0
  135. package/esm/api/dimension.d.ts +25 -0
  136. package/esm/api/dimension.d.ts.map +1 -0
  137. package/esm/api/dimension.js +11 -0
  138. package/esm/api/dimension.js.map +1 -0
  139. package/esm/api/dimensionSet.d.ts +15 -0
  140. package/esm/api/dimensionSet.d.ts.map +1 -0
  141. package/esm/api/dimensionSet.js +4 -0
  142. package/esm/api/dimensionSet.js.map +1 -0
  143. package/esm/api/feature.d.ts +16 -0
  144. package/esm/api/feature.d.ts.map +1 -0
  145. package/esm/api/feature.js +5 -0
  146. package/esm/api/feature.js.map +1 -0
  147. package/esm/api/font.d.ts +32 -0
  148. package/esm/api/font.d.ts.map +1 -0
  149. package/esm/api/font.js +11 -0
  150. package/esm/api/font.js.map +1 -0
  151. package/esm/api/fontFamily.d.ts +17 -0
  152. package/esm/api/fontFamily.d.ts.map +1 -0
  153. package/esm/api/fontFamily.js +13 -0
  154. package/esm/api/fontFamily.js.map +1 -0
  155. package/esm/api/geocode.d.ts +10 -0
  156. package/esm/api/geocode.d.ts.map +1 -0
  157. package/esm/api/geocode.js +6 -0
  158. package/esm/api/geocode.js.map +1 -0
  159. package/esm/api/highlight.d.ts +41 -0
  160. package/esm/api/highlight.d.ts.map +1 -0
  161. package/esm/api/highlight.js +21 -0
  162. package/esm/api/highlight.js.map +1 -0
  163. package/esm/api/insetMap.d.ts +37 -0
  164. package/esm/api/insetMap.d.ts.map +1 -0
  165. package/esm/api/insetMap.js +42 -0
  166. package/esm/api/insetMap.js.map +1 -0
  167. package/esm/api/job.d.ts +42 -0
  168. package/esm/api/job.d.ts.map +1 -0
  169. package/esm/api/job.js +59 -0
  170. package/esm/api/job.js.map +1 -0
  171. package/esm/api/jobResult.d.ts +40 -0
  172. package/esm/api/jobResult.d.ts.map +1 -0
  173. package/esm/api/jobResult.js +30 -0
  174. package/esm/api/jobResult.js.map +1 -0
  175. package/esm/api/jobRevision.d.ts +76 -0
  176. package/esm/api/jobRevision.d.ts.map +1 -0
  177. package/esm/api/jobRevision.js +114 -0
  178. package/esm/api/jobRevision.js.map +1 -0
  179. package/esm/api/jobShare.d.ts +26 -0
  180. package/esm/api/jobShare.d.ts.map +1 -0
  181. package/esm/api/jobShare.js +6 -0
  182. package/esm/api/jobShare.js.map +1 -0
  183. package/esm/api/jobType.d.ts +17 -0
  184. package/esm/api/jobType.d.ts.map +1 -0
  185. package/esm/api/jobType.js +8 -0
  186. package/esm/api/jobType.js.map +1 -0
  187. package/esm/api/language.d.ts +17 -0
  188. package/esm/api/language.d.ts.map +1 -0
  189. package/esm/api/language.js +2 -0
  190. package/esm/api/language.js.map +1 -0
  191. package/esm/api/layer.d.ts +26 -0
  192. package/esm/api/layer.d.ts.map +1 -0
  193. package/esm/api/layer.js +11 -0
  194. package/esm/api/layer.js.map +1 -0
  195. package/esm/api/layerFaq.d.ts +27 -0
  196. package/esm/api/layerFaq.d.ts.map +1 -0
  197. package/esm/api/layerFaq.js +12 -0
  198. package/esm/api/layerFaq.js.map +1 -0
  199. package/esm/api/layerGroup.d.ts +16 -0
  200. package/esm/api/layerGroup.d.ts.map +1 -0
  201. package/esm/api/layerGroup.js +33 -0
  202. package/esm/api/layerGroup.js.map +1 -0
  203. package/esm/api/mapstyleSet.d.ts +32 -0
  204. package/esm/api/mapstyleSet.d.ts.map +1 -0
  205. package/esm/api/mapstyleSet.js +24 -0
  206. package/esm/api/mapstyleSet.js.map +1 -0
  207. package/esm/api/message.d.ts +32 -0
  208. package/esm/api/message.d.ts.map +1 -0
  209. package/esm/api/message.js +32 -0
  210. package/esm/api/message.js.map +1 -0
  211. package/esm/api/organisation.d.ts +41 -0
  212. package/esm/api/organisation.d.ts.map +1 -0
  213. package/esm/api/organisation.js +35 -0
  214. package/esm/api/organisation.js.map +1 -0
  215. package/esm/api/resources.d.ts +65 -0
  216. package/esm/api/resources.d.ts.map +1 -0
  217. package/esm/api/resources.js +55 -0
  218. package/esm/api/resources.js.map +1 -0
  219. package/esm/api/svg.d.ts +21 -0
  220. package/esm/api/svg.d.ts.map +1 -0
  221. package/esm/api/svg.js +11 -0
  222. package/esm/api/svg.js.map +1 -0
  223. package/esm/api/svgSet.d.ts +22 -0
  224. package/esm/api/svgSet.d.ts.map +1 -0
  225. package/esm/api/svgSet.js +21 -0
  226. package/esm/api/svgSet.js.map +1 -0
  227. package/esm/api/user.d.ts +129 -0
  228. package/esm/api/user.d.ts.map +1 -0
  229. package/esm/api/user.js +126 -0
  230. package/esm/api/user.js.map +1 -0
  231. package/esm/index.d.ts +28 -0
  232. package/esm/index.d.ts.map +1 -0
  233. package/esm/index.js +28 -0
  234. package/esm/index.js.map +1 -0
  235. package/esm/oauth.d.ts +31 -0
  236. package/esm/oauth.d.ts.map +1 -0
  237. package/esm/oauth.js +68 -0
  238. package/esm/oauth.js.map +1 -0
  239. package/esm/utils.d.ts +72 -0
  240. package/esm/utils.d.ts.map +1 -0
  241. package/esm/utils.js +206 -0
  242. package/esm/utils.js.map +1 -0
  243. package/package.json +80 -148
  244. package/src/README.md +126 -0
  245. package/src/api/apiCommon.ts +70 -0
  246. package/src/api/choropleth.ts +228 -0
  247. package/src/api/color.ts +22 -0
  248. package/src/api/dimension.ts +44 -0
  249. package/src/api/dimensionSet.ts +20 -0
  250. package/src/api/feature.ts +22 -0
  251. package/src/api/font.ts +57 -0
  252. package/src/api/fontFamily.ts +43 -0
  253. package/src/api/geocode.ts +17 -0
  254. package/src/api/highlight.ts +87 -0
  255. package/src/api/insetMap.ts +95 -0
  256. package/src/api/job.ts +130 -0
  257. package/src/api/jobResult.ts +95 -0
  258. package/src/api/jobRevision.ts +281 -0
  259. package/src/api/jobShare.ts +35 -0
  260. package/src/api/jobType.ts +26 -0
  261. package/src/api/language.ts +19 -0
  262. package/src/api/layer.ts +38 -0
  263. package/src/api/layerFaq.ts +53 -0
  264. package/src/api/layerGroup.ts +69 -0
  265. package/src/api/mapstyleSet.ts +70 -0
  266. package/src/api/message.ts +80 -0
  267. package/src/api/organisation.ts +97 -0
  268. package/src/api/resources.ts +153 -0
  269. package/src/api/svg.ts +33 -0
  270. package/src/api/svgSet.ts +56 -0
  271. package/src/api/user.ts +327 -0
  272. package/src/index.ts +44 -0
  273. package/src/oauth.ts +90 -0
  274. package/src/utils.ts +342 -0
  275. package/dist/ImageHandler.d.ts +0 -56
  276. package/dist/Mapcreator.d.ts +0 -338
  277. package/dist/PaginatedResourceListing.d.ts +0 -156
  278. package/dist/RequestParameters.d.ts +0 -241
  279. package/dist/ResourceLister.d.ts +0 -155
  280. package/dist/bundle.browser.js +0 -14711
  281. package/dist/bundle.browser.min.js +0 -3
  282. package/dist/bundle.browser.min.js.LICENSE.txt +0 -74
  283. package/dist/bundle.js +0 -12876
  284. package/dist/bundle.min.js +0 -3
  285. package/dist/bundle.min.js.LICENSE.txt +0 -44
  286. package/dist/enums/DeletedState.d.ts +0 -16
  287. package/dist/enums/Enum.d.ts +0 -40
  288. package/dist/enums/JobShareVisibility.d.ts +0 -15
  289. package/dist/enums/ResultStatus.d.ts +0 -17
  290. package/dist/enums/index.d.ts +0 -5
  291. package/dist/errors/AbstractError.d.ts +0 -26
  292. package/dist/errors/ApiError.d.ts +0 -65
  293. package/dist/errors/GeoError.d.ts +0 -6
  294. package/dist/errors/NodeError.d.ts +0 -6
  295. package/dist/errors/OAuthError.d.ts +0 -17
  296. package/dist/errors/StaticClassError.d.ts +0 -7
  297. package/dist/errors/ValidationError.d.ts +0 -125
  298. package/dist/errors/index.d.ts +0 -8
  299. package/dist/index.d.ts +0 -28
  300. package/dist/oauth/CookieFlow.d.ts +0 -25
  301. package/dist/oauth/DummyFlow.d.ts +0 -19
  302. package/dist/oauth/ImplicitFlow.d.ts +0 -68
  303. package/dist/oauth/ImplicitFlowPopup.d.ts +0 -25
  304. package/dist/oauth/OAuth.d.ts +0 -50
  305. package/dist/oauth/OAuthToken.d.ts +0 -67
  306. package/dist/oauth/PasswordFlow.d.ts +0 -56
  307. package/dist/oauth/StateContainer.d.ts +0 -36
  308. package/dist/proxy/GeoResourceProxy.d.ts +0 -69
  309. package/dist/proxy/OrganisationProxy.d.ts +0 -62
  310. package/dist/proxy/OwnedResourceProxy.d.ts +0 -60
  311. package/dist/proxy/ResourceProxy.d.ts +0 -32
  312. package/dist/proxy/SimpleResourceProxy.d.ts +0 -76
  313. package/dist/proxy/index.d.ts +0 -6
  314. package/dist/resources/Choropleth.d.ts +0 -20
  315. package/dist/resources/Color.d.ts +0 -9
  316. package/dist/resources/Contract.d.ts +0 -7
  317. package/dist/resources/Dimension.d.ts +0 -7
  318. package/dist/resources/DimensionSet.d.ts +0 -11
  319. package/dist/resources/Domain.d.ts +0 -7
  320. package/dist/resources/Faq.d.ts +0 -7
  321. package/dist/resources/Feature.d.ts +0 -9
  322. package/dist/resources/Font.d.ts +0 -4
  323. package/dist/resources/FontFamily.d.ts +0 -11
  324. package/dist/resources/Highlight.d.ts +0 -4
  325. package/dist/resources/InsetMap.d.ts +0 -10
  326. package/dist/resources/Job.d.ts +0 -56
  327. package/dist/resources/JobResult.d.ts +0 -76
  328. package/dist/resources/JobRevision.d.ts +0 -64
  329. package/dist/resources/JobShare.d.ts +0 -15
  330. package/dist/resources/JobType.d.ts +0 -9
  331. package/dist/resources/Language.d.ts +0 -4
  332. package/dist/resources/Layer.d.ts +0 -10
  333. package/dist/resources/LayerFaq.d.ts +0 -8
  334. package/dist/resources/LayerGroup.d.ts +0 -14
  335. package/dist/resources/Mapstyle.d.ts +0 -8
  336. package/dist/resources/MapstyleSet.d.ts +0 -13
  337. package/dist/resources/MapstyleSetColor.d.ts +0 -8
  338. package/dist/resources/Message.d.ts +0 -7
  339. package/dist/resources/MessageVariant.d.ts +0 -4
  340. package/dist/resources/Notification.d.ts +0 -4
  341. package/dist/resources/Organisation.d.ts +0 -99
  342. package/dist/resources/OrganisationNote.d.ts +0 -17
  343. package/dist/resources/Permission.d.ts +0 -4
  344. package/dist/resources/ProductTour.d.ts +0 -10
  345. package/dist/resources/ProductTourStep.d.ts +0 -7
  346. package/dist/resources/Role.d.ts +0 -14
  347. package/dist/resources/Svg.d.ts +0 -4
  348. package/dist/resources/SvgSet.d.ts +0 -11
  349. package/dist/resources/Tag.d.ts +0 -9
  350. package/dist/resources/TagType.d.ts +0 -13
  351. package/dist/resources/User.d.ts +0 -119
  352. package/dist/resources/VectorChoropleth.d.ts +0 -4
  353. package/dist/resources/VectorHighlight.d.ts +0 -4
  354. package/dist/resources/base/CrudBase.d.ts +0 -66
  355. package/dist/resources/base/CrudBase.d.ts.map +0 -1
  356. package/dist/resources/base/CrudSetBase.d.ts +0 -27
  357. package/dist/resources/base/CrudSetBase.d.ts.map +0 -1
  358. package/dist/resources/base/CrudSetItemBase.d.ts +0 -19
  359. package/dist/resources/base/CrudSetItemBase.d.ts.map +0 -1
  360. package/dist/resources/base/DownloadedResource.d.ts +0 -72
  361. package/dist/resources/base/DownloadedResource.d.ts.map +0 -1
  362. package/dist/resources/base/ResourceBase.d.ts +0 -164
  363. package/dist/resources/base/ResourceBase.d.ts.map +0 -1
  364. package/dist/resources/index.d.ts +0 -47
  365. package/dist/storage/CookiesDriver.d.ts +0 -37
  366. package/dist/storage/DataStoreContract.d.ts +0 -46
  367. package/dist/storage/DummyDriver.d.ts +0 -15
  368. package/dist/storage/FileDriver.d.ts +0 -54
  369. package/dist/storage/LocalStorageDriver.d.ts +0 -13
  370. package/dist/storage/StorageManager.d.ts +0 -46
  371. package/dist/traits/HandlesImages.d.ts +0 -15
  372. package/dist/traits/Injectable.d.ts +0 -60
  373. package/dist/traits/OwnableResource.d.ts +0 -18
  374. package/dist/traits/Trait.d.ts +0 -12
  375. package/dist/utils/Logger.d.ts +0 -55
  376. package/dist/utils/Singleton.d.ts +0 -9
  377. package/dist/utils/StaticClass.d.ts +0 -7
  378. package/dist/utils/Unobservable.d.ts +0 -13
  379. package/dist/utils/base64.d.ts +0 -12
  380. package/dist/utils/geo.d.ts +0 -74
  381. package/dist/utils/hash.d.ts +0 -15
  382. package/dist/utils/helpers.d.ts +0 -47
  383. package/dist/utils/node.d.ts +0 -15
  384. package/dist/utils/reflection.d.ts +0 -43
  385. package/dist/utils/requests.d.ts +0 -24
  386. package/dist/utils/uuid.d.ts +0 -19
  387. package/manual/assets/maps4news.svg +0 -23
  388. package/manual/building.md +0 -19
  389. package/manual/css/hide_import.css +0 -3
  390. package/manual/css/sidebar_fix.css +0 -3
  391. package/manual/examples.authentication.md +0 -205
  392. package/manual/examples.md +0 -153
  393. package/manual/installation.md +0 -33
  394. package/manual/js/sandbox.js +0 -26
  395. package/src/ImageHandler.js +0 -134
  396. package/src/Mapcreator.js +0 -719
  397. package/src/PaginatedResourceListing.js +0 -300
  398. package/src/RequestParameters.js +0 -711
  399. package/src/ResourceLister.js +0 -368
  400. package/src/enums/DeletedState.js +0 -49
  401. package/src/enums/Enum.js +0 -130
  402. package/src/enums/JobShareVisibility.js +0 -43
  403. package/src/enums/ResultStatus.js +0 -49
  404. package/src/enums/index.js +0 -36
  405. package/src/errors/AbstractError.js +0 -70
  406. package/src/errors/ApiError.js +0 -139
  407. package/src/errors/GeoError.js +0 -36
  408. package/src/errors/NodeError.js +0 -36
  409. package/src/errors/OAuthError.js +0 -71
  410. package/src/errors/StaticClassError.js +0 -37
  411. package/src/errors/ValidationError.js +0 -164
  412. package/src/errors/index.js +0 -39
  413. package/src/index.js +0 -76
  414. package/src/oauth/CookieFlow.js +0 -103
  415. package/src/oauth/DummyFlow.js +0 -63
  416. package/src/oauth/ImplicitFlow.js +0 -226
  417. package/src/oauth/ImplicitFlowPopup.js +0 -124
  418. package/src/oauth/OAuth.js +0 -131
  419. package/src/oauth/OAuthToken.js +0 -175
  420. package/src/oauth/PasswordFlow.js +0 -164
  421. package/src/oauth/StateContainer.js +0 -111
  422. package/src/proxy/GeoResourceProxy.js +0 -137
  423. package/src/proxy/OrganisationProxy.js +0 -149
  424. package/src/proxy/OwnedResourceProxy.js +0 -148
  425. package/src/proxy/ResourceProxy.js +0 -101
  426. package/src/proxy/SimpleResourceProxy.js +0 -188
  427. package/src/proxy/index.js +0 -37
  428. package/src/resources/Choropleth.js +0 -66
  429. package/src/resources/Color.js +0 -46
  430. package/src/resources/Contract.js +0 -42
  431. package/src/resources/Dimension.js +0 -42
  432. package/src/resources/DimensionSet.js +0 -56
  433. package/src/resources/Domain.js +0 -42
  434. package/src/resources/Faq.js +0 -42
  435. package/src/resources/Feature.js +0 -47
  436. package/src/resources/Font.js +0 -43
  437. package/src/resources/FontFamily.js +0 -55
  438. package/src/resources/Highlight.js +0 -39
  439. package/src/resources/InsetMap.js +0 -49
  440. package/src/resources/Job.js +0 -160
  441. package/src/resources/JobResult.js +0 -184
  442. package/src/resources/JobRevision.js +0 -201
  443. package/src/resources/JobShare.js +0 -61
  444. package/src/resources/JobType.js +0 -50
  445. package/src/resources/Language.js +0 -51
  446. package/src/resources/Layer.js +0 -48
  447. package/src/resources/LayerFaq.js +0 -47
  448. package/src/resources/LayerGroup.js +0 -57
  449. package/src/resources/Mapstyle.js +0 -45
  450. package/src/resources/MapstyleSet.js +0 -65
  451. package/src/resources/MapstyleSetColor.js +0 -51
  452. package/src/resources/Message.js +0 -94
  453. package/src/resources/MessageVariant.js +0 -37
  454. package/src/resources/Notification.js +0 -39
  455. package/src/resources/Organisation.js +0 -233
  456. package/src/resources/OrganisationNote.js +0 -57
  457. package/src/resources/Permission.js +0 -39
  458. package/src/resources/ProductTour.js +0 -53
  459. package/src/resources/ProductTourStep.js +0 -48
  460. package/src/resources/Role.js +0 -58
  461. package/src/resources/Svg.js +0 -39
  462. package/src/resources/SvgSet.js +0 -55
  463. package/src/resources/Tag.js +0 -50
  464. package/src/resources/TagType.js +0 -56
  465. package/src/resources/User.js +0 -251
  466. package/src/resources/VectorChoropleth.js +0 -40
  467. package/src/resources/VectorHighlight.js +0 -40
  468. package/src/resources/base/CrudBase.js +0 -204
  469. package/src/resources/base/CrudSetBase.js +0 -83
  470. package/src/resources/base/CrudSetItemBase.js +0 -82
  471. package/src/resources/base/DownloadedResource.js +0 -165
  472. package/src/resources/base/ResourceBase.js +0 -484
  473. package/src/resources/index.js +0 -81
  474. package/src/storage/CookiesDriver.js +0 -136
  475. package/src/storage/DataStoreContract.js +0 -111
  476. package/src/storage/DummyDriver.js +0 -91
  477. package/src/storage/FileDriver.js +0 -174
  478. package/src/storage/LocalStorageDriver.js +0 -108
  479. package/src/storage/StorageManager.js +0 -109
  480. package/src/traits/HandlesImages.js +0 -50
  481. package/src/traits/Injectable.js +0 -221
  482. package/src/traits/OwnableResource.js +0 -56
  483. package/src/traits/Trait.js +0 -43
  484. package/src/utils/Logger.js +0 -137
  485. package/src/utils/Singleton.js +0 -49
  486. package/src/utils/StaticClass.js +0 -43
  487. package/src/utils/Unobservable.js +0 -47
  488. package/src/utils/base64.js +0 -93
  489. package/src/utils/geo.js +0 -139
  490. package/src/utils/hash.js +0 -72
  491. package/src/utils/helpers.js +0 -178
  492. package/src/utils/node.js +0 -55
  493. package/src/utils/reflection.js +0 -170
  494. package/src/utils/requests.js +0 -120
  495. package/src/utils/uuid.js +0 -68
package/src/utils/geo.js DELETED
@@ -1,139 +0,0 @@
1
- /*
2
- * BSD 3-Clause License
3
- *
4
- * Copyright (c) 2020, Mapcreator
5
- * All rights reserved.
6
- *
7
- * Redistribution and use in source and binary forms, with or without
8
- * modification, are permitted provided that the following conditions are met:
9
- *
10
- * Redistributions of source code must retain the above copyright notice, this
11
- * list of conditions and the following disclaimer.
12
- *
13
- * Redistributions in binary form must reproduce the above copyright notice,
14
- * this list of conditions and the following disclaimer in the documentation
15
- * and/or other materials provided with the distribution.
16
- *
17
- * Neither the name of the copyright holder nor the names of its
18
- * contributors may be used to endorse or promote products derived from
19
- * this software without specific prior written permission.
20
- *
21
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
25
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
- */
32
-
33
-
34
- import GeoError from '../errors/GeoError';
35
-
36
- /**
37
- * A geographical point
38
- */
39
- export class GeoPoint {
40
- /**
41
- * Geographical point
42
- * @param {Number} lat - latitude
43
- * @param {Number} lng - longitude
44
- */
45
- constructor (lat, lng) {
46
- this.lat = lat;
47
- this.lng = lng;
48
- }
49
-
50
- /**
51
- * Get latitude
52
- * @returns {Number} - latitude
53
- */
54
- get lat () {
55
- return this._lat;
56
- }
57
-
58
- /**
59
- * Set latitude
60
- * @param {Number} value - latitude
61
- */
62
- set lat (value) {
63
- value = Number(value);
64
-
65
- if (!Number.isFinite(value)) {
66
- throw new GeoError(`Invalid latitude: ${value}`);
67
- }
68
-
69
- this._lat = Math.min(90, Math.max(-90, value));
70
- }
71
-
72
- /**
73
- * Get longitude
74
- * @returns {Number} - longitude
75
- */
76
- get lng () {
77
- return this._lng;
78
- }
79
-
80
- /**
81
- * Set longitude
82
- * @param {Number} value - longitude
83
- */
84
- set lng (value) {
85
- value = Number(value);
86
-
87
- if (!Number.isFinite(value)) {
88
- throw new GeoError(`Invalid longitude: ${value}`);
89
- }
90
-
91
- this._lng = value;
92
- }
93
-
94
- /**
95
- * Get data to be JSON encoded
96
- * @returns {{lat: Number, lng: Number}} - data
97
- */
98
- toJSON () {
99
- return { lat: this.lat, lng: this.lng };
100
- }
101
- }
102
-
103
- /**
104
- * Geometric boundary
105
- */
106
- export class GeoBoundary {
107
- /**
108
- * Geometric boundary
109
- * @param {Object} topLeft - top left corner of the boundary
110
- * @param {Number} topLeft.lat - top left corner latitude
111
- * @param {Number} topLeft.lng - top left corner longitude
112
- * @param {Object} bottomRight - bottom right corner of the boundary
113
- * @param {Number} bottomRight.lat - bottom right corner latitude
114
- * @param {Number} bottomRight.lng - bottom right corner longitude
115
- */
116
- constructor ({ lat: lat1, lng: lng1 }, { lat: lat2, lng: lng2 }) {
117
- this.topLeft = new GeoPoint(lat1, lng1);
118
- this.bottomRight = new GeoPoint(lat2, lng2);
119
- }
120
-
121
- getCenter () {
122
- const lat = (this.topLeft.lat + this.bottomRight.lat) / 2;
123
- const lng = (this.topLeft.lng + this.bottomRight.lng) / 2;
124
-
125
- return new GeoPoint(lat, lng);
126
- }
127
-
128
- /**
129
- * Top left coordinate
130
- * @type {GeoPoint}
131
- */
132
- topLeft;
133
-
134
- /**
135
- * Bottom right coordinate
136
- * @type {GeoPoint}
137
- */
138
- bottomRight;
139
- }
package/src/utils/hash.js DELETED
@@ -1,72 +0,0 @@
1
- /*
2
- * BSD 3-Clause License
3
- *
4
- * Copyright (c) 2020, Mapcreator
5
- * All rights reserved.
6
- *
7
- * Redistribution and use in source and binary forms, with or without
8
- * modification, are permitted provided that the following conditions are met:
9
- *
10
- * Redistributions of source code must retain the above copyright notice, this
11
- * list of conditions and the following disclaimer.
12
- *
13
- * Redistributions in binary form must reproduce the above copyright notice,
14
- * this list of conditions and the following disclaimer in the documentation
15
- * and/or other materials provided with the distribution.
16
- *
17
- * Neither the name of the copyright holder nor the names of its
18
- * contributors may be used to endorse or promote products derived from
19
- * this software without specific prior written permission.
20
- *
21
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
25
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
- */
32
-
33
- import stringify from 'json-stable-stringify';
34
-
35
- const FNV1_32A_INIT = 0x811c9dc5;
36
-
37
- /**
38
- * Fast hash function for non-cryptographic use
39
- * @param {string} str - Input to be hashed
40
- * @returns {string} - String representation of the hash
41
- * @private
42
- */
43
- export function fnv32b (str) {
44
- let hash = str
45
- .split('')
46
- .map(x => x.charCodeAt(0))
47
- .reduce((sum, val) => {
48
- sum ^= val;
49
-
50
- return sum + (sum << 1) + (sum << 4) + (sum << 7) + (sum << 8) + (sum << 24);
51
- }, FNV1_32A_INIT);
52
-
53
- // Avalanche
54
- hash ^= hash << 3;
55
- hash += hash >> 5;
56
- hash ^= hash << 4;
57
- hash += hash >> 17;
58
- hash ^= hash << 25;
59
- hash += hash >> 6;
60
-
61
- return `0000000${(hash >>> 0).toString(16)}`.substr(-8);
62
- }
63
-
64
- /**
65
- * Fast object hashing for non-cryptographic use
66
- * @param {object} data - input data
67
- * @returns {string} - String reprisentation of the hash
68
- * @private
69
- */
70
- export function hashObject (data) {
71
- return fnv32b(stringify(data));
72
- }
@@ -1,178 +0,0 @@
1
- /*
2
- * BSD 3-Clause License
3
- *
4
- * Copyright (c) 2020, Mapcreator
5
- * All rights reserved.
6
- *
7
- * Redistribution and use in source and binary forms, with or without
8
- * modification, are permitted provided that the following conditions are met:
9
- *
10
- * Redistributions of source code must retain the above copyright notice, this
11
- * list of conditions and the following disclaimer.
12
- *
13
- * Redistributions in binary form must reproduce the above copyright notice,
14
- * this list of conditions and the following disclaimer in the documentation
15
- * and/or other materials provided with the distribution.
16
- *
17
- * Neither the name of the copyright holder nor the names of its
18
- * contributors may be used to endorse or promote products derived from
19
- * this software without specific prior written permission.
20
- *
21
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
25
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
- */
32
-
33
- /**
34
- * Get all the pages from a {@link PaginatedResourceListing} or a range
35
- * @param {Promise<PaginatedResourceListing>|PaginatedResourceListing} page - Promise that returns a {@link PaginatedResourceListing}
36
- * @param {?Number} [start=1] - Start page
37
- * @param {?Number} [stop] - Stop page, defaults to the page count if not filled in.
38
- * @returns {Promise<Array<ResourceBase>>} - multiple pages
39
- * @throws {ApiError} - If the api returns errors
40
- * @example
41
- * import { helpers } from "@mapcreator/api";
42
- *
43
- * const promise = api.users.list(1, 50); // 50 per page is more efficient
44
- *
45
- * helpers.getPaginatedRange(promise).then(data => {
46
- * data.map(row => `[${row.id}] ${row.name}`) // We just want the names
47
- * .forEach(console.log) // Log the names and ids of every user
48
- * })
49
- */
50
- export async function getPaginatedRange (page, start = 1, stop) {
51
- // Resolve promise if any
52
- if (page instanceof Promise) {
53
- page = await page;
54
- }
55
-
56
- const out = page.data;
57
- const promises = [];
58
-
59
- // Handle defaults
60
- start = start || page.page;
61
- stop = stop || page.pageCount;
62
-
63
- if (start === page.page) {
64
- start++;
65
- }
66
-
67
- // Get all pages
68
- for (let i = start; i <= stop; i++) {
69
- promises.push(page.get(i));
70
- }
71
-
72
- // Resolve
73
- const rows = await Promise.all(promises);
74
-
75
- return out.concat(...rows.map(x => x.data));
76
- }
77
-
78
- /**
79
- * Async delay
80
- * @private
81
- * @param {number} ms - milliseconds
82
- * @returns {Promise}
83
- */
84
- export const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
85
-
86
- /**
87
- * Wraps around ky to make it return cancelable requests
88
- * @param {function(*=, *=): Response} fn - ky instance
89
- * @returns {function(*=, *=): Response}
90
- * @private
91
- */
92
- export function wrapKyCancelable (fn) {
93
- return (input, options = {}) => {
94
- if (typeof options === 'object' && options.hasOwnProperty('signal')) {
95
- return fn(input, options);
96
- }
97
-
98
- const controller = new AbortController();
99
- const promise = fn(input, { signal: controller.signal, ...options });
100
-
101
- promise.cancel = () => controller.abort();
102
-
103
- return promise;
104
- };
105
- }
106
-
107
- /**
108
- * @typedef {Promise} CancelablePromise
109
- * @property {function(): void} cancel - Cancel the promise
110
- */
111
-
112
- /**
113
- * Makes a promise cancelable by passing it a signal
114
- * @param {function} fn - async method
115
- * @returns {CancelablePromise}
116
- * @private
117
- */
118
- export function makeCancelable (fn) {
119
- const controller = new AbortController();
120
-
121
- const promise = fn(controller.signal);
122
-
123
- if (promise instanceof Promise) {
124
- promise.cancel = () => controller.abort();
125
- }
126
-
127
- return promise;
128
- }
129
-
130
- /**
131
- * Convert Date into server format
132
- * @param {Date} date - Target
133
- * @returns {String} - Formatted date
134
- * @private
135
- */
136
- export function serializeUTCDate (date) {
137
- if (!(date instanceof Date)) {
138
- throw new TypeError('Expected date to be of type Date');
139
- }
140
-
141
- const pad = num => `00${num}`.slice(-Math.max(String(num).length, 2));
142
-
143
- let out = [
144
- date.getUTCFullYear(),
145
- date.getUTCMonth() + 1,
146
- date.getUTCDate(),
147
- ].map(pad).join('-');
148
-
149
- out += ` ${[
150
- date.getUTCHours(),
151
- date.getUTCMinutes(),
152
- date.getUTCSeconds(),
153
- ].map(pad).join(':')}`;
154
-
155
- return out;
156
- }
157
-
158
- export function clone (input, clonePrivate = true) {
159
- const _clone = value => clone(value, clonePrivate);
160
-
161
- if (typeof input !== 'object' || input === null) {
162
- return input;
163
- } else if (Array.isArray(input)) {
164
- return input.map(_clone);
165
- }
166
-
167
- const output = {};
168
-
169
- for (const key of Object.keys(input)) {
170
- if (!clonePrivate && key.startsWith('_')) {
171
- continue;
172
- }
173
-
174
- output[key] = _clone(input[key]);
175
- }
176
-
177
- return output;
178
- }
package/src/utils/node.js DELETED
@@ -1,55 +0,0 @@
1
- /*
2
- * BSD 3-Clause License
3
- *
4
- * Copyright (c) 2020, Mapcreator
5
- * All rights reserved.
6
- *
7
- * Redistribution and use in source and binary forms, with or without
8
- * modification, are permitted provided that the following conditions are met:
9
- *
10
- * Redistributions of source code must retain the above copyright notice, this
11
- * list of conditions and the following disclaimer.
12
- *
13
- * Redistributions in binary form must reproduce the above copyright notice,
14
- * this list of conditions and the following disclaimer in the documentation
15
- * and/or other materials provided with the distribution.
16
- *
17
- * Neither the name of the copyright holder nor the names of its
18
- * contributors may be used to endorse or promote products derived from
19
- * this software without specific prior written permission.
20
- *
21
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
25
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
- */
32
-
33
- /**
34
- * Test if the application is running under nodejs
35
- * @returns {boolean} - Is the application running under node?
36
- * @see https://nodejs.org
37
- * @private
38
- */
39
- export function isNode () {
40
- try {
41
- return Object.prototype.toString.call(typeof process === 'undefined' ? 0 : process) === '[object process]';
42
- } catch (_) {
43
- return false;
44
- }
45
- }
46
-
47
- /**
48
- * Quickly check if the window contains a variable
49
- * @param {string} str - target variable
50
- * @returns {boolean} - If the window contains the variable
51
- * @private
52
- */
53
- export function windowTest (str) {
54
- return typeof window !== 'undefined' && typeof window[str] !== 'undefined';
55
- }
@@ -1,170 +0,0 @@
1
- /*
2
- * BSD 3-Clause License
3
- *
4
- * Copyright (c) 2020, Mapcreator
5
- * All rights reserved.
6
- *
7
- * Redistribution and use in source and binary forms, with or without
8
- * modification, are permitted provided that the following conditions are met:
9
- *
10
- * Redistributions of source code must retain the above copyright notice, this
11
- * list of conditions and the following disclaimer.
12
- *
13
- * Redistributions in binary form must reproduce the above copyright notice,
14
- * this list of conditions and the following disclaimer in the documentation
15
- * and/or other materials provided with the distribution.
16
- *
17
- * Neither the name of the copyright holder nor the names of its
18
- * contributors may be used to endorse or promote products derived from
19
- * this software without specific prior written permission.
20
- *
21
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
25
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
- */
32
-
33
- import Trait from '../traits/Trait';
34
- import { fnv32b } from './hash';
35
-
36
- /**
37
- * Tests if the parent is a parent of child
38
- * @param {Class|object} parent - Instance or Class
39
- * @param {Class|object} child - Instance or Class
40
- * @returns {boolean} - is parent a parent of child
41
- * @private
42
- * @example
43
- * class A {}
44
- * class B extends A {}
45
- * class C extends B {}
46
- *
47
- * isParentOf(A, C) // true
48
- * isParentOf(B, C) // true
49
- * isParentOf(C, C) // true
50
- * isParentOf(B, A) // false
51
- */
52
- export function isParentOf (parent, child) {
53
- if (parent === null || child === null) {
54
- return false;
55
- }
56
-
57
- parent = typeof parent === 'function' ? parent : parent.constructor;
58
- child = typeof child === 'function' ? child : child.constructor;
59
-
60
- do {
61
- if (child.name === parent.name) {
62
- return true;
63
- }
64
-
65
- child = Object.getPrototypeOf(child);
66
- } while (child.name !== '');
67
-
68
- return false;
69
- }
70
-
71
-
72
- /**
73
- * Get the name of the value type
74
- * @param {*} value - Any value
75
- * @private
76
- * @returns {string} - Value type name
77
- */
78
- export function getTypeName (value) {
79
- if (typeof value === 'undefined') {
80
- return 'undefined';
81
- }
82
-
83
- value = typeof value === 'function' ? value : value.constructor;
84
-
85
- return value.name;
86
-
87
- }
88
-
89
- /**
90
- * Helper class for mix
91
- * @see {@link mix}
92
- */
93
- class Empty {
94
- }
95
-
96
- /**
97
- * Copy properties from source to target
98
- * @param {object} target - Object for the properties to be copied to
99
- * @param {object} source - Object containing properties to be copied
100
- */
101
- function copyProps (target, source) {
102
- Object
103
- .getOwnPropertyNames(source)
104
- .concat(Object.getOwnPropertySymbols(source))
105
- .forEach(prop => {
106
- if (!prop.match(/^(?:constructor|initializer|prototype|arguments|caller|name|bind|call|apply|toString|length)$/)) {
107
- Object.defineProperty(target, prop, Object.getOwnPropertyDescriptor(source, prop));
108
- }
109
- });
110
- }
111
-
112
- /**
113
- * Mix traits into the target class
114
- * @param {Class} baseClass - Target base class for the traits to be applied to
115
- * @param {Class<Trait>} mixins - Traits to be applied
116
- * @returns {Class} - Constructor with any traits applied
117
- * @private
118
- */
119
- export function mix (baseClass, ...mixins) {
120
- const cocktail = class _Cocktail extends (baseClass || Empty) {
121
- constructor (...args) {
122
- super(...args);
123
-
124
- mixins
125
- .map(mixin => mixin.prototype.initializer)
126
- .filter(initializer => typeof initializer === 'function')
127
- .forEach(initializer => initializer.call(this));
128
- }
129
- };
130
-
131
-
132
- for (const mixin of mixins) {
133
- if (!isParentOf(Trait, mixin)) {
134
- throw new TypeError(`Expected mixin to implement Trait for ${mixin.name}`);
135
- }
136
-
137
- copyProps(cocktail.prototype, mixin.prototype);
138
- copyProps(cocktail, mixin);
139
- }
140
-
141
- cocktail.__mixins = mixins;
142
-
143
- const hash = fnv32b(mixins.map(x => x.name).join(','));
144
-
145
- Object.defineProperty(cocktail, 'name', { value: `Cocktail_${hash}` });
146
-
147
- return cocktail;
148
- }
149
-
150
- /**
151
- * Checks if the target has a certain trait.
152
- *
153
- * @param {Class|Object} Subject - Instance or class
154
- * @param {Class<Trait>} TraitClass - Trait to check for
155
- * @returns {boolean} - If the subject has the trait
156
- * @private
157
- */
158
- export function hasTrait (Subject, TraitClass) {
159
- Subject = typeof Subject === 'function' ? Subject : Subject.constructor;
160
-
161
- do {
162
- if (Array.isArray(Subject.__mixins) && Subject.__mixins.includes(TraitClass)) {
163
- return true;
164
- }
165
-
166
- Subject = Object.getPrototypeOf(Subject);
167
- } while (Subject.name !== '');
168
-
169
- return false;
170
- }