@mapcreator/api 3.3.7 → 5.0.0-alpha.101

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 (496) 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 +96 -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 -344
  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 -14645
  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 -12810
  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 -27
  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/DomainLoginMethod.d.ts +0 -7
  321. package/dist/resources/Faq.d.ts +0 -7
  322. package/dist/resources/Feature.d.ts +0 -9
  323. package/dist/resources/Font.d.ts +0 -4
  324. package/dist/resources/FontFamily.d.ts +0 -11
  325. package/dist/resources/Highlight.d.ts +0 -4
  326. package/dist/resources/InsetMap.d.ts +0 -10
  327. package/dist/resources/Job.d.ts +0 -56
  328. package/dist/resources/JobResult.d.ts +0 -76
  329. package/dist/resources/JobRevision.d.ts +0 -64
  330. package/dist/resources/JobShare.d.ts +0 -15
  331. package/dist/resources/JobType.d.ts +0 -9
  332. package/dist/resources/Language.d.ts +0 -4
  333. package/dist/resources/Layer.d.ts +0 -10
  334. package/dist/resources/LayerFaq.d.ts +0 -8
  335. package/dist/resources/LayerGroup.d.ts +0 -14
  336. package/dist/resources/Mapstyle.d.ts +0 -8
  337. package/dist/resources/MapstyleSet.d.ts +0 -13
  338. package/dist/resources/MapstyleSetColor.d.ts +0 -8
  339. package/dist/resources/Message.d.ts +0 -7
  340. package/dist/resources/MessageVariant.d.ts +0 -4
  341. package/dist/resources/Notification.d.ts +0 -4
  342. package/dist/resources/Organisation.d.ts +0 -99
  343. package/dist/resources/OrganisationNote.d.ts +0 -17
  344. package/dist/resources/Permission.d.ts +0 -4
  345. package/dist/resources/ProductTour.d.ts +0 -10
  346. package/dist/resources/ProductTourStep.d.ts +0 -7
  347. package/dist/resources/Role.d.ts +0 -14
  348. package/dist/resources/Svg.d.ts +0 -4
  349. package/dist/resources/SvgSet.d.ts +0 -11
  350. package/dist/resources/Tag.d.ts +0 -9
  351. package/dist/resources/TagType.d.ts +0 -13
  352. package/dist/resources/User.d.ts +0 -119
  353. package/dist/resources/VectorChoropleth.d.ts +0 -4
  354. package/dist/resources/VectorHighlight.d.ts +0 -4
  355. package/dist/resources/base/CrudBase.d.ts +0 -66
  356. package/dist/resources/base/CrudBase.d.ts.map +0 -1
  357. package/dist/resources/base/CrudSetBase.d.ts +0 -27
  358. package/dist/resources/base/CrudSetBase.d.ts.map +0 -1
  359. package/dist/resources/base/CrudSetItemBase.d.ts +0 -19
  360. package/dist/resources/base/CrudSetItemBase.d.ts.map +0 -1
  361. package/dist/resources/base/DownloadedResource.d.ts +0 -72
  362. package/dist/resources/base/DownloadedResource.d.ts.map +0 -1
  363. package/dist/resources/base/ResourceBase.d.ts +0 -164
  364. package/dist/resources/base/ResourceBase.d.ts.map +0 -1
  365. package/dist/resources/index.d.ts +0 -48
  366. package/dist/storage/CookiesDriver.d.ts +0 -37
  367. package/dist/storage/DataStoreContract.d.ts +0 -46
  368. package/dist/storage/DummyDriver.d.ts +0 -15
  369. package/dist/storage/FileDriver.d.ts +0 -54
  370. package/dist/storage/LocalStorageDriver.d.ts +0 -13
  371. package/dist/storage/StorageManager.d.ts +0 -46
  372. package/dist/traits/HandlesImages.d.ts +0 -15
  373. package/dist/traits/Injectable.d.ts +0 -60
  374. package/dist/traits/OwnableResource.d.ts +0 -18
  375. package/dist/traits/Trait.d.ts +0 -12
  376. package/dist/utils/Logger.d.ts +0 -55
  377. package/dist/utils/Singleton.d.ts +0 -9
  378. package/dist/utils/StaticClass.d.ts +0 -7
  379. package/dist/utils/Unobservable.d.ts +0 -13
  380. package/dist/utils/base64.d.ts +0 -12
  381. package/dist/utils/geo.d.ts +0 -74
  382. package/dist/utils/hash.d.ts +0 -15
  383. package/dist/utils/helpers.d.ts +0 -47
  384. package/dist/utils/node.d.ts +0 -15
  385. package/dist/utils/reflection.d.ts +0 -43
  386. package/dist/utils/requests.d.ts +0 -24
  387. package/dist/utils/uuid.d.ts +0 -19
  388. package/manual/assets/maps4news.svg +0 -23
  389. package/manual/building.md +0 -19
  390. package/manual/css/hide_import.css +0 -3
  391. package/manual/css/sidebar_fix.css +0 -3
  392. package/manual/examples.authentication.md +0 -205
  393. package/manual/examples.md +0 -153
  394. package/manual/installation.md +0 -33
  395. package/manual/js/sandbox.js +0 -26
  396. package/src/ImageHandler.js +0 -134
  397. package/src/Mapcreator.js +0 -713
  398. package/src/PaginatedResourceListing.js +0 -300
  399. package/src/RequestParameters.js +0 -711
  400. package/src/ResourceLister.js +0 -368
  401. package/src/enums/DeletedState.js +0 -49
  402. package/src/enums/Enum.js +0 -130
  403. package/src/enums/JobShareVisibility.js +0 -43
  404. package/src/enums/ResultStatus.js +0 -49
  405. package/src/enums/index.js +0 -36
  406. package/src/errors/AbstractError.js +0 -70
  407. package/src/errors/ApiError.js +0 -139
  408. package/src/errors/GeoError.js +0 -36
  409. package/src/errors/NodeError.js +0 -36
  410. package/src/errors/OAuthError.js +0 -71
  411. package/src/errors/StaticClassError.js +0 -37
  412. package/src/errors/ValidationError.js +0 -164
  413. package/src/errors/index.js +0 -39
  414. package/src/index.js +0 -75
  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/DomainLoginMethod.js +0 -42
  435. package/src/resources/Faq.js +0 -42
  436. package/src/resources/Feature.js +0 -47
  437. package/src/resources/Font.js +0 -43
  438. package/src/resources/FontFamily.js +0 -55
  439. package/src/resources/Highlight.js +0 -39
  440. package/src/resources/InsetMap.js +0 -49
  441. package/src/resources/Job.js +0 -160
  442. package/src/resources/JobResult.js +0 -184
  443. package/src/resources/JobRevision.js +0 -201
  444. package/src/resources/JobShare.js +0 -61
  445. package/src/resources/JobType.js +0 -50
  446. package/src/resources/Language.js +0 -51
  447. package/src/resources/Layer.js +0 -48
  448. package/src/resources/LayerFaq.js +0 -47
  449. package/src/resources/LayerGroup.js +0 -57
  450. package/src/resources/Mapstyle.js +0 -45
  451. package/src/resources/MapstyleSet.js +0 -65
  452. package/src/resources/MapstyleSetColor.js +0 -51
  453. package/src/resources/Message.js +0 -94
  454. package/src/resources/MessageVariant.js +0 -37
  455. package/src/resources/Notification.js +0 -39
  456. package/src/resources/Organisation.js +0 -233
  457. package/src/resources/OrganisationNote.js +0 -57
  458. package/src/resources/Permission.js +0 -39
  459. package/src/resources/ProductTour.js +0 -53
  460. package/src/resources/ProductTourStep.js +0 -48
  461. package/src/resources/Role.js +0 -58
  462. package/src/resources/Svg.js +0 -39
  463. package/src/resources/SvgSet.js +0 -55
  464. package/src/resources/Tag.js +0 -50
  465. package/src/resources/TagType.js +0 -56
  466. package/src/resources/User.js +0 -251
  467. package/src/resources/VectorChoropleth.js +0 -40
  468. package/src/resources/VectorHighlight.js +0 -40
  469. package/src/resources/base/CrudBase.js +0 -204
  470. package/src/resources/base/CrudSetBase.js +0 -83
  471. package/src/resources/base/CrudSetItemBase.js +0 -82
  472. package/src/resources/base/DownloadedResource.js +0 -165
  473. package/src/resources/base/ResourceBase.js +0 -484
  474. package/src/resources/index.js +0 -82
  475. package/src/storage/CookiesDriver.js +0 -136
  476. package/src/storage/DataStoreContract.js +0 -111
  477. package/src/storage/DummyDriver.js +0 -91
  478. package/src/storage/FileDriver.js +0 -174
  479. package/src/storage/LocalStorageDriver.js +0 -108
  480. package/src/storage/StorageManager.js +0 -109
  481. package/src/traits/HandlesImages.js +0 -50
  482. package/src/traits/Injectable.js +0 -221
  483. package/src/traits/OwnableResource.js +0 -56
  484. package/src/traits/Trait.js +0 -43
  485. package/src/utils/Logger.js +0 -137
  486. package/src/utils/Singleton.js +0 -49
  487. package/src/utils/StaticClass.js +0 -43
  488. package/src/utils/Unobservable.js +0 -47
  489. package/src/utils/base64.js +0 -93
  490. package/src/utils/geo.js +0 -139
  491. package/src/utils/hash.js +0 -72
  492. package/src/utils/helpers.js +0 -178
  493. package/src/utils/node.js +0 -55
  494. package/src/utils/reflection.js +0 -170
  495. package/src/utils/requests.js +0 -120
  496. 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,82 +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 DomainLoginMethod } from './DomainLoginMethod';
40
- export { default as Faq } from './Faq';
41
- export { default as Feature } from './Feature';
42
- export { default as Font } from './Font';
43
- export { default as FontFamily } from './FontFamily';
44
- export { default as Highlight } from './Highlight';
45
- export { default as InsetMap } from './InsetMap';
46
- export { default as Job } from './Job';
47
- export { default as JobResult } from './JobResult';
48
- export { default as JobRevision } from './JobRevision';
49
- export { default as JobShare } from './JobShare';
50
- export { default as JobType } from './JobType';
51
- export { default as Language } from './Language';
52
- export { default as Layer } from './Layer';
53
- export { default as LayerFaq } from './LayerFaq';
54
- export { default as LayerGroup } from './LayerGroup';
55
- export { default as Mapstyle } from './Mapstyle';
56
- export { default as MapstyleSet } from './MapstyleSet';
57
- export { default as Message } from './Message';
58
- export { default as Notification } from './Notification';
59
- export { default as Organisation } from './Organisation';
60
- export { default as OrganisationNote } from './OrganisationNote';
61
- export { default as Permission } from './Permission';
62
- export { default as ProductTour } from './ProductTour';
63
- export { default as ProductTourStep } from './ProductTourStep';
64
- export { default as Role } from './Role';
65
- export { default as Svg } from './Svg';
66
- export { default as SvgSet } from './SvgSet';
67
- export { default as Tag } from './Tag';
68
- export { default as TagType } from './TagType';
69
- export { default as User } from './User';
70
- export { default as VectorHighlight } from './VectorHighlight';
71
- export { default as VectorChoropleth } from './VectorChoropleth';
72
-
73
- import CrudBase from './base/CrudBase';
74
- import CrudSetBase from './base/CrudSetBase';
75
- import ResourceBase from './base/ResourceBase';
76
-
77
- /**
78
- * @private
79
- */
80
- export const base = {
81
- CrudBase, CrudSetBase, ResourceBase,
82
- };
@@ -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
- }