@mapcreator/api 3.3.0 → 5.0.0-alpha.12

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 (475) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +82 -59
  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 +32 -0
  6. package/cjs/api/apiCommon.js.map +1 -0
  7. package/cjs/api/choropleth.d.ts +206 -0
  8. package/cjs/api/choropleth.d.ts.map +1 -0
  9. package/cjs/api/choropleth.js +40 -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 +19 -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 +22 -0
  28. package/cjs/api/font.d.ts.map +1 -0
  29. package/cjs/api/font.js +10 -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/highlight.d.ts +41 -0
  36. package/cjs/api/highlight.d.ts.map +1 -0
  37. package/cjs/api/highlight.js +17 -0
  38. package/cjs/api/highlight.js.map +1 -0
  39. package/cjs/api/job.d.ts +40 -0
  40. package/cjs/api/job.d.ts.map +1 -0
  41. package/cjs/api/job.js +70 -0
  42. package/cjs/api/job.js.map +1 -0
  43. package/cjs/api/jobResult.d.ts +29 -0
  44. package/cjs/api/jobResult.d.ts.map +1 -0
  45. package/cjs/api/jobResult.js +35 -0
  46. package/cjs/api/jobResult.js.map +1 -0
  47. package/cjs/api/jobRevision.d.ts +43 -0
  48. package/cjs/api/jobRevision.d.ts.map +1 -0
  49. package/cjs/api/jobRevision.js +72 -0
  50. package/cjs/api/jobRevision.js.map +1 -0
  51. package/cjs/api/jobShare.d.ts +26 -0
  52. package/cjs/api/jobShare.d.ts.map +1 -0
  53. package/cjs/api/jobShare.js +10 -0
  54. package/cjs/api/jobShare.js.map +1 -0
  55. package/cjs/api/jobType.d.ts +17 -0
  56. package/cjs/api/jobType.d.ts.map +1 -0
  57. package/cjs/api/jobType.js +11 -0
  58. package/cjs/api/jobType.js.map +1 -0
  59. package/cjs/api/language.d.ts +17 -0
  60. package/cjs/api/language.d.ts.map +1 -0
  61. package/cjs/api/language.js +3 -0
  62. package/cjs/api/language.js.map +1 -0
  63. package/cjs/api/layer.d.ts +24 -0
  64. package/cjs/api/layer.d.ts.map +1 -0
  65. package/cjs/api/layer.js +14 -0
  66. package/cjs/api/layer.js.map +1 -0
  67. package/cjs/api/layerFaq.d.ts +27 -0
  68. package/cjs/api/layerFaq.d.ts.map +1 -0
  69. package/cjs/api/layerFaq.js +16 -0
  70. package/cjs/api/layerFaq.js.map +1 -0
  71. package/cjs/api/layerGroup.d.ts +16 -0
  72. package/cjs/api/layerGroup.d.ts.map +1 -0
  73. package/cjs/api/layerGroup.js +37 -0
  74. package/cjs/api/layerGroup.js.map +1 -0
  75. package/cjs/api/mapstyleSet.d.ts +29 -0
  76. package/cjs/api/mapstyleSet.d.ts.map +1 -0
  77. package/cjs/api/mapstyleSet.js +19 -0
  78. package/cjs/api/mapstyleSet.js.map +1 -0
  79. package/cjs/api/message.d.ts +32 -0
  80. package/cjs/api/message.d.ts.map +1 -0
  81. package/cjs/api/message.js +37 -0
  82. package/cjs/api/message.js.map +1 -0
  83. package/cjs/api/organisation.d.ts +38 -0
  84. package/cjs/api/organisation.d.ts.map +1 -0
  85. package/cjs/api/organisation.js +43 -0
  86. package/cjs/api/organisation.js.map +1 -0
  87. package/cjs/api/resources.d.ts +54 -0
  88. package/cjs/api/resources.d.ts.map +1 -0
  89. package/cjs/api/resources.js +55 -0
  90. package/cjs/api/resources.js.map +1 -0
  91. package/cjs/api/svg.d.ts +21 -0
  92. package/cjs/api/svg.d.ts.map +1 -0
  93. package/cjs/api/svg.js +15 -0
  94. package/cjs/api/svg.js.map +1 -0
  95. package/cjs/api/svgSet.d.ts +22 -0
  96. package/cjs/api/svgSet.d.ts.map +1 -0
  97. package/cjs/api/svgSet.js +25 -0
  98. package/cjs/api/svgSet.js.map +1 -0
  99. package/cjs/api/user.d.ts +100 -0
  100. package/cjs/api/user.d.ts.map +1 -0
  101. package/cjs/api/user.js +126 -0
  102. package/cjs/api/user.js.map +1 -0
  103. package/cjs/index.d.ts +26 -0
  104. package/cjs/index.d.ts.map +1 -0
  105. package/cjs/index.js +51 -0
  106. package/cjs/index.js.map +1 -0
  107. package/cjs/oauth.d.ts +20 -0
  108. package/cjs/oauth.d.ts.map +1 -0
  109. package/cjs/oauth.js +229 -0
  110. package/cjs/oauth.js.map +1 -0
  111. package/cjs/utils.d.ts +72 -0
  112. package/cjs/utils.d.ts.map +1 -0
  113. package/cjs/utils.js +220 -0
  114. package/cjs/utils.js.map +1 -0
  115. package/esm/api/apiCommon.d.ts +7 -0
  116. package/esm/api/apiCommon.d.ts.map +1 -0
  117. package/esm/api/apiCommon.js +28 -0
  118. package/esm/api/apiCommon.js.map +1 -0
  119. package/esm/api/choropleth.d.ts +206 -0
  120. package/esm/api/choropleth.d.ts.map +1 -0
  121. package/esm/api/choropleth.js +32 -0
  122. package/esm/api/choropleth.js.map +1 -0
  123. package/esm/api/color.d.ts +16 -0
  124. package/esm/api/color.d.ts.map +1 -0
  125. package/esm/api/color.js +5 -0
  126. package/esm/api/color.js.map +1 -0
  127. package/esm/api/dimension.d.ts +25 -0
  128. package/esm/api/dimension.d.ts.map +1 -0
  129. package/esm/api/dimension.js +16 -0
  130. package/esm/api/dimension.js.map +1 -0
  131. package/esm/api/dimensionSet.d.ts +15 -0
  132. package/esm/api/dimensionSet.d.ts.map +1 -0
  133. package/esm/api/dimensionSet.js +4 -0
  134. package/esm/api/dimensionSet.js.map +1 -0
  135. package/esm/api/feature.d.ts +16 -0
  136. package/esm/api/feature.d.ts.map +1 -0
  137. package/esm/api/feature.js +5 -0
  138. package/esm/api/feature.js.map +1 -0
  139. package/esm/api/font.d.ts +22 -0
  140. package/esm/api/font.d.ts.map +1 -0
  141. package/esm/api/font.js +7 -0
  142. package/esm/api/font.js.map +1 -0
  143. package/esm/api/fontFamily.d.ts +17 -0
  144. package/esm/api/fontFamily.d.ts.map +1 -0
  145. package/esm/api/fontFamily.js +13 -0
  146. package/esm/api/fontFamily.js.map +1 -0
  147. package/esm/api/highlight.d.ts +41 -0
  148. package/esm/api/highlight.d.ts.map +1 -0
  149. package/esm/api/highlight.js +12 -0
  150. package/esm/api/highlight.js.map +1 -0
  151. package/esm/api/job.d.ts +40 -0
  152. package/esm/api/job.d.ts.map +1 -0
  153. package/esm/api/job.js +58 -0
  154. package/esm/api/job.js.map +1 -0
  155. package/esm/api/jobResult.d.ts +29 -0
  156. package/esm/api/jobResult.d.ts.map +1 -0
  157. package/esm/api/jobResult.js +30 -0
  158. package/esm/api/jobResult.js.map +1 -0
  159. package/esm/api/jobRevision.d.ts +43 -0
  160. package/esm/api/jobRevision.d.ts.map +1 -0
  161. package/esm/api/jobRevision.js +63 -0
  162. package/esm/api/jobRevision.js.map +1 -0
  163. package/esm/api/jobShare.d.ts +26 -0
  164. package/esm/api/jobShare.d.ts.map +1 -0
  165. package/esm/api/jobShare.js +6 -0
  166. package/esm/api/jobShare.js.map +1 -0
  167. package/esm/api/jobType.d.ts +17 -0
  168. package/esm/api/jobType.d.ts.map +1 -0
  169. package/esm/api/jobType.js +8 -0
  170. package/esm/api/jobType.js.map +1 -0
  171. package/esm/api/language.d.ts +17 -0
  172. package/esm/api/language.d.ts.map +1 -0
  173. package/esm/api/language.js +2 -0
  174. package/esm/api/language.js.map +1 -0
  175. package/esm/api/layer.d.ts +24 -0
  176. package/esm/api/layer.d.ts.map +1 -0
  177. package/esm/api/layer.js +11 -0
  178. package/esm/api/layer.js.map +1 -0
  179. package/esm/api/layerFaq.d.ts +27 -0
  180. package/esm/api/layerFaq.d.ts.map +1 -0
  181. package/esm/api/layerFaq.js +12 -0
  182. package/esm/api/layerFaq.js.map +1 -0
  183. package/esm/api/layerGroup.d.ts +16 -0
  184. package/esm/api/layerGroup.d.ts.map +1 -0
  185. package/esm/api/layerGroup.js +33 -0
  186. package/esm/api/layerGroup.js.map +1 -0
  187. package/esm/api/mapstyleSet.d.ts +29 -0
  188. package/esm/api/mapstyleSet.d.ts.map +1 -0
  189. package/esm/api/mapstyleSet.js +16 -0
  190. package/esm/api/mapstyleSet.js.map +1 -0
  191. package/esm/api/message.d.ts +32 -0
  192. package/esm/api/message.d.ts.map +1 -0
  193. package/esm/api/message.js +32 -0
  194. package/esm/api/message.js.map +1 -0
  195. package/esm/api/organisation.d.ts +38 -0
  196. package/esm/api/organisation.d.ts.map +1 -0
  197. package/esm/api/organisation.js +37 -0
  198. package/esm/api/organisation.js.map +1 -0
  199. package/esm/api/resources.d.ts +54 -0
  200. package/esm/api/resources.d.ts.map +1 -0
  201. package/esm/api/resources.js +48 -0
  202. package/esm/api/resources.js.map +1 -0
  203. package/esm/api/svg.d.ts +21 -0
  204. package/esm/api/svg.d.ts.map +1 -0
  205. package/esm/api/svg.js +11 -0
  206. package/esm/api/svg.js.map +1 -0
  207. package/esm/api/svgSet.d.ts +22 -0
  208. package/esm/api/svgSet.d.ts.map +1 -0
  209. package/esm/api/svgSet.js +21 -0
  210. package/esm/api/svgSet.js.map +1 -0
  211. package/esm/api/user.d.ts +100 -0
  212. package/esm/api/user.d.ts.map +1 -0
  213. package/esm/api/user.js +110 -0
  214. package/esm/api/user.js.map +1 -0
  215. package/esm/index.d.ts +26 -0
  216. package/esm/index.d.ts.map +1 -0
  217. package/esm/index.js +26 -0
  218. package/esm/index.js.map +1 -0
  219. package/esm/oauth.d.ts +20 -0
  220. package/esm/oauth.d.ts.map +1 -0
  221. package/esm/oauth.js +222 -0
  222. package/esm/oauth.js.map +1 -0
  223. package/esm/utils.d.ts +72 -0
  224. package/esm/utils.d.ts.map +1 -0
  225. package/esm/utils.js +206 -0
  226. package/esm/utils.js.map +1 -0
  227. package/package.json +66 -137
  228. package/src/README.md +126 -0
  229. package/src/api/apiCommon.ts +70 -0
  230. package/src/api/choropleth.ts +318 -0
  231. package/src/api/color.ts +22 -0
  232. package/src/api/dimension.ts +54 -0
  233. package/src/api/dimensionSet.ts +20 -0
  234. package/src/api/feature.ts +22 -0
  235. package/src/api/font.ts +30 -0
  236. package/src/api/fontFamily.ts +43 -0
  237. package/src/api/highlight.ts +74 -0
  238. package/src/api/job.ts +127 -0
  239. package/src/api/jobResult.ts +81 -0
  240. package/src/api/jobRevision.ts +170 -0
  241. package/src/api/jobShare.ts +35 -0
  242. package/src/api/jobType.ts +26 -0
  243. package/src/api/language.ts +19 -0
  244. package/src/api/layer.ts +36 -0
  245. package/src/api/layerFaq.ts +53 -0
  246. package/src/api/layerGroup.ts +69 -0
  247. package/src/api/mapstyleSet.ts +46 -0
  248. package/src/api/message.ts +80 -0
  249. package/src/api/organisation.ts +94 -0
  250. package/src/api/resources.ts +134 -0
  251. package/src/api/svg.ts +33 -0
  252. package/src/api/svgSet.ts +56 -0
  253. package/src/api/user.ts +280 -0
  254. package/src/index.ts +42 -0
  255. package/src/oauth.ts +292 -0
  256. package/src/utils.ts +342 -0
  257. package/dist/ImageHandler.d.ts +0 -56
  258. package/dist/Mapcreator.d.ts +0 -338
  259. package/dist/PaginatedResourceListing.d.ts +0 -156
  260. package/dist/RequestParameters.d.ts +0 -241
  261. package/dist/ResourceLister.d.ts +0 -155
  262. package/dist/bundle.browser.js +0 -14590
  263. package/dist/bundle.browser.min.js +0 -3
  264. package/dist/bundle.browser.min.js.LICENSE.txt +0 -74
  265. package/dist/bundle.js +0 -12755
  266. package/dist/bundle.min.js +0 -3
  267. package/dist/bundle.min.js.LICENSE.txt +0 -44
  268. package/dist/enums/DeletedState.d.ts +0 -16
  269. package/dist/enums/Enum.d.ts +0 -40
  270. package/dist/enums/JobShareVisibility.d.ts +0 -15
  271. package/dist/enums/ResultStatus.d.ts +0 -17
  272. package/dist/enums/index.d.ts +0 -5
  273. package/dist/errors/AbstractError.d.ts +0 -26
  274. package/dist/errors/ApiError.d.ts +0 -65
  275. package/dist/errors/GeoError.d.ts +0 -6
  276. package/dist/errors/NodeError.d.ts +0 -6
  277. package/dist/errors/OAuthError.d.ts +0 -17
  278. package/dist/errors/StaticClassError.d.ts +0 -7
  279. package/dist/errors/ValidationError.d.ts +0 -125
  280. package/dist/errors/index.d.ts +0 -8
  281. package/dist/index.d.ts +0 -27
  282. package/dist/oauth/DummyFlow.d.ts +0 -19
  283. package/dist/oauth/ImplicitFlow.d.ts +0 -68
  284. package/dist/oauth/ImplicitFlowPopup.d.ts +0 -25
  285. package/dist/oauth/OAuth.d.ts +0 -50
  286. package/dist/oauth/OAuthToken.d.ts +0 -67
  287. package/dist/oauth/PasswordFlow.d.ts +0 -56
  288. package/dist/oauth/StateContainer.d.ts +0 -36
  289. package/dist/proxy/GeoResourceProxy.d.ts +0 -69
  290. package/dist/proxy/OrganisationProxy.d.ts +0 -62
  291. package/dist/proxy/OwnedResourceProxy.d.ts +0 -60
  292. package/dist/proxy/ResourceProxy.d.ts +0 -32
  293. package/dist/proxy/SimpleResourceProxy.d.ts +0 -76
  294. package/dist/proxy/index.d.ts +0 -6
  295. package/dist/resources/Choropleth.d.ts +0 -20
  296. package/dist/resources/Color.d.ts +0 -9
  297. package/dist/resources/Contract.d.ts +0 -7
  298. package/dist/resources/Dimension.d.ts +0 -7
  299. package/dist/resources/DimensionSet.d.ts +0 -11
  300. package/dist/resources/Domain.d.ts +0 -7
  301. package/dist/resources/Faq.d.ts +0 -7
  302. package/dist/resources/Feature.d.ts +0 -9
  303. package/dist/resources/Font.d.ts +0 -4
  304. package/dist/resources/FontFamily.d.ts +0 -11
  305. package/dist/resources/Highlight.d.ts +0 -4
  306. package/dist/resources/InsetMap.d.ts +0 -10
  307. package/dist/resources/Job.d.ts +0 -56
  308. package/dist/resources/JobResult.d.ts +0 -76
  309. package/dist/resources/JobRevision.d.ts +0 -64
  310. package/dist/resources/JobShare.d.ts +0 -15
  311. package/dist/resources/JobType.d.ts +0 -9
  312. package/dist/resources/Language.d.ts +0 -4
  313. package/dist/resources/Layer.d.ts +0 -10
  314. package/dist/resources/LayerFaq.d.ts +0 -8
  315. package/dist/resources/LayerGroup.d.ts +0 -14
  316. package/dist/resources/Mapstyle.d.ts +0 -8
  317. package/dist/resources/MapstyleSet.d.ts +0 -13
  318. package/dist/resources/MapstyleSetColor.d.ts +0 -8
  319. package/dist/resources/Message.d.ts +0 -7
  320. package/dist/resources/MessageVariant.d.ts +0 -4
  321. package/dist/resources/Notification.d.ts +0 -4
  322. package/dist/resources/Organisation.d.ts +0 -99
  323. package/dist/resources/OrganisationNote.d.ts +0 -17
  324. package/dist/resources/Permission.d.ts +0 -4
  325. package/dist/resources/ProductTour.d.ts +0 -10
  326. package/dist/resources/ProductTourStep.d.ts +0 -7
  327. package/dist/resources/Role.d.ts +0 -14
  328. package/dist/resources/Svg.d.ts +0 -4
  329. package/dist/resources/SvgSet.d.ts +0 -11
  330. package/dist/resources/Tag.d.ts +0 -9
  331. package/dist/resources/TagType.d.ts +0 -13
  332. package/dist/resources/User.d.ts +0 -119
  333. package/dist/resources/VectorChoropleth.d.ts +0 -4
  334. package/dist/resources/VectorHighlight.d.ts +0 -4
  335. package/dist/resources/base/CrudBase.d.ts +0 -66
  336. package/dist/resources/base/CrudBase.d.ts.map +0 -1
  337. package/dist/resources/base/CrudSetBase.d.ts +0 -27
  338. package/dist/resources/base/CrudSetBase.d.ts.map +0 -1
  339. package/dist/resources/base/CrudSetItemBase.d.ts +0 -19
  340. package/dist/resources/base/CrudSetItemBase.d.ts.map +0 -1
  341. package/dist/resources/base/DownloadedResource.d.ts +0 -72
  342. package/dist/resources/base/DownloadedResource.d.ts.map +0 -1
  343. package/dist/resources/base/ResourceBase.d.ts +0 -164
  344. package/dist/resources/base/ResourceBase.d.ts.map +0 -1
  345. package/dist/resources/index.d.ts +0 -47
  346. package/dist/storage/CookiesDriver.d.ts +0 -37
  347. package/dist/storage/DataStoreContract.d.ts +0 -46
  348. package/dist/storage/DummyDriver.d.ts +0 -15
  349. package/dist/storage/FileDriver.d.ts +0 -54
  350. package/dist/storage/LocalStorageDriver.d.ts +0 -13
  351. package/dist/storage/StorageManager.d.ts +0 -46
  352. package/dist/traits/HandlesImages.d.ts +0 -15
  353. package/dist/traits/Injectable.d.ts +0 -60
  354. package/dist/traits/OwnableResource.d.ts +0 -18
  355. package/dist/traits/Trait.d.ts +0 -12
  356. package/dist/utils/Logger.d.ts +0 -55
  357. package/dist/utils/Singleton.d.ts +0 -9
  358. package/dist/utils/StaticClass.d.ts +0 -7
  359. package/dist/utils/Unobservable.d.ts +0 -13
  360. package/dist/utils/base64.d.ts +0 -12
  361. package/dist/utils/geo.d.ts +0 -74
  362. package/dist/utils/hash.d.ts +0 -15
  363. package/dist/utils/helpers.d.ts +0 -47
  364. package/dist/utils/node.d.ts +0 -15
  365. package/dist/utils/reflection.d.ts +0 -43
  366. package/dist/utils/requests.d.ts +0 -24
  367. package/dist/utils/uuid.d.ts +0 -19
  368. package/manual/assets/maps4news.svg +0 -23
  369. package/manual/building.md +0 -19
  370. package/manual/css/hide_import.css +0 -3
  371. package/manual/css/sidebar_fix.css +0 -3
  372. package/manual/examples.authentication.md +0 -205
  373. package/manual/examples.md +0 -153
  374. package/manual/installation.md +0 -33
  375. package/manual/js/sandbox.js +0 -26
  376. package/src/ImageHandler.js +0 -134
  377. package/src/Mapcreator.js +0 -703
  378. package/src/PaginatedResourceListing.js +0 -300
  379. package/src/RequestParameters.js +0 -711
  380. package/src/ResourceLister.js +0 -368
  381. package/src/enums/DeletedState.js +0 -49
  382. package/src/enums/Enum.js +0 -130
  383. package/src/enums/JobShareVisibility.js +0 -43
  384. package/src/enums/ResultStatus.js +0 -49
  385. package/src/enums/index.js +0 -36
  386. package/src/errors/AbstractError.js +0 -70
  387. package/src/errors/ApiError.js +0 -139
  388. package/src/errors/GeoError.js +0 -36
  389. package/src/errors/NodeError.js +0 -36
  390. package/src/errors/OAuthError.js +0 -71
  391. package/src/errors/StaticClassError.js +0 -37
  392. package/src/errors/ValidationError.js +0 -164
  393. package/src/errors/index.js +0 -39
  394. package/src/index.js +0 -75
  395. package/src/oauth/DummyFlow.js +0 -63
  396. package/src/oauth/ImplicitFlow.js +0 -226
  397. package/src/oauth/ImplicitFlowPopup.js +0 -122
  398. package/src/oauth/OAuth.js +0 -131
  399. package/src/oauth/OAuthToken.js +0 -175
  400. package/src/oauth/PasswordFlow.js +0 -164
  401. package/src/oauth/StateContainer.js +0 -111
  402. package/src/proxy/GeoResourceProxy.js +0 -137
  403. package/src/proxy/OrganisationProxy.js +0 -149
  404. package/src/proxy/OwnedResourceProxy.js +0 -148
  405. package/src/proxy/ResourceProxy.js +0 -101
  406. package/src/proxy/SimpleResourceProxy.js +0 -188
  407. package/src/proxy/index.js +0 -37
  408. package/src/resources/Choropleth.js +0 -66
  409. package/src/resources/Color.js +0 -46
  410. package/src/resources/Contract.js +0 -42
  411. package/src/resources/Dimension.js +0 -42
  412. package/src/resources/DimensionSet.js +0 -56
  413. package/src/resources/Domain.js +0 -42
  414. package/src/resources/Faq.js +0 -42
  415. package/src/resources/Feature.js +0 -47
  416. package/src/resources/Font.js +0 -43
  417. package/src/resources/FontFamily.js +0 -55
  418. package/src/resources/Highlight.js +0 -39
  419. package/src/resources/InsetMap.js +0 -49
  420. package/src/resources/Job.js +0 -160
  421. package/src/resources/JobResult.js +0 -184
  422. package/src/resources/JobRevision.js +0 -201
  423. package/src/resources/JobShare.js +0 -61
  424. package/src/resources/JobType.js +0 -50
  425. package/src/resources/Language.js +0 -51
  426. package/src/resources/Layer.js +0 -48
  427. package/src/resources/LayerFaq.js +0 -47
  428. package/src/resources/LayerGroup.js +0 -57
  429. package/src/resources/Mapstyle.js +0 -45
  430. package/src/resources/MapstyleSet.js +0 -65
  431. package/src/resources/MapstyleSetColor.js +0 -51
  432. package/src/resources/Message.js +0 -94
  433. package/src/resources/MessageVariant.js +0 -37
  434. package/src/resources/Notification.js +0 -39
  435. package/src/resources/Organisation.js +0 -233
  436. package/src/resources/OrganisationNote.js +0 -57
  437. package/src/resources/Permission.js +0 -39
  438. package/src/resources/ProductTour.js +0 -53
  439. package/src/resources/ProductTourStep.js +0 -48
  440. package/src/resources/Role.js +0 -58
  441. package/src/resources/Svg.js +0 -39
  442. package/src/resources/SvgSet.js +0 -55
  443. package/src/resources/Tag.js +0 -50
  444. package/src/resources/TagType.js +0 -56
  445. package/src/resources/User.js +0 -251
  446. package/src/resources/VectorChoropleth.js +0 -40
  447. package/src/resources/VectorHighlight.js +0 -40
  448. package/src/resources/base/CrudBase.js +0 -204
  449. package/src/resources/base/CrudSetBase.js +0 -83
  450. package/src/resources/base/CrudSetItemBase.js +0 -82
  451. package/src/resources/base/DownloadedResource.js +0 -165
  452. package/src/resources/base/ResourceBase.js +0 -484
  453. package/src/resources/index.js +0 -81
  454. package/src/storage/CookiesDriver.js +0 -136
  455. package/src/storage/DataStoreContract.js +0 -111
  456. package/src/storage/DummyDriver.js +0 -91
  457. package/src/storage/FileDriver.js +0 -174
  458. package/src/storage/LocalStorageDriver.js +0 -108
  459. package/src/storage/StorageManager.js +0 -109
  460. package/src/traits/HandlesImages.js +0 -50
  461. package/src/traits/Injectable.js +0 -221
  462. package/src/traits/OwnableResource.js +0 -56
  463. package/src/traits/Trait.js +0 -43
  464. package/src/utils/Logger.js +0 -137
  465. package/src/utils/Singleton.js +0 -49
  466. package/src/utils/StaticClass.js +0 -43
  467. package/src/utils/Unobservable.js +0 -47
  468. package/src/utils/base64.js +0 -93
  469. package/src/utils/geo.js +0 -139
  470. package/src/utils/hash.js +0 -72
  471. package/src/utils/helpers.js +0 -178
  472. package/src/utils/node.js +0 -55
  473. package/src/utils/reflection.js +0 -170
  474. package/src/utils/requests.js +0 -120
  475. package/src/utils/uuid.js +0 -68
@@ -1,484 +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 { camel as camelCase, snake as snakeCase } from 'case';
34
- import { AbstractClassError, AbstractError } from '../../errors/AbstractError';
35
- import Mapcreator from '../../Mapcreator';
36
- import SimpleResourceProxy from '../../proxy/SimpleResourceProxy';
37
- import Injectable from '../../traits/Injectable';
38
- import { fnv32b } from '../../utils/hash';
39
- import { isParentOf, mix } from '../../utils/reflection';
40
- import { clone, makeCancelable } from '../../utils/helpers';
41
-
42
- function unique (input) {
43
- return input.filter((v, i) => input.findIndex(vv => vv === v) === i);
44
- }
45
-
46
- /**
47
- * Resource base
48
- * @abstract
49
- */
50
- export default class ResourceBase extends mix(null, Injectable) {
51
- /**
52
- * @param {Mapcreator} api - Api instance
53
- * @param {Object<String, *>} data - Item data
54
- * @param {String} [altUrl] - Internal use, Optional alternative url for more complex routing
55
- */
56
- constructor (api, data = {}, altUrl = null) {
57
- super();
58
-
59
- if (this.constructor === ResourceBase) {
60
- throw new AbstractClassError();
61
- }
62
-
63
- if (altUrl) {
64
- this.__baseUrl = altUrl;
65
- }
66
-
67
- this.api = api;
68
-
69
- // De-reference
70
- data = clone(data);
71
-
72
- // Normalize keys to snake_case
73
- // Fix data types
74
- for (const key of Object.keys(data)) {
75
- const newKey = snakeCase(key);
76
-
77
- if (camelCase(newKey) in this) {
78
- delete data[key];
79
-
80
- continue;
81
- }
82
-
83
- data[newKey] = this._guessType(newKey, data[key]);
84
-
85
- if (newKey !== key) {
86
- delete data[key];
87
- }
88
- }
89
-
90
- this._baseProperties = data || {};
91
- this._properties = {};
92
- this._api = api;
93
-
94
- const fields = Object.keys(this._baseProperties);
95
-
96
- // Apply properties
97
- for (const key of fields) {
98
- this._applyProperty(key);
99
- }
100
-
101
- // Add deleted field if possible
102
- if (fields.includes('deleted_at')) {
103
- Object.defineProperty(this, 'deleted', {
104
- enumerable: true,
105
- configurable: true,
106
-
107
- get: () => Boolean(this.deletedAt),
108
- });
109
- }
110
-
111
- /* We keep track of any new fields by recording the
112
- * keys the object currently has. We don't need no
113
- * fancy-pants observers, Proxies etc.
114
- * snake_case only
115
- */
116
- this._knownFields = Object.keys(this).filter(x => x[0] !== '_');
117
- }
118
-
119
- /**
120
- * Get api instance
121
- * @returns {Mapcreator} - Api instance
122
- */
123
- get api () {
124
- return this._api;
125
- }
126
-
127
- /**
128
- * Set the api instance
129
- * @param {Mapcreator} value - Api instance
130
- */
131
- set api (value) {
132
- if (!isParentOf(Mapcreator, value)) {
133
- throw new TypeError('Expected api to be of type Mapcreator or null');
134
- }
135
-
136
- this._api = value;
137
- }
138
-
139
- /**
140
- * Resource path template
141
- * @returns {String} - Path template
142
- */
143
- static get resourcePath () {
144
- return `/${this.resourceName}/{id}`;
145
- }
146
-
147
- /**
148
- * Resource name
149
- * @returns {String} - Resource name
150
- * @abstract
151
- */
152
- static get resourceName () {
153
- throw new AbstractError();
154
- }
155
-
156
- /**
157
- * Returns the url key of the resource
158
- * @returns {String} - Resource key
159
- */
160
- static get resourceUrlKey () {
161
- return 'id';
162
- }
163
-
164
- /**
165
- * Protected read-only fields
166
- * @returns {Array<string>} - Array containing protected read-only fields
167
- * @protected
168
- */
169
- static get protectedFields () {
170
- return ['id', 'created_at', 'updated_at', 'deleted_at'];
171
- }
172
-
173
- /**
174
- * Returns if the resource is readonly
175
- * @returns {boolean} - Readonly
176
- */
177
- static get readonly () {
178
- return false;
179
- }
180
-
181
- /**
182
- * Moves new fields to this._properties and turns them into a getter/setter
183
- * @protected
184
- */
185
- _updateProperties () {
186
- // Build a list of new fields
187
- let fields = Object.keys(this)
188
- .filter(x => x[0] !== '_')
189
- .filter(x => !this._knownFields.includes(x));
190
-
191
- // Move the pointer from this to the properties object
192
- for (const key of fields) {
193
- const newKey = snakeCase(key);
194
-
195
- this._properties[newKey] = this[key];
196
- delete this[key];
197
-
198
- this._applyProperty(newKey);
199
- this._knownFields.push(newKey);
200
- }
201
-
202
- // Build a list of new BaseProperty fields
203
- fields = Object.keys(this._baseProperties)
204
- .filter(x => !this._knownFields.includes(camelCase(x)));
205
-
206
- for (const key of fields) {
207
- this._applyProperty(key);
208
- this._knownFields.push(key);
209
- }
210
-
211
- this._knownFields = unique(this._knownFields);
212
- }
213
-
214
- /**
215
- * Clean up instance and commit all changes locally.
216
- * This means that any changed fields will be marked
217
- * as unchanged whilst keeping their new values. The
218
- * changes will not be saved.
219
- */
220
- sanitize () {
221
- this._updateProperties();
222
- Object.assign(this._baseProperties, this._properties);
223
- this._properties = {};
224
- }
225
-
226
- /**
227
- * Resets model instance to it's original state
228
- * @param {Array<string>|string|null} [fields=null] - Fields to reset, defaults to all fields
229
- */
230
- reset (fields = null) {
231
- this._updateProperties();
232
-
233
- if (typeof fields === 'string') {
234
- this.reset([fields]);
235
- } else if (fields === null) {
236
- this._properties = {}; // Delete all
237
- } else if (Array.isArray(fields)) {
238
- fields
239
- .map(String)
240
- .map(snakeCase)
241
- .forEach(field => delete this._properties[field]);
242
- }
243
- }
244
-
245
- /**
246
- * Clone the object
247
- * @returns {ResourceBase} - Exact clone of the object
248
- */
249
- clone () {
250
- this._updateProperties();
251
-
252
- const out = new this.constructor(this.api, this._baseProperties);
253
-
254
- for (const key of Object.keys(this._properties)) {
255
- out[key] = this._properties[key];
256
- }
257
-
258
- return out;
259
- }
260
-
261
- /**
262
- * Refresh the resource by requesting it from the server again
263
- * @param {Boolean} updateSelf - Update the current instance
264
- * @returns {CancelablePromise<ResourceBase>} - Refreshed instance
265
- * @throws {ApiError} - If the api returns errors
266
- */
267
- refresh (updateSelf = true) {
268
- return makeCancelable(async signal => {
269
- const { data } = await this.api.ky.get(this.url, { signal }).json();
270
-
271
- if (updateSelf) {
272
- this._properties = {};
273
- this._baseProperties = data;
274
-
275
- this._updateProperties();
276
- }
277
-
278
- return new this.constructor(this._api, data);
279
- });
280
- }
281
-
282
- /**
283
- * Create proxy for property
284
- * @param {string} key - property key
285
- * @private
286
- */
287
- _applyProperty (key) {
288
- const desc = {
289
- enumerable: true,
290
- configurable: true,
291
-
292
- get: () => {
293
- if (this._properties.hasOwnProperty(key)) {
294
- return this._properties[key];
295
- }
296
-
297
- return this._baseProperties[key];
298
- },
299
- };
300
-
301
- if (!this.constructor.protectedFields.includes(key) && !this.constructor.readonly) {
302
- desc.set = val => {
303
- this._properties[key] = this._guessType(key, val);
304
- delete this._url; // Clears url cache
305
- };
306
- }
307
-
308
- const newKey = camelCase(key);
309
-
310
- Object.defineProperty(this, newKey, desc);
311
- }
312
-
313
- /**
314
- * Guess type based on property name
315
- * @param {string} name - Field name
316
- * @param {*} value - Field Value
317
- * @protected
318
- * @returns {*} - Original or converted value
319
- */
320
- _guessType (name, value) {
321
- if (name.endsWith('_at') || name.startsWith('date_')) {
322
- return typeof value === 'string' ? new Date(value.replace(' ', 'T')) : value;
323
- } else if (/(_|^)id$/.test(name) && value !== null) {
324
- return Number.isFinite(Number(value)) ? Number(value) : value;
325
- }
326
-
327
- return value;
328
- }
329
-
330
- /**
331
- * If the resource can be owned by an organisation
332
- * @returns {boolean} - Can be owned by an organisation
333
- */
334
- get ownable () {
335
- return false;
336
- }
337
-
338
- /**
339
- * Auto generated resource url
340
- * @returns {string} - Resource url
341
- */
342
- get url () {
343
- if (!this._url) {
344
- let url = `${this._api.url}${this.constructor.resourcePath}`;
345
-
346
- // Find and replace any keys
347
- url = url.replace(/{(\w+)}/g, (match, key) => this[camelCase(key)]);
348
-
349
- this._url = url;
350
- }
351
-
352
- return this._url;
353
- }
354
-
355
- /**
356
- * Auto generated Resource base url
357
- * @returns {string} - Resource base url
358
- */
359
- get baseUrl () {
360
- if (!this.__baseUrl) {
361
- const basePath = this.constructor.resourcePath.match(/^(\/[^{]+\b)/)[1];
362
-
363
- this.__baseUrl = `${this._api.url}${basePath}`;
364
- }
365
-
366
- return this.__baseUrl;
367
- }
368
-
369
- /**
370
- * List fields that contain object data
371
- * @returns {Array<String>} - A list of fields
372
- */
373
- get fieldNames () {
374
- const keys = unique([
375
- ...Object.keys(this._baseProperties),
376
- ...Object.keys(this._properties),
377
- ]);
378
-
379
- return keys.map(camelCase);
380
- }
381
-
382
- /**
383
- * String representation of the resource, similar to Python's __repr__
384
- * @returns {string} - Resource name and id
385
- */
386
- toString () {
387
- return `${this.constructor.name}(${this[this.resourceUrlKey]})`;
388
- }
389
-
390
- /**
391
- * Transform instance to object
392
- * @param {boolean} [camelCaseKeys=false] - camelCase object keys
393
- * @returns {{}} - Object
394
- */
395
- toObject (camelCaseKeys = false) {
396
- this._updateProperties();
397
-
398
- const out = { ...this._baseProperties, ...this._properties };
399
-
400
- if (camelCaseKeys) {
401
- for (const key of Object.keys(out)) {
402
- const ccKey = camelCase(key);
403
-
404
- if (key !== ccKey) {
405
- out[ccKey] = out[key];
406
-
407
- delete out[key];
408
- }
409
- }
410
- }
411
-
412
- return out;
413
- }
414
-
415
- /**
416
- * Macro for resource listing
417
- * @param {string|Class<ResourceBase>} Target - Target object
418
- * @param {?String} url - Target url, if null it will guess
419
- * @param {object} seedData - Internal use, used for seeding SimpleResourceProxy::new
420
- * @returns {SimpleResourceProxy} - A proxy for accessing the resource
421
- * @protected
422
- */
423
- _proxyResourceList (Target, url = null, seedData = {}) {
424
- if (!url) {
425
- url = `${Target.resourceName.replace(/s+$/, '')}s`;
426
- }
427
-
428
- if (typeof url === 'string' && !url.startsWith('/') && !url.match(/https?:/)) {
429
- url = `${this.url}/${url}`;
430
- }
431
-
432
- return new SimpleResourceProxy(this.api, Target, url, seedData);
433
- }
434
-
435
- /**
436
- * Static proxy generation
437
- * @param {string|Class} Target - Constructor or url
438
- * @param {Class?} Constructor - Constructor for a resource that the results should be cast to
439
- * @param {Object<string, *>} seedData - Optional data to seed the resolved resources
440
- * @returns {SimpleResourceProxy} - A proxy for accessing the resource
441
- * @example
442
- * user.static('jobs').lister();
443
- *
444
- * @example
445
- * class FooBar extends ResourceBase {
446
- * static get resourceName() {
447
- * return 'custom';
448
- * }
449
- * }
450
- *
451
- * api.static(FooBar)
452
- * .get(1)
453
- * .then(console.log);
454
- */
455
- static (Target, Constructor = ResourceBase, seedData = {}) {
456
- let url;
457
-
458
- if (typeof Target === 'string') {
459
- url = `${this.url}/${Target}`;
460
-
461
- const name = Constructor.name || 'AnonymousResource';
462
-
463
- Target = class AnonymousResource extends Constructor {
464
- static get resourceName () {
465
- return Object.getPrototypeOf(this).resourceName || 'anonymous';
466
- }
467
-
468
- static get resourcePath () {
469
- return url;
470
- }
471
- };
472
-
473
- Object.defineProperty(Target, 'name', {
474
- value: `${name}_${fnv32b(url)}`,
475
- });
476
- }
477
-
478
- if (!isParentOf(ResourceBase, Target)) {
479
- throw new TypeError('Expected Target to be of type String or ResourceBase constructor');
480
- }
481
-
482
- return this._proxyResourceList(Target, url, seedData);
483
- }
484
- }
@@ -1,81 +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
- export { default as Choropleth } from './Choropleth';
34
- export { default as Color } from './Color';
35
- export { default as Contract } from './Contract';
36
- export { default as Dimension } from './Dimension';
37
- export { default as DimensionSet } from './DimensionSet';
38
- export { default as Domain } from './Domain';
39
- export { default as Faq } from './Faq';
40
- export { default as Feature } from './Feature';
41
- export { default as Font } from './Font';
42
- export { default as FontFamily } from './FontFamily';
43
- export { default as Highlight } from './Highlight';
44
- export { default as InsetMap } from './InsetMap';
45
- export { default as Job } from './Job';
46
- export { default as JobResult } from './JobResult';
47
- export { default as JobRevision } from './JobRevision';
48
- export { default as JobShare } from './JobShare';
49
- export { default as JobType } from './JobType';
50
- export { default as Language } from './Language';
51
- export { default as Layer } from './Layer';
52
- export { default as LayerFaq } from './LayerFaq';
53
- export { default as LayerGroup } from './LayerGroup';
54
- export { default as Mapstyle } from './Mapstyle';
55
- export { default as MapstyleSet } from './MapstyleSet';
56
- export { default as Message } from './Message';
57
- export { default as Notification } from './Notification';
58
- export { default as Organisation } from './Organisation';
59
- export { default as OrganisationNote } from './OrganisationNote';
60
- export { default as Permission } from './Permission';
61
- export { default as ProductTour } from './ProductTour';
62
- export { default as ProductTourStep } from './ProductTourStep';
63
- export { default as Role } from './Role';
64
- export { default as Svg } from './Svg';
65
- export { default as SvgSet } from './SvgSet';
66
- export { default as Tag } from './Tag';
67
- export { default as TagType } from './TagType';
68
- export { default as User } from './User';
69
- export { default as VectorHighlight } from './VectorHighlight';
70
- export { default as VectorChoropleth } from './VectorChoropleth';
71
-
72
- import CrudBase from './base/CrudBase';
73
- import CrudSetBase from './base/CrudSetBase';
74
- import ResourceBase from './base/ResourceBase';
75
-
76
- /**
77
- * @private
78
- */
79
- export const base = {
80
- CrudBase, CrudSetBase, ResourceBase,
81
- };
@@ -1,136 +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 { isNode } from '../utils/node';
34
- import DataStoreContract from './DataStoreContract';
35
-
36
- /**
37
- * @private
38
- * @todo fix
39
- */
40
- export default class CookiesDriver extends DataStoreContract {
41
- constructor (prefix = '_m4n_') {
42
- super();
43
-
44
- this.__prefix = prefix;
45
- }
46
-
47
- /**
48
- * Cookie name prefix
49
- * @returns {String} - Prefix
50
- * @private
51
- */
52
- get _prefix () {
53
- return this.__prefix;
54
- }
55
-
56
- /**
57
- * @inheritDoc
58
- */
59
- static get secure () {
60
- return window.location.protocol === 'https:';
61
- }
62
-
63
- /**
64
- * @inheritDoc
65
- */
66
- static get available () {
67
- return !isNode();
68
- }
69
-
70
- /**
71
- * Store a value in the storage
72
- * @param {String} name - value name
73
- * @param {*} value - value
74
- * @param {Date|String} [expires=2050-01-01] - Expiration date
75
- */
76
- set (name, value, expires = new Date('2050-01-01')) {
77
- name = encodeURIComponent(this._prefix + name);
78
- value = encodeURIComponent(value);
79
-
80
- if (expires instanceof Date) {
81
- expires = expires.toUTCString();
82
- }
83
-
84
- let cookie = `${name}=${value}; expires=${expires}`;
85
-
86
- if (CookiesDriver.secure) {
87
- cookie += '; secure';
88
- }
89
-
90
- document.cookie = cookie;
91
- }
92
-
93
- /**
94
- * @inheritDoc
95
- */
96
- get (name) {
97
- name = this._prefix + name;
98
-
99
- return this._toObject()[name];
100
- }
101
-
102
- /**
103
- * @inheritDoc
104
- */
105
- remove (name) {
106
- this.set(name, '', new Date(1970));
107
- }
108
-
109
- /**
110
- * @inheritDoc
111
- */
112
- keys () {
113
- const regex = new RegExp(`^${this._prefix}`);
114
-
115
- return Object.keys(this._toObject()).map(x => x.replace(regex, ''));
116
- }
117
-
118
- /**
119
- * Extract cookies and turn them into a object
120
- * @returns {Object} - cookies
121
- * @private
122
- */
123
- _toObject () {
124
- const cookies = {};
125
-
126
- document.cookie
127
- .split(';')
128
- .map(x => x.trim().split('=').map(decodeURIComponent))
129
- .filter(x => x[0].startsWith(this._prefix))
130
- .forEach(x => {
131
- cookies[x[0]] = x[1];
132
- });
133
-
134
- return cookies;
135
- }
136
- }