@mapcreator/api 2.7.0 → 2.9.0

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://mapcreator/webpack/bootstrap","webpack://mapcreator/./src/utils/helpers.js","webpack://mapcreator/./src/utils/reflection.js","webpack://mapcreator/./src/resources/base/CrudBase.js","webpack://mapcreator/./src/RequestParameters.js","webpack://mapcreator/./src/resources/Choropleth.js","webpack://mapcreator/./src/resources/Faq.js","webpack://mapcreator/./src/resources/Highlight.js","webpack://mapcreator/./src/resources/InsetMap.js","webpack://mapcreator/./src/resources/ProductTourStep.js","webpack://mapcreator/./src/resources/ProductTour.js","webpack://mapcreator/./src/resources/TagType.js","webpack://mapcreator/./src/resources/VectorHighlight.js","webpack://mapcreator/./src/resources/VectorChoropleth.js","webpack://mapcreator/./src/resources/index.js","webpack://mapcreator/./src/utils/requests.js","webpack://mapcreator/./src/resources/base/ResourceBase.js","webpack://mapcreator/external \"case\"","webpack://mapcreator/./src/enums/DeletedState.js","webpack://mapcreator/./src/enums/ResultStatus.js","webpack://mapcreator/./src/enums/JobShareVisibility.js","webpack://mapcreator/./src/enums/index.js","webpack://mapcreator/./src/traits/OwnableResource.js","webpack://mapcreator/external \"@babel/runtime/helpers/defineProperty\"","webpack://mapcreator/./src/errors/AbstractError.js","webpack://mapcreator/./src/proxy/OwnedResourceProxy.js","webpack://mapcreator/./src/utils/node.js","webpack://mapcreator/./src/proxy/ResourceProxy.js","webpack://mapcreator/./src/oauth/OAuthToken.js","webpack://mapcreator/./src/resources/base/CrudSetBase.js","webpack://mapcreator/./src/resources/base/CrudSetItemBase.js","webpack://mapcreator/./src/PaginatedResourceListing.js","webpack://mapcreator/./src/proxy/SimpleResourceProxy.js","webpack://mapcreator/./src/errors/OAuthError.js","webpack://mapcreator/./src/storage/CookiesDriver.js","webpack://mapcreator/./src/storage/DummyDriver.js","webpack://mapcreator/./src/storage/LocalStorageDriver.js","webpack://mapcreator/./src/storage/StorageManager.js","webpack://mapcreator/./src/resources/JobShare.js","webpack://mapcreator/./src/resources/Layer.js","webpack://mapcreator/./src/utils/base64.js","webpack://mapcreator/./src/resources/base/DownloadedResource.js","webpack://mapcreator/./src/utils/Unobservable.js","webpack://mapcreator/./src/enums/Enum.js","webpack://mapcreator/./src/oauth/OAuth.js","webpack://mapcreator/./src/utils/Logger.js","webpack://mapcreator/./src/Mapcreator.js","webpack://mapcreator/./src/errors/ApiError.js","webpack://mapcreator/./src/traits/Trait.js","webpack://mapcreator/./src/utils/hash.js","webpack://mapcreator/./src/storage/DataStoreContract.js","webpack://mapcreator/./src/errors/GeoError.js","webpack://mapcreator/./src/proxy/GeoResourceProxy.js","webpack://mapcreator/./src/resources/JobResult.js","webpack://mapcreator/./src/errors/StaticClassError.js","webpack://mapcreator/./src/errors/ValidationError.js","webpack://mapcreator/./src/resources/Color.js","webpack://mapcreator/./src/resources/DimensionSet.js","webpack://mapcreator/./src/resources/Dimension.js","webpack://mapcreator/./src/resources/Feature.js","webpack://mapcreator/./src/resources/FontFamily.js","webpack://mapcreator/./src/resources/Font.js","webpack://mapcreator/./src/resources/Job.js","webpack://mapcreator/./src/resources/JobType.js","webpack://mapcreator/./src/resources/Mapstyle.js","webpack://mapcreator/./src/resources/SvgSet.js","webpack://mapcreator/./src/resources/Svg.js","webpack://mapcreator/./src/resources/Tag.js","webpack://mapcreator/./src/resources/User.js","webpack://mapcreator/./src/resources/Permission.js","webpack://mapcreator/./src/resources/MapstyleSetColor.js","webpack://mapcreator/./src/resources/MapstyleSet.js","webpack://mapcreator/external \"ky-universal\"","webpack://mapcreator/./src/utils/StaticClass.js","webpack://mapcreator/external \"events\"","webpack://mapcreator/./src/resources/Organisation.js","webpack://mapcreator/./src/oauth/DummyFlow.js","webpack://mapcreator/./src/utils/geo.js","webpack://mapcreator/./src/resources/MessageVariant.js","webpack://mapcreator/./src/resources/Message.js","webpack://mapcreator/./src/utils/uuid.js","webpack://mapcreator/./src/oauth/StateContainer.js","webpack://mapcreator/./src/ResourceLister.js","webpack://mapcreator/./src/proxy/OrganisationProxy.js","webpack://mapcreator/./src/resources/Contract.js","webpack://mapcreator/./src/resources/Domain.js","webpack://mapcreator/./src/resources/JobRevision.js","webpack://mapcreator/./src/resources/Language.js","webpack://mapcreator/./src/resources/Notification.js","webpack://mapcreator/./src/resources/Role.js","webpack://mapcreator/./src/proxy/index.js","webpack://mapcreator/./src/errors/NodeError.js","webpack://mapcreator/./src/errors/index.js","webpack://mapcreator/./src/traits/Injectable.js","webpack://mapcreator/./src/resources/LayerGroup.js","webpack://mapcreator/./src/ImageHandler.js","webpack://mapcreator/./src/traits/HandlesImages.js","webpack://mapcreator/./src/storage/FileDriver.js","webpack://mapcreator/external \"json-stable-stringify\"","webpack://mapcreator/external \"form-data\"","webpack://mapcreator/./src/oauth/ImplicitFlow.js","webpack://mapcreator/./src/oauth/ImplicitFlowPopup.js","webpack://mapcreator/./src/oauth/PasswordFlow.js","webpack://mapcreator/./src/index.js"],"names":["getPaginatedRange","page","start","stop","Promise","out","data","promises","pageCount","i","push","get","rows","all","concat","map","x","delay","ms","resolve","setTimeout","wrapKyCancelable","fn","input","options","hasOwnProperty","controller","AbortController","promise","signal","cancel","abort","makeCancelable","serializeUTCDate","date","Date","TypeError","pad","num","slice","Math","max","String","length","getUTCFullYear","getUTCMonth","getUTCDate","join","getUTCHours","getUTCMinutes","getUTCSeconds","clone","clonePrivate","_clone","value","Array","isArray","output","key","Object","keys","startsWith","isParentOf","parent","child","constructor","name","getPrototypeOf","getTypeName","Empty","copyProps","target","source","getOwnPropertyNames","getOwnPropertySymbols","forEach","prop","match","defineProperty","getOwnPropertyDescriptor","mix","baseClass","mixins","cocktail","_Cocktail","args","mixin","prototype","initializer","filter","call","Trait","__mixins","hash","fnv32b","hasTrait","Subject","TraitClass","includes","CrudBase","ResourceBase","api","AbstractClassError","_buildCreateData","_updateProperties","_properties","_baseProperties","item","pos","self","indexOf","id","save","_update","_create","json","_prepareData","ky","post","baseUrl","patch","url","assign","delete","updateSelf","restore","put","instance","entries","RequestParameters","EventEmitter","object","_resolve","apply","perPage","offset","search","sort","deleted","extra","_page","_perPage","Number","process","_offset","maxPerPage","_maxPerPage","_search","_sort","_deleted","_extra","_validatePage","_validatePerPage","_validateOffset","_validateMaxPerPage","_validateSearch","_validateSort","_validateDeleted","_validateExtra","isNaN","isFinite","round","min","normalize","toString","query","split","toLowerCase","possible","DeletedState","values","_name","preventEvent","pascalCase","emit","encode","encodeQueryString","toParameterObject","toObject","reduce","obj","snakeCase","replace","snakeKey","copy","token","hashObject","resetDefaults","params","Key","camelCase","Choropleth","resourceName","getJson","downloadPreview","response","DownloadedResource","fromResponse","Faq","Highlight","InsetMap","ProductTourStep","CrudSetItemBase","parentKey","ProductTour","CrudSetBase","resourcePath","_Child","TagType","tags","_proxyResourceList","Tag","VectorHighlight","VectorChoropleth","base","getFormData","windowTest","window","FormData","require","_encodeQueryString","paramsObject","_basePrefix","prefix","encodeURIComponent","shift","wrapKyPrefixUrl","test","unique","v","findIndex","vv","Injectable","newKey","_guessType","_api","fields","_applyProperty","enumerable","configurable","Boolean","deletedAt","_knownFields","Mapcreator","AbstractError","resourceUrlKey","protectedFields","readonly","sanitize","reset","field","refresh","desc","set","val","_url","endsWith","ownable","basePath","fieldNames","camelCaseKeys","ccKey","Target","seedData","SimpleResourceProxy","static","Constructor","AnonymousResource","Enum","ALL","BOTH","NONE","ONLY","ResultStatus","JobShareVisibility","OwnableResource","organisations","OrganisationProxy","Error","message","AbstractMethodError","OwnedResourceProxy","resource","sync","items","_modifyResourceLink","attach","detach","attachAll","detachAll","method","_getKeyValue","isNode","_","str","ResourceProxy","_parseSelector","_seedData","new","glue","result","select","OAuthToken","type","expires","scopes","toUpperCase","now","toResponseObject","toQueryString","expired","storageName","fromResponseObject","JSON","parse","scope","toUTCString","StorageManager","secure","stringify","recover","foreignKeyName","_fk","hasParent","parentId","PaginatedResourceListing","route","parameters","rowCount","_Target","_parameters","_pageCount","_rows","_data","_route","getPage","headers","totalPages","row","hasNext","hasPrevious","cacheToken","next","previous","altUrl","__baseUrl","list","resolver","_buildResolver","lister","maxRows","ResourceLister","paramType","OAuthError","error","CookiesDriver","DataStoreContract","__prefix","_prefix","location","protocol","available","cookie","document","_toObject","remove","regex","RegExp","cookies","trim","decodeURIComponent","DummyDriver","LocalStorageDriver","localStorage","setItem","getItem","removeItem","storage","StaticClass","FileDriver","file","dummy","best","C","JobShare","visibility","Layer","HandlesImages","base64Encode","buffer","base64","encodings","bytes","Uint8Array","byteLength","byteRemainder","mainLength","a","b","c","d","chunk","fileName","_type","_fileName","arrayBuffer","mimeType","contentType","contentDisposition","matches","exec","size","createObjectUrl","URL","createObjectURL","createBlob","Blob","toDataUri","toBase64","Unobservable","Symbol","toStringTag","enums","auto","constantCase","_iota","init","freeze","s","__iota","OAuth","clientId","authenticated","authenticate","forget","StateContainer","clean","logout","host","Accept","Authorization","importToken","Logger","logLevel","getLogLevels","log","level","_shouldLog","console","debug","info","warn","_logLevel","logLevels","targetLevel","currentLevel","auth","DummyFlow","_logger","wrapKy","version","_auth","logger","_host","saveToken","_ky","hooks","beforeRequest","request","afterResponse","_options","status","resetDelay","ValidationError","ApiError","create","timeout","retry","wrapper","requestMethods","path","choropleths","GeoResourceProxy","vectorChoropleths","colors","Color","tagTypes","contracts","Contract","dimensions","Dimension","dimensionSets","DimensionSet","faqs","features","Feature","featuredMaps","Job","fonts","Font","fontFamilies","FontFamily","highlights","vectorHighlights","insetMaps","jobs","jobShares","jobTypes","JobType","languages","Language","layers","layerGroups","LayerGroup","mapstyles","Mapstyle","mapstyleSets","MapstyleSet","notifications","Notification","messages","Message","Organisation","permissions","Permission","productTours","productTourSteps","roles","Role","svgs","Svg","svgSets","SvgSet","users","User","getSvgSetTypes","getFontStyles","trace","_trace","_parseTrace","hasTrace","index","lastIndex","line","code","FNV1_32A_INIT","charCodeAt","sum","substr","clear","GeoError","hasForPoint","hasForBoundary","_hasForPoint","_hasForBoundary","forBoundary","topLeft","bottomRight","limit","boundary","GeoBoundary","r","forPoint","lat","lng","point","GeoPoint","JobResult","job","jobId","jobRevision","revisions","outputUrl","downloadOutput","outputUrlUrl","getOutputUrl","logUrl","downloadLog","previewUrl","dealWith","dealtWith","StaticClassError","schemaErrors","validationErrors","hasSchemaErrors","results","JobRevision","lastArchiveUrl","share","PRIVATE","ips","organisation","organisationId","language","languageCode","read","o","unread","MapstyleSetColor","mapstyleSetId","domains","Domain","getTree","root","_parseTree","rawNode","node","children","reject","_lat","_lng","toJSON","lat1","lng1","lat2","lng2","getCenter","MessageVariant","superObject","variants","variant","caseFn","res","from","Uuid","uuid4","getTime","performance","random","floor","nil","generate","uuid","validate","state","purge","found","tokens","Resource","_Resource","_key","_waiting","autoUpdate","_reset","hasMore","availableRows","waiting","_maxRows","raw","update","_availableRows","_autoUpdate","_boundUpdate","bind","on","off","_parameterToken","_realData","_keys","_fetchMore","e","endPage","ceil","responses","iterator","autoMaxRows","loadMore","default","_parent","_modifyLink","Type","isValid","revision","resultProxy","layer","build","callback","title","NodeError","injectable","_injectable","isProxy","injectProxy","inject","uninject","_injectProxy","_inject","descriptor","injected","original","undefined","writable","getter","func","ImageHandler","_target","download","upload","image","body","append","getHeaders","imageHandler","_path","_read","_write","_fs","readFileSync","fd","openSync","writeSync","closeSync","__fs","eval","ImplicitFlow","callbackUrl","useState","_anchorParams","_anchorContainsOAuthResponse","anchorParams","_getOAuthAnchorParams","_cleanAnchorParams","_anchorContainsError","err","_getError","_buildRedirectUrl","queryParams","_getAnchorParams","pair","targets","queryKeys","titleCase","ImplicitFlowPopup","windowOptions","popupWindowName","popup","open","ticker","setInterval","closed","done","href","clearInterval","close","PasswordFlow","secret","username","password","_secret","_username","_password","VERSION"],"mappings":"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","file":"bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 75);\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Get all the pages from a {@link PaginatedResourceListing} or a range\n * @param {Promise<PaginatedResourceListing>|PaginatedResourceListing} page - Promise that returns a {@link PaginatedResourceListing}\n * @param {?Number} [start=1] - Start page\n * @param {?Number} [stop] - Stop page, defaults to the page count if not filled in.\n * @returns {Promise<Array<ResourceBase>>} - multiple pages\n * @throws {ApiError} - If the api returns errors\n * @example\n * import { helpers } from \"@mapcreator/api\";\n *\n * const promise = api.users.list(1, 50); // 50 per page is more efficient\n *\n * helpers.getPaginatedRange(promise).then(data => {\n * data.map(row => `[${row.id}] ${row.name}`) // We just want the names\n * .forEach(console.log) // Log the names and ids of every user\n * })\n */\nexport async function getPaginatedRange (page, start = 1, stop) {\n // Resolve promise if any\n if (page instanceof Promise) {\n page = await page;\n }\n\n const out = page.data;\n const promises = [];\n\n // Handle defaults\n start = start || page.page;\n stop = stop || page.pageCount;\n\n if (start === page.page) {\n start++;\n }\n\n // Get all pages\n for (let i = start; i <= stop; i++) {\n promises.push(page.get(i));\n }\n\n // Resolve\n const rows = await Promise.all(promises);\n\n return out.concat(...rows.map(x => x.data));\n}\n\n/**\n * Async delay\n * @private\n * @param {number} ms - milliseconds\n * @returns {Promise}\n */\nexport const delay = ms => new Promise(resolve => setTimeout(resolve, ms));\n\n/**\n * Wraps around ky to make it return cancelable requests\n * @param {function(*=, *=): Response} fn - ky instance\n * @returns {function(*=, *=): Response}\n * @private\n */\nexport function wrapKyCancelable (fn) {\n return (input, options = {}) => {\n if (typeof options === 'object' && options.hasOwnProperty('signal')) {\n return fn(input, options);\n }\n\n const controller = new AbortController();\n const promise = fn(input, { signal: controller.signal, ...options });\n\n promise.cancel = () => controller.abort();\n\n return promise;\n };\n}\n\n/**\n * @typedef {Promise} CancelablePromise\n * @property {function(): void} cancel - Cancel the promise\n */\n\n/**\n * Makes a promise cancelable by passing it a signal\n * @param {function} fn - async method\n * @returns {CancelablePromise}\n * @private\n */\nexport function makeCancelable (fn) {\n const controller = new AbortController();\n\n const promise = fn(controller.signal);\n\n if (promise instanceof Promise) {\n promise.cancel = () => controller.abort();\n }\n\n return promise;\n}\n\n/**\n * Convert Date into server format\n * @param {Date} date - Target\n * @returns {String} - Formatted date\n * @private\n */\nexport function serializeUTCDate (date) {\n if (!(date instanceof Date)) {\n throw new TypeError('Expected date to be of type Date');\n }\n\n const pad = num => `00${num}`.slice(-Math.max(String(num).length, 2));\n\n let out = [\n date.getUTCFullYear(),\n date.getUTCMonth() + 1,\n date.getUTCDate(),\n ].map(pad).join('-');\n\n out += ` ${[\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n ].map(pad).join(':')}`;\n\n return out;\n}\n\nexport function clone (input, clonePrivate = true) {\n const _clone = value => clone(value, clonePrivate);\n\n if (typeof input !== 'object' || input === null) {\n return input;\n } else if (Array.isArray(input)) {\n return input.map(_clone);\n }\n\n const output = {};\n\n for (const key of Object.keys(input)) {\n if (!clonePrivate && key.startsWith('_')) {\n continue;\n }\n\n output[key] = _clone(input[key]);\n }\n\n return output;\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Trait from '../traits/Trait';\nimport { fnv32b } from './hash';\n\n/**\n * Tests if the parent is a parent of child\n * @param {Class|object} parent - Instance or Class\n * @param {Class|object} child - Instance or Class\n * @returns {boolean} - is parent a parent of child\n * @private\n * @example\n * class A {}\n * class B extends A {}\n * class C extends B {}\n *\n * isParentOf(A, C) // true\n * isParentOf(B, C) // true\n * isParentOf(C, C) // true\n * isParentOf(B, A) // false\n */\nexport function isParentOf (parent, child) {\n if (parent === null || child === null) {\n return false;\n }\n\n parent = typeof parent === 'function' ? parent : parent.constructor;\n child = typeof child === 'function' ? child : child.constructor;\n\n do {\n if (child.name === parent.name) {\n return true;\n }\n\n child = Object.getPrototypeOf(child);\n } while (child.name !== '');\n\n return false;\n}\n\n\n/**\n * Get the name of the value type\n * @param {*} value - Any value\n * @private\n * @returns {string} - Value type name\n */\nexport function getTypeName (value) {\n if (typeof value === 'undefined') {\n return 'undefined';\n }\n\n value = typeof value === 'function' ? value : value.constructor;\n\n return value.name;\n\n}\n\n/**\n * Helper class for mix\n * @see {@link mix}\n */\nclass Empty {\n}\n\n/**\n * Copy properties from source to target\n * @param {object} target - Object for the properties to be copied to\n * @param {object} source - Object containing properties to be copied\n */\nfunction copyProps (target, source) {\n Object\n .getOwnPropertyNames(source)\n .concat(Object.getOwnPropertySymbols(source))\n .forEach(prop => {\n if (!prop.match(/^(?:constructor|initializer|prototype|arguments|caller|name|bind|call|apply|toString|length)$/)) {\n Object.defineProperty(target, prop, Object.getOwnPropertyDescriptor(source, prop));\n }\n });\n}\n\n/**\n * Mix traits into the target class\n * @param {Class} baseClass - Target base class for the traits to be applied to\n * @param {Class<Trait>} mixins - Traits to be applied\n * @returns {Class} - Constructor with any traits applied\n * @private\n */\nexport function mix (baseClass, ...mixins) {\n const cocktail = class _Cocktail extends (baseClass || Empty) {\n constructor (...args) {\n super(...args);\n\n mixins\n .map(mixin => mixin.prototype.initializer)\n .filter(initializer => typeof initializer === 'function')\n .forEach(initializer => initializer.call(this));\n }\n };\n\n\n for (const mixin of mixins) {\n if (!isParentOf(Trait, mixin)) {\n throw new TypeError(`Expected mixin to implement Trait for ${mixin.name}`);\n }\n\n copyProps(cocktail.prototype, mixin.prototype);\n copyProps(cocktail, mixin);\n }\n\n cocktail.__mixins = mixins;\n\n const hash = fnv32b(mixins.map(x => x.name).join(','));\n\n Object.defineProperty(cocktail, 'name', { value: `Cocktail_${hash}` });\n\n return cocktail;\n}\n\n/**\n * Checks if the target has a certain trait.\n *\n * @param {Class|Object} Subject - Instance or class\n * @param {Class<Trait>} TraitClass - Trait to check for\n * @returns {boolean} - If the subject has the trait\n * @private\n */\nexport function hasTrait (Subject, TraitClass) {\n Subject = typeof Subject === 'function' ? Subject : Subject.constructor;\n\n do {\n if (Array.isArray(Subject.__mixins) && Subject.__mixins.includes(TraitClass)) {\n return true;\n }\n\n Subject = Object.getPrototypeOf(Subject);\n } while (Subject.name !== '');\n\n return false;\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { AbstractClassError } from '../../errors';\nimport ResourceBase from './ResourceBase';\nimport { makeCancelable, serializeUTCDate } from '../../utils/helpers';\n\n/**\n * Base of all resource items that support Crud operations\n * @abstract\n */\nexport default class CrudBase extends ResourceBase {\n /**\n * @param {Mapcreator} api - Api instance\n * @param {Object<String, *>} data - Item data\n */\n constructor (api, data = {}) {\n super(api, data);\n\n if (this.constructor === CrudBase) {\n throw new AbstractClassError();\n }\n }\n\n /**\n * Build data for create operation\n * @returns {Object<String, *>} - Create data\n * @protected\n */\n _buildCreateData () {\n this._updateProperties();\n\n const out = {};\n const keys = [].concat(\n Object.keys(this._properties),\n Object.keys(this._baseProperties),\n ).filter((item, pos, self) => self.indexOf(item) === pos);\n\n for (const key of keys) {\n out[key] = this._properties[key] || this._baseProperties[key];\n }\n\n delete out.id;\n\n return out;\n }\n\n /**\n * Save item. This will create a new item if `id` is unset\n * @returns {CancelablePromise<CrudBase>} - Current instance\n * @throws {ApiError} - If the api returns errors\n * @throws {ValidationError} - If the submitted data isn't valid\n */\n save () {\n return this.id ? this._update() : this._create();\n }\n\n /**\n * Store new item\n * @returns {CancelablePromise<CrudBase>} - Current instance\n * @throws {ApiError} - If the api returns errors\n * @throws {ValidationError} - If the submitted data isn't valid\n * @private\n */\n _create () {\n return makeCancelable(async signal => {\n const json = this._prepareData(this._buildCreateData());\n\n const { data } = await this.api.ky.post(this.baseUrl, { json, signal }).json();\n\n this._properties = {};\n this._baseProperties = data;\n\n this._updateProperties();\n\n return this;\n });\n }\n\n /**\n * Update existing item\n * @returns {CancelablePromise<CrudBase>} - Current instance\n * @throws {ApiError} - If the api returns errors\n * @throws {ValidationError} - If the submitted data isn't valid\n * @protected\n */\n _update () {\n this._updateProperties();\n\n return makeCancelable(async signal => {\n // We'll just fake it, no need to bother the server\n // with an empty request.\n if (Object.keys(this._properties).length === 0) {\n return this;\n }\n\n const json = this._prepareData(this._properties);\n\n await this.api.ky.patch(this.url, { json, signal });\n\n // Reset changes\n Object.assign(this._baseProperties, this._properties);\n this._properties = {};\n\n if ('updated_at' in this._baseProperties) {\n this._baseProperties['updated_at'] = new Date();\n }\n\n return this;\n });\n }\n\n /**\n * Delete item\n * @param {Boolean} [updateSelf=true] - Update current instance (set the deletedAt property)\n * @returns {CancelablePromise<CrudBase>} - Current instance\n * @throws {ApiError} - If the api returns errors\n * @throws {ValidationError} - If the submitted data isn't valid\n */\n delete (updateSelf = true) {\n return makeCancelable(async signal => {\n await this.api.ky.delete(this.url, { signal });\n\n if (updateSelf) {\n this._baseProperties['deleted_at'] = new Date();\n }\n\n return this;\n });\n }\n\n /**\n * Restore item\n * @param {Boolean} [updateSelf=true] - Update current instance (unset the deletedAt property)\n * @returns {CancelablePromise<CrudBase>} - New restored instance\n * @throws {ApiError} - If the api returns errors\n * @throws {ValidationError} - If the submitted data isn't valid\n */\n restore (updateSelf = true) {\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.put(this.url, { signal }).json();\n const instance = new this.constructor(this.api, data);\n\n if (updateSelf) {\n this._properties = {};\n this._baseProperties = data;\n\n this._updateProperties();\n }\n\n return instance;\n });\n }\n\n /**\n * Prepare data to be sent to the api\n * @param {Object} data\n * @returns {Object} prepared\n * @private\n */\n _prepareData (data) {\n const output = {};\n\n for (const [key, value] of Object.entries(data)) {\n if (value instanceof Date) {\n output[key] = serializeUTCDate(value);\n } else {\n output[key] = value;\n }\n }\n\n return output;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n\nimport { camel as camelCase, pascal as pascalCase, snake as snakeCase } from 'case';\nimport { EventEmitter } from 'events';\nimport { DeletedState } from './enums';\nimport { hashObject } from './utils/hash';\nimport { getTypeName } from './utils/reflection';\nimport { encodeQueryString } from './utils/requests';\n\n/**\n * Used for keeping track of the request parameters\n *\n * @fires RequestParameters#change\n * @fires RequestParameters#change:page\n * @fires RequestParameters#change:perPage\n * @fires RequestParameters#change:search\n * @fires RequestParameters#change:sort\n * @fires RequestParameters#change:deleted\n * @fires RequestParameters#change:extra\n */\nexport default class RequestParameters extends EventEmitter {\n /**\n * RequestParameters constructor\n * @param {Object} object - properties\n */\n constructor (object = {}) {\n super();\n\n // Apply defaults\n RequestParameters.keys().forEach(x => this._resolve(x));\n\n // Apply properties\n this.apply(object);\n }\n\n // region instance\n // region instance getters\n /**\n * Get page number\n * @returns {Number} - Page number\n * @throws {TypeError}\n */\n get page () {\n return this._resolve('page');\n }\n\n /**\n * Get rows per page\n * @returns {Number} - Per page\n * @throws {TypeError}\n */\n get perPage () {\n return this._resolve('perPage');\n }\n\n /**\n * Get pagination offset\n * @returns {Number} - Offset\n * @throws {TypeError}\n */\n get offset () {\n return this._resolve('offset');\n }\n\n /**\n * Search query\n * @returns {Object<String, String|Array<String>>} - Query\n * @throws {TypeError}\n */\n get search () {\n return this._resolve('search');\n }\n\n /**\n * Get sort options\n * @returns {Array<String>} - Per page\n * @throws {TypeError}\n */\n get sort () {\n return this._resolve('sort');\n }\n\n /**\n * If deleted items should be shown\n * @returns {String} - Deleted items filter state\n * @see {@link DeletedState}\n */\n get deleted () {\n return this._resolve('deleted');\n }\n\n /**\n * Extra parameters\n * @returns {Object} - Extra parameters\n */\n get extra () {\n return this._resolve('extra');\n }\n\n // endregion instance getters\n\n // region instance setters\n /**\n * Page number\n * @param {Number} value - Page number\n */\n set page (value) {\n this._update('page', value);\n }\n\n /**\n * Rows per page\n * @param {Number} value - Per page\n */\n set perPage (value) {\n this._update('perPage', value);\n }\n\n /**\n * Pagination offset\n * @param {Number} value - Offset\n */\n set offset (value) {\n this._update('offset', value);\n }\n\n /**\n * Search query\n * @param {Object<String, String|Array<String>>} value - Search query\n */\n set search (value) {\n this._update('search', value);\n }\n\n /**\n * Sort query\n * @param {Array<String>} value - Sort query\n */\n set sort (value) {\n this._update('sort', value);\n }\n\n /**\n * Deleted items filter state\n * @param {String} value - Deleted items filter state\n * @see {@link DeletedState}\n */\n set deleted (value) {\n this._update('deleted', value);\n }\n\n /**\n * Extra request parameters\n * @param {Object} value - Extra request parameters\n */\n set extra (value) {\n this._update('extra', value);\n }\n\n // endregion instance setters\n // endregion instance\n\n // region static\n // region getters\n /**\n * Default page number\n * @returns {Number} - Page number\n */\n static get page () {\n return RequestParameters._page || 1;\n }\n\n /**\n * Default per page\n * @returns {Number} - Per page\n */\n static get perPage () {\n return RequestParameters._perPage || Number(process.env.PER_PAGE) || 12;\n }\n\n /**\n * Default pagination offset\n * @returns {Number} - Offset\n */\n static get offset () {\n return RequestParameters._offset || 0;\n }\n\n /**\n * Gets the maximum allowed value for perPage\n * Some users will have a special permission that allows them to fetch more than 50 resources at once\n * @returns {Number} - Maximum amount of resources per page\n */\n static get maxPerPage () {\n return RequestParameters._maxPerPage || 50;\n }\n\n /**\n * Default search query\n * @returns {Object<String, String|Array<String>>} - Search query\n */\n static get search () {\n return RequestParameters._search || {};\n }\n\n /**\n * Default sort query\n * @returns {Array<String>} - Sort query\n */\n static get sort () {\n return RequestParameters._sort || [];\n }\n\n /**\n * Default deleted items filter state\n * @returns {String|undefined} - Deleted items filter state\n */\n static get deleted () {\n return RequestParameters._deleted || void 0;\n }\n\n /**\n * Default extra request parameters\n * @returns {Object} - Extra request parameters\n */\n static get extra () {\n return RequestParameters._extra || {};\n }\n\n // endregion getters\n\n // region setters\n /**\n * Default page number\n * @param {Number} value - Page number\n */\n static set page (value) {\n RequestParameters._page = RequestParameters._validatePage(value);\n }\n\n /**\n * Default per page\n * @param {Number} value - Per page\n */\n static set perPage (value) {\n RequestParameters._perPage = RequestParameters._validatePerPage(value);\n }\n\n /**\n * Default pagination offset\n * @param {Number} value - Offset\n */\n static set offset (value) {\n RequestParameters._offset = RequestParameters._validateOffset(value);\n }\n\n /**\n * Sets the maximum allowed value for perPage\n * Some users will have a special permission that allows them to fetch more than 50 resources at once\n * @param {Number} value - Maximum amount of resources per page\n */\n static set maxPerPage (value) {\n RequestParameters._maxPerPage = RequestParameters._validateMaxPerPage(value);\n }\n\n /**\n * Default search query\n * @param {Object<String, String|Array<String>>} value - Search query\n */\n static set search (value) {\n RequestParameters._search = RequestParameters._validateSearch(value);\n }\n\n /**\n * Default sort query\n * @param {Array<String>} value - Sort query\n */\n static set sort (value) {\n RequestParameters._sort = RequestParameters._validateSort(value);\n }\n\n /**\n * Default deleted items filter state\n * @param {String} value - Deleted items filter state\n */\n static set deleted (value) {\n RequestParameters._deleted = RequestParameters._validateDeleted(value);\n }\n\n /**\n * Default extra request parameters\n * @param {Object} value - Extra request parameters\n */\n static set extra (value) {\n RequestParameters._extra = RequestParameters._validateExtra(value);\n }\n\n // endregion setters\n // endregion static\n\n // region validators\n /**\n * Validators should work the same as laravel's ::validate method. This means\n * this means that they will throw a TypeError or return a normalized result.\n */\n\n static _validatePage (value) {\n if (typeof value !== 'number') {\n throw new TypeError(`Expected page to be of type 'number' instead got '${typeof value}'`);\n }\n\n if (value < 0) {\n throw new TypeError('Page must be a positive number');\n }\n\n if (Number.isNaN(value) || !Number.isFinite(value)) {\n throw new TypeError('Page must be a real number');\n }\n\n if (Math.round(value) !== value) {\n throw new TypeError('Page must be a natural number');\n }\n\n return Math.round(value);\n }\n\n static _validatePerPage (value) {\n if (typeof value !== 'number') {\n throw new TypeError(`Expected per page to be of type 'Number' instead got '${getTypeName(value)}'`);\n }\n\n if (value <= 0) {\n throw new TypeError('Per page must be greater than zero');\n }\n\n if (Number.isNaN(value) || !Number.isFinite(value)) {\n throw new TypeError('Per page must be a real number');\n }\n\n if (Math.round(value) !== value) {\n throw new TypeError('Per page must be a natural number');\n }\n\n // Upper limit is 50 by default\n value = Math.min(RequestParameters.maxPerPage, value);\n\n return value;\n }\n\n static _validateOffset (value) {\n if (typeof value !== 'number') {\n throw new TypeError(`Expected offset to be of type 'Number' instead got '${getTypeName(value)}'`);\n }\n\n if (value < 0) {\n throw new TypeError('Offset must be a positive number');\n }\n\n if (Number.isNaN(value) || !Number.isFinite(value)) {\n throw new TypeError('Offset must be a real number');\n }\n\n if (Math.round(value) !== value) {\n throw new TypeError('Offset must be a natural number');\n }\n\n return value;\n }\n\n static _validateMaxPerPage (value) {\n if (typeof value !== 'number') {\n throw new TypeError(`Expected page to be of type 'Number' instead got '${getTypeName(value)}'`);\n }\n\n if (value < 1) {\n throw new TypeError('Value must be greater or equal to 1');\n }\n\n return value;\n }\n\n static _validateSearch (value) {\n if (typeof value !== 'object' || Array.isArray(value)) {\n throw new TypeError(`Expected value to be of type \"Object\" got \"${getTypeName(value)}\"`);\n }\n\n // Normalization macro\n const normalize = x => typeof x === 'number' ? x.toString() : x;\n\n for (let key of Object.keys(value)) {\n key = normalize(key);\n value[key] = normalize(value[key]);\n\n if (typeof key !== 'string') {\n throw new TypeError(`Expected key to be of type \"String\" got \"${getTypeName(key)}\"`);\n }\n\n if (Array.isArray(value[key])) {\n if (value[key].length > 0) {\n for (const query of value[key]) {\n if (!['string', 'number', 'boolean'].includes(typeof query) && query !== null) {\n throw new TypeError(`Expected query for \"${key}\" to be of type \"String\", \"Boolean\", \"Number\" or \"null\" got \"${getTypeName(query)}\"`);\n }\n }\n } else {\n // Drop empty nodes\n delete value[key];\n }\n } else if (value[key] === null) {\n delete value[key];\n } else if (!['string', 'number', 'boolean'].includes(typeof value[key]) && value[key] !== null) {\n throw new TypeError(`Expected query value to be of type \"String\", \"Boolean\", \"Number\", \"Array\" or \"null\" got \"${getTypeName(value[key])}\"`);\n }\n }\n\n return value;\n }\n\n static _validateSort (value) {\n if (typeof value === 'string') {\n return this._validateSort(value.split(','));\n }\n\n if (!(value instanceof Array)) {\n throw new TypeError(`Expected sort value to be of type \"Array\" got \"${getTypeName(value)}\"`);\n }\n\n // Array keys type checking\n value\n .filter(x => typeof x !== 'string')\n .forEach(x => {\n throw new TypeError(`Expected sort array values to be of type \"String\" got \"${getTypeName(x)}\"`);\n });\n\n // Don't do regex matching because it's something\n // we can just let the server do for us.\n\n return value;\n }\n\n static _validateDeleted (value) {\n if (typeof value === 'undefined') {\n return value;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError(`Expected deleted to be of type \"string\" got \"${getTypeName(value)}\". See: DeletedState`);\n }\n\n value = value.toLowerCase();\n\n const possible = DeletedState.values();\n\n if (!possible.includes(value)) {\n throw new TypeError(`Expected deleted to be one of ${possible.join(', ')}, got ${value}`);\n }\n\n return value;\n }\n\n static _validateExtra (value) {\n if (typeof value !== 'object') {\n throw new TypeError(`Expected extra to be of type 'object', got '${getTypeName(value)}'`);\n }\n\n return value;\n }\n\n // endregion validators\n\n _resolve (name) {\n const _name = `_${name}`;\n\n if (!this[_name]) {\n // Confuse esdoc\n (this || {})[_name] = RequestParameters[name];\n }\n\n return this[_name];\n }\n\n _update (name, value, preventEvent = false) {\n const _name = `_${name}`;\n\n value = RequestParameters[`_validate${pascalCase(name)}`](value);\n (this || {})[_name] = value; // Weird syntax confuses esdoc\n\n if (!preventEvent) {\n /**\n * Change event.\n *\n * @event RequestParameters#change\n * @type {Array<object>}\n * @property {string} name - Parameter name\n * @property {*} value - New value\n */\n this.emit('change', [{ name, value }]);\n this.emit(`change:${name}`, value);\n }\n\n return value;\n }\n\n // region utils\n /**\n * Urlencode parameters\n * @returns {string} - HTTP query\n */\n encode () {\n return encodeQueryString(this.toParameterObject());\n }\n\n /**\n * Convert to object\n * @returns {Object} - Object\n */\n toObject () {\n return RequestParameters\n .keys()\n .reduce((obj, key) => {\n obj[snakeCase(key)] = this._resolve(key);\n\n return obj;\n }, {});\n }\n\n /**\n * Convert to object\n * @returns {Object} - Object\n */\n toParameterObject () {\n const data = {};\n\n RequestParameters\n .keys()\n .forEach(key => {\n // Skip extra key\n if (key === 'extra') {\n return;\n }\n\n data[snakeCase(key)] = this._resolve(key);\n });\n\n // Fix column names for sort\n data.sort = data.sort.map(snakeCase).map(x => x.replace(/^_/, '-')).join(',');\n\n if (data.offset === 0) {\n delete data.offset;\n }\n\n // Fix column names for search\n for (const key of Object.keys(data.search)) {\n const snakeKey = key.split(',').map(snakeCase).join(',');\n\n if (key !== snakeKey) {\n data.search[snakeKey] = data.search[key];\n delete data.search[key];\n }\n }\n\n // Cast search values\n for (const key of Object.keys(data.search)) {\n if (typeof data.search[key] === 'boolean') {\n data.search[key] = Number(data.search[key]);\n }\n\n if (data.search[key] === null) {\n data.search[key] = '';\n }\n }\n\n\n // Overwrite using extra properties\n const extra = this._resolve('extra');\n\n for (const key of Object.keys(extra)) {\n data[key] = extra[key];\n }\n\n for (const key of Object.keys(data)) {\n if (typeof data[key] === 'undefined') {\n delete data[key];\n }\n }\n\n return data;\n }\n\n /**\n * Copy object\n * @returns {RequestParameters} - Copy\n */\n copy () {\n return new RequestParameters(this.toObject());\n }\n\n /**\n * Different parameters\n * @returns {Array<String>} - keys\n */\n static keys () {\n // enumeration is disabled for properties\n return [\n 'page',\n 'perPage',\n 'offset',\n 'search',\n 'sort',\n 'deleted',\n 'extra',\n ];\n }\n\n /**\n * Generates a cache token\n * @returns {string} - Cache token\n */\n token () {\n const data = this.toObject();\n\n delete data.page;\n delete data['per_page'];\n\n return hashObject(data);\n }\n\n /**\n * Resets all parameters back to default\n */\n static resetDefaults () {\n for (const key of RequestParameters.keys()) {\n delete RequestParameters[`_${key}`];\n }\n }\n\n /**\n * Apply parameters from object\n * @param {object|RequestParameters} params - parameters\n * @returns {Object[]} - Array containing the updated values\n * @example\n * const params = new RequestParameters({perPage: 12});\n *\n * params.perPage === 12;\n *\n * params.apply({perPage: 50});\n *\n * params.perPage === 50;\n */\n apply (params) {\n if (params instanceof RequestParameters) {\n params = params.toObject();\n }\n\n const out = [];\n\n for (const key of Object.keys(params)) {\n const Key = camelCase(key);\n\n if (key[0] === '_' || !RequestParameters.keys().includes(Key)) {\n continue;\n }\n\n out.push({\n name: Key,\n value: this._update(Key, params[key], true),\n });\n }\n\n this.emit('change', out);\n\n for (const { name, value } of out) {\n this.emit(`change:${name}`, value);\n }\n\n return out;\n }\n\n // endregion utils\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport DownloadedResource from './base/DownloadedResource';\nimport ResourceBase from './base/ResourceBase';\nimport { makeCancelable } from '../utils/helpers';\n\n/**\n * Choropleth resource\n */\nexport default class Choropleth extends ResourceBase {\n static get resourceName () {\n return 'choropleths';\n }\n\n /**\n * Get the inset map json\n * @returns {CancelablePromise<Object>} - Choropleth json\n * @throws {ApiError} - If the api returns errors\n */\n getJson () {\n return makeCancelable(signal => this.api.ky.get(`${this.url}/json`, { signal }).json());\n }\n\n /**\n * Download the choropleth preview\n * @returns {CancelablePromise<DownloadedResource>} - Choropleth preview\n * @throws {ApiError} - If the api returns errors\n */\n downloadPreview () {\n return makeCancelable(async signal => {\n const response = await this.api.ky.get(`${this.url}/preview`, { signal });\n\n return DownloadedResource.fromResponse(response);\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudBase from './base/CrudBase';\n\n/**\n * Faq resource\n */\nexport default class Faq extends CrudBase {\n static get resourceName () {\n return 'faqs';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ResourceBase from './base/ResourceBase';\n\nexport default class Highlight extends ResourceBase {\n static get resourceName () {\n return 'highlights';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ResourceBase from './base/ResourceBase';\nimport { makeCancelable } from '../utils/helpers';\n\nexport default class InsetMap extends ResourceBase {\n static get resourceName () {\n return 'inset-maps';\n }\n\n /**\n * Get the inset map json\n * @returns {CancelablePromise<Object>} - Inset map json\n * @throws {ApiError} - If the api returns errors\n */\n getJson () {\n return makeCancelable(signal => this.api.ky.get(`${this.url}/json`, { signal }).json());\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { mix } from '../utils/reflection';\nimport CrudSetItemBase from './base/CrudSetItemBase';\n\n/**\n * @extends CrudSetItemBase\n */\nexport default class ProductTourStep extends mix(CrudSetItemBase) {\n static get resourceName () {\n return 'product-tours/steps';\n }\n\n static get parentKey () {\n return 'product_tour_id';\n }\n}\n\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { mix } from '../utils/reflection';\nimport CrudSetBase from './base/CrudSetBase';\nimport ProductTourStep from './ProductTourStep';\n\n/**\n * Mapstyle set\n * @extends CrudSetBase\n */\nexport default class ProductTour extends mix(CrudSetBase) {\n static get resourcePath () {\n return '/product-tours/{id}';\n }\n\n static get resourceName () {\n return 'product-tours';\n }\n\n get _Child () {\n return ProductTourStep;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudBase from './base/CrudBase';\nimport Tag from './Tag';\n\n/**\n * TagType resource\n * @mixes CrudSetBase\n */\nexport default class TagType extends CrudBase {\n static get resourcePath () {\n return '/tags/types/{id}';\n }\n\n static get resourceName () {\n return 'tag-types';\n }\n\n /**\n * Get the list of tags that are attached to this type\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get tags () {\n return this._proxyResourceList(Tag, `${this.url}/tags`);\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n\nimport ResourceBase from './base/ResourceBase';\n\nexport default class VectorHighlight extends ResourceBase {\n static get resourceName () {\n return 'highlights/vector';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n\nimport ResourceBase from './base/ResourceBase';\n\nexport default class VectorChoropleth extends ResourceBase {\n static get resourceName () {\n return 'choropleths/vector';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nexport Choropleth from './Choropleth';\nexport Color from './Color';\nexport Contract from './Contract';\nexport Dimension from './Dimension';\nexport DimensionSet from './DimensionSet';\nexport Domain from './Domain';\nexport Faq from './Faq';\nexport Feature from './Feature';\nexport Font from './Font';\nexport FontFamily from './FontFamily';\nexport Highlight from './Highlight';\nexport InsetMap from './InsetMap';\nexport Job from './Job';\nexport JobResult from './JobResult';\nexport JobRevision from './JobRevision';\nexport JobShare from './JobShare';\nexport JobType from './JobType';\nexport Language from './Language';\nexport Layer from './Layer';\nexport Mapstyle from './Mapstyle';\nexport MapstyleSet from './MapstyleSet';\nexport Message from './Message';\nexport Notification from './Notification';\nexport Organisation from './Organisation';\nexport Permission from './Permission';\nexport ProductTour from './ProductTour';\nexport ProductTourStep from './ProductTourStep';\nexport Role from './Role';\nexport Svg from './Svg';\nexport SvgSet from './SvgSet';\nexport Tag from './Tag';\nexport TagType from './TagType';\nexport User from './User';\nexport VectorHighlight from './VectorHighlight';\nexport VectorChoropleth from './VectorChoropleth';\n\nimport CrudBase from './base/CrudBase';\nimport CrudSetBase from './base/CrudSetBase';\nimport ResourceBase from './base/ResourceBase';\n\n/**\n * @private\n */\nexport const base = {\n CrudBase, CrudSetBase, ResourceBase,\n};\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { windowTest } from './node';\n\nfunction getFormData () {\n if (windowTest('FormData')) {\n return window.FormData;\n }\n\n return require('form-data');\n}\n\n/**\n * @private\n */\nexport const FormData = getFormData();\n\n/**\n * Encodes an object to a http query string with support for recursion\n * @param {Object<string, *>} paramsObject - data to be encoded\n * @param {Array<string>} _basePrefix - Used internally for tracking recursion\n * @returns {string} - encoded http query string\n *\n * @see http://stackoverflow.com/a/39828481\n * @private\n */\nfunction _encodeQueryString (paramsObject, _basePrefix = []) {\n return Object\n .keys(paramsObject)\n .sort()\n .map(key => {\n const prefix = _basePrefix.slice(0);\n\n if (typeof paramsObject[key] === 'object' && paramsObject[key] !== null) {\n prefix.push(key);\n\n return _encodeQueryString(paramsObject[key], prefix);\n }\n\n prefix.push(key);\n\n let out = '';\n\n out += encodeURIComponent(prefix.shift()); // main key\n out += prefix.map(item => `[${encodeURIComponent(item)}]`).join(''); // optional array keys\n\n const value = paramsObject[key];\n\n if (value !== null && typeof value !== 'undefined') {\n out += `=${encodeURIComponent(value)}`; // value\n }\n\n return out;\n }).join('&');\n}\n\n/**\n * Encodes an object to a http query string with support for recursion\n * @param {object<string, *>} paramsObject - data to be encoded\n * @returns {string} - encoded http query string\n *\n * @private\n */\nexport function encodeQueryString (paramsObject) {\n const query = _encodeQueryString(paramsObject);\n\n // Removes any extra unused &'s.\n return query.replace(/^&*|&+(?=&)|&*$/g, '');\n}\n\n/**\n * Wraps around ky to ensure that the prefix is correctly set\n * @param {function(*=, *=): Response} fn - ky instance\n * @param {string} baseUrl - url to be prefixed\n * @returns {function(*=, *=): Response}\n * @private\n */\nexport function wrapKyPrefixUrl (fn, baseUrl) {\n return function (input, options) {\n if (typeof input === 'string' && !/^https?:\\/\\//.test(input)) {\n if (!input.startsWith('/')) {\n input = `/${input}`;\n }\n\n input = baseUrl + input;\n }\n\n return fn(input, options);\n };\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { camel as camelCase, snake as snakeCase } from 'case';\nimport { AbstractClassError, AbstractError } from '../../errors/AbstractError';\nimport Mapcreator from '../../Mapcreator';\nimport SimpleResourceProxy from '../../proxy/SimpleResourceProxy';\nimport Injectable from '../../traits/Injectable';\nimport { fnv32b } from '../../utils/hash';\nimport { isParentOf, mix } from '../../utils/reflection';\nimport { clone, makeCancelable } from '../../utils/helpers';\n\nfunction unique (input) {\n return input.filter((v, i) => input.findIndex(vv => vv === v) === i);\n}\n\n/**\n * Resource base\n * @abstract\n */\nexport default class ResourceBase extends mix(null, Injectable) {\n /**\n * @param {Mapcreator} api - Api instance\n * @param {Object<String, *>} data - Item data\n */\n constructor (api, data = {}) {\n super();\n\n if (this.constructor === ResourceBase) {\n throw new AbstractClassError();\n }\n\n this.api = api;\n\n // De-reference\n data = clone(data);\n\n // Normalize keys to snake_case\n // Fix data types\n for (const key of Object.keys(data)) {\n const newKey = snakeCase(key);\n\n if (camelCase(newKey) in this) {\n delete data[key];\n\n continue;\n }\n\n data[newKey] = this._guessType(newKey, data[key]);\n\n if (newKey !== key) {\n delete data[key];\n }\n }\n\n this._baseProperties = data || {};\n this._properties = {};\n this._api = api;\n\n const fields = Object.keys(this._baseProperties);\n\n // Apply properties\n for (const key of fields) {\n this._applyProperty(key);\n }\n\n // Add deleted field if possible\n if (fields.includes('deleted_at')) {\n Object.defineProperty(this, 'deleted', {\n enumerable: true,\n configurable: true,\n\n get: () => Boolean(this.deletedAt),\n });\n }\n\n /* We keep track of any new fields by recording the\n * keys the object currently has. We don't need no\n * fancy-pants observers, Proxies etc.\n * snake_case only\n */\n this._knownFields = Object.keys(this).filter(x => x[0] !== '_');\n }\n\n /**\n * Get api instance\n * @returns {Mapcreator} - Api instance\n */\n get api () {\n return this._api;\n }\n\n /**\n * Set the api instance\n * @param {Mapcreator} value - Api instance\n */\n set api (value) {\n if (!isParentOf(Mapcreator, value)) {\n throw new TypeError('Expected api to be of type Mapcreator or null');\n }\n\n this._api = value;\n }\n\n /**\n * Resource path template\n * @returns {String} - Path template\n */\n static get resourcePath () {\n return `/${this.resourceName}/{id}`;\n }\n\n /**\n * Resource name\n * @returns {String} - Resource name\n * @abstract\n */\n static get resourceName () {\n throw new AbstractError();\n }\n\n /**\n * Returns the url key of the resource\n * @returns {String} - Resource key\n */\n static get resourceUrlKey () {\n return 'id';\n }\n\n /**\n * Protected read-only fields\n * @returns {Array<string>} - Array containing protected read-only fields\n * @protected\n */\n static get protectedFields () {\n return ['id', 'created_at', 'updated_at', 'deleted_at'];\n }\n\n /**\n * Returns if the resource is readonly\n * @returns {boolean} - Readonly\n */\n static get readonly () {\n return false;\n }\n\n /**\n * Moves new fields to this._properties and turns them into a getter/setter\n * @protected\n */\n _updateProperties () {\n // Build a list of new fields\n let fields = Object.keys(this)\n .filter(x => x[0] !== '_')\n .filter(x => !this._knownFields.includes(x));\n\n // Move the pointer from this to the properties object\n for (const key of fields) {\n const newKey = snakeCase(key);\n\n this._properties[newKey] = this[key];\n delete this[key];\n\n this._applyProperty(newKey);\n this._knownFields.push(newKey);\n }\n\n // Build a list of new BaseProperty fields\n fields = Object.keys(this._baseProperties)\n .filter(x => !this._knownFields.includes(camelCase(x)));\n\n for (const key of fields) {\n this._applyProperty(key);\n this._knownFields.push(key);\n }\n\n this._knownFields = unique(this._knownFields);\n }\n\n /**\n * Clean up instance and commit all changes locally.\n * This means that any changed fields will be marked\n * as unchanged whilst keeping their new values. The\n * changes will not be saved.\n */\n sanitize () {\n this._updateProperties();\n Object.assign(this._baseProperties, this._properties);\n this._properties = {};\n }\n\n /**\n * Resets model instance to it's original state\n * @param {Array<string>|string|null} [fields=null] - Fields to reset, defaults to all fields\n */\n reset (fields = null) {\n this._updateProperties();\n\n if (typeof fields === 'string') {\n this.reset([fields]);\n } else if (fields === null) {\n this._properties = {}; // Delete all\n } else if (Array.isArray(fields)) {\n fields\n .map(String)\n .map(snakeCase)\n .forEach(field => delete this._properties[field]);\n }\n }\n\n /**\n * Clone the object\n * @returns {ResourceBase} - Exact clone of the object\n */\n clone () {\n this._updateProperties();\n\n const out = new this.constructor(this.api, this._baseProperties);\n\n for (const key of Object.keys(this._properties)) {\n out[key] = this._properties[key];\n }\n\n return out;\n }\n\n /**\n * Refresh the resource by requesting it from the server again\n * @param {Boolean} updateSelf - Update the current instance\n * @returns {CancelablePromise<ResourceBase>} - Refreshed instance\n * @throws {ApiError} - If the api returns errors\n */\n refresh (updateSelf = true) {\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.get(this.url, { signal }).json();\n\n if (updateSelf) {\n this._properties = {};\n this._baseProperties = data;\n\n this._updateProperties();\n }\n\n return new this.constructor(this._api, data);\n });\n }\n\n /**\n * Create proxy for property\n * @param {string} key - property key\n * @private\n */\n _applyProperty (key) {\n const desc = {\n enumerable: true,\n configurable: true,\n\n get: () => {\n if (this._properties.hasOwnProperty(key)) {\n return this._properties[key];\n }\n\n return this._baseProperties[key];\n },\n };\n\n if (!this.constructor.protectedFields.includes(key) && !this.constructor.readonly) {\n desc.set = val => {\n this._properties[key] = this._guessType(key, val);\n delete this._url; // Clears url cache\n };\n }\n\n const newKey = camelCase(key);\n\n Object.defineProperty(this, newKey, desc);\n }\n\n /**\n * Guess type based on property name\n * @param {string} name - Field name\n * @param {*} value - Field Value\n * @protected\n * @returns {*} - Original or converted value\n */\n _guessType (name, value) {\n if (name.endsWith('_at') || name.startsWith('date_')) {\n return typeof value === 'string' ? new Date(value.replace(' ', 'T')) : value;\n } else if (/(_|^)id$/.test(name) && value !== null) {\n return Number.isFinite(Number(value)) ? Number(value) : value;\n }\n\n return value;\n }\n\n /**\n * If the resource can be owned by an organisation\n * @returns {boolean} - Can be owned by an organisation\n */\n get ownable () {\n return false;\n }\n\n /**\n * Auto generated resource url\n * @returns {string} - Resource url\n */\n get url () {\n if (!this._url) {\n let url = `${this._api.url}${this.constructor.resourcePath}`;\n\n // Find and replace any keys\n url = url.replace(/{(\\w+)}/g, (match, key) => this[camelCase(key)]);\n\n this._url = url;\n }\n\n return this._url;\n }\n\n /**\n * Auto generated Resource base url\n * @returns {string} - Resource base url\n */\n get baseUrl () {\n const basePath = this.constructor.resourcePath.match(/^(\\/[^{]+\\b)/)[1];\n\n return `${this._api.url}${basePath}`;\n }\n\n /**\n * List fields that contain object data\n * @returns {Array<String>} - A list of fields\n */\n get fieldNames () {\n const keys = unique([\n ...Object.keys(this._baseProperties),\n ...Object.keys(this._properties),\n ]);\n\n return keys.map(camelCase);\n }\n\n /**\n * String representation of the resource, similar to Python's __repr__\n * @returns {string} - Resource name and id\n */\n toString () {\n return `${this.constructor.name}(${this[this.resourceUrlKey]})`;\n }\n\n /**\n * Transform instance to object\n * @param {boolean} [camelCaseKeys=false] - camelCase object keys\n * @returns {{}} - Object\n */\n toObject (camelCaseKeys = false) {\n this._updateProperties();\n\n const out = { ...this._baseProperties, ...this._properties };\n\n if (camelCaseKeys) {\n for (const key of Object.keys(out)) {\n const ccKey = camelCase(key);\n\n if (key !== ccKey) {\n out[ccKey] = out[key];\n\n delete out[key];\n }\n }\n }\n\n return out;\n }\n\n /**\n * Macro for resource listing\n * @param {string|Class<ResourceBase>} Target - Target object\n * @param {?String} url - Target url, if null it will guess\n * @param {object} seedData - Internal use, used for seeding SimpleResourceProxy::new\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n * @protected\n */\n _proxyResourceList (Target, url = null, seedData = {}) {\n if (!url) {\n url = `${Target.resourceName.replace(/s+$/, '')}s`;\n }\n\n if (typeof url === 'string' && !url.startsWith('/') && !url.match(/https?:/)) {\n url = `${this.url}/${url}`;\n }\n\n return new SimpleResourceProxy(this.api, Target, url, seedData);\n }\n\n /**\n * Static proxy generation\n * @param {string|Class} Target - Constructor or url\n * @param {Class?} Constructor - Constructor for a resource that the results should be cast to\n * @param {Object<string, *>} seedData - Optional data to seed the resolved resources\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n * @example\n * user.static('jobs').lister();\n *\n * @example\n * class FooBar extends ResourceBase {\n * static get resourceName() {\n * return 'custom';\n * }\n * }\n *\n * api.static(FooBar)\n * .get(1)\n * .then(console.log);\n */\n static (Target, Constructor = ResourceBase, seedData = {}) {\n let url;\n\n if (typeof Target === 'string') {\n url = `${this.url}/${Target}`;\n\n const name = Constructor.name || 'AnonymousResource';\n\n Target = class AnonymousResource extends Constructor {\n static get resourceName () {\n return Object.getPrototypeOf(this).resourceName || 'anonymous';\n }\n\n static get resourcePath () {\n return url;\n }\n };\n\n Object.defineProperty(Target, 'name', {\n value: `${name}_${fnv32b(url)}`,\n });\n }\n\n if (!isParentOf(ResourceBase, Target)) {\n throw new TypeError('Expected Target to be of type String or ResourceBase constructor');\n }\n\n return this._proxyResourceList(Target, url, seedData);\n }\n}\n","module.exports = require(\"case\");","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Enum from './Enum';\n\n/**\n * Enum containing the possible different values for {@link RequestParameters#deleted}\n * @enum {string}\n * @property {string} ALL - Don't discriminate between deleted items and non-deleted resources\n * @property {string} BOTH - Don't discriminate between deleted items and non-deleted resources\n * @property {string} NONE - Don't return deleted resources\n * @property {string} ONLY - Only return deleted resources\n * @readonly\n */\nexport const DeletedState = new Enum({\n ALL: 'all',\n BOTH: 'all',\n NONE: 'none',\n ONLY: 'only',\n});\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Enum from './Enum';\n\n/**\n * Enum containing the possible different values for {@link RequestParameters#deleted}\n * @enum {string}\n * @property {string} QUEUED - Job has been queued\n * @property {string} PROCESSING - Job is processing\n * @property {string} COMPLETED - Job has been completed\n * @property {string} CANCELED - Job has been canceled\n * @property {string} FAILED - Job has failed\n * @readonly\n */\nexport const ResultStatus = new Enum([\n 'queued', 'processing',\n 'completed', 'canceled',\n 'failed',\n], true);\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Enum from './Enum';\n\n/**\n * Enum containing the possible different visibilities for a {@link JobShare}\n * @enum {string}\n * @property {string} PRIVATE - Anyone outside of the organisation could open the map, the map is not visible within the organisation folder\n * @property {string} PUBLIC - Anyone who has that link can open the map\n * @property {string} ORGANISATION - This map only opens if a user is within the same organisation\n * @readonly\n */\nexport const JobShareVisibility = new Enum(['private', 'organisation', 'public'], true);\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nexport Enum from './Enum';\nexport { DeletedState } from './DeletedState';\nexport { ResultStatus } from './ResultStatus';\nexport { JobShareVisibility } from './JobShareVisibility';\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OrganisationProxy from '../proxy/OrganisationProxy';\nimport Trait from './Trait';\n\n/**\n * Provides a {@link ResourceBase} with functions for dealing with being ownable by an organisation\n * @mixin\n */\nexport default class OwnableResource extends Trait {\n /**\n * Get the list of associated organisations\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get organisations () {\n return new OrganisationProxy(this.api, this);\n }\n\n /**\n * If the resource can be owned by an organisation\n * @returns {boolean} - Can be owned by an organisation\n */\n get ownable () {\n return true;\n }\n}\n","module.exports = require(\"@babel/runtime/helpers/defineProperty\");","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Thrown by abstract methods and classes\n */\nexport class AbstractError extends Error {\n /**\n * AbstractError constructor\n * @param {?String} message - Error message\n */\n constructor (message = 'Unimplemented') {\n super(message);\n }\n}\n\n/**\n * Thrown upon invocation of an abstract class\n * @example\n * class FooBar {\n * constructor() {\n * if (this.constructor === FooBar) {\n * throw new AbstractClassError();\n * }\n * }\n * }\n */\nexport class AbstractClassError extends AbstractError {\n constructor () {\n super('Can not make an instance of an abstract class');\n }\n}\n\n/**\n * Thrown upon invocation of an abstract method\n */\nexport class AbstractMethodError extends AbstractError {\n constructor () {\n super('Can not call an abstract method');\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport SimpleResourceProxy from './SimpleResourceProxy';\nimport { makeCancelable } from '../utils/helpers';\n\n/**\n * Used for proxying resource => organisation\n */\nexport default class OwnedResourceProxy extends SimpleResourceProxy {\n /**\n * OwnedResourceProxy Constructor\n * @param {Mapcreator} api - Api instance\n * @param {ResourceBase} parent - Parent instance\n * @param {Class<ResourceBase>} Target - Target constructor\n */\n constructor (api, parent, Target) {\n const resource = Target.resourceName.replace(/s+$/, '');\n const url = `${parent.url}/${resource}s`;\n\n super(api, Target, url);\n }\n\n /**\n * Sync items to the organisation\n * @param {Array<ResourceBase>|Array<number>|ResourceBase|number} items - List of items to sync\n * @throws {TypeError}\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n sync (items) {\n return this._modifyResourceLink(items, 'PATCH');\n }\n\n /**\n * Attach items to the organisation\n * @param {Array<ResourceBase>|Array<number>|ResourceBase|number} items - List of items to attach\n * @throws {TypeError}\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n attach (items) {\n return this._modifyResourceLink(items, 'POST');\n }\n\n /**\n * Detach items from the organisation\n * @param {Array<ResourceBase>|Array<number>|ResourceBase|number} items - List of items to unlink\n * @throws {TypeError}\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n detach (items) {\n return this._modifyResourceLink(items, 'DELETE');\n }\n\n /**\n * Attach parent resource to all organisations\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n attachAll () {\n return makeCancelable(async signal => {\n await this.api.ky.post(`${this.baseUrl}/all`, { signal });\n });\n }\n\n /**\n * Detach parent resource to all organisations\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n detachAll () {\n return makeCancelable(async signal => {\n await this.api.ky.delete(`${this.baseUrl}/all`, { signal });\n });\n }\n\n /**\n * @param {Array<ResourceBase>|Array<number>|ResourceBase|number} items - List of items to sync, attach or detach\n * @param {string} method - http method\n * @throws {ApiError} - If the api returns errors\n * @throws {TypeError}\n * @returns {CancelablePromise}\n * @private\n */\n _modifyResourceLink (items, method) {\n if (!Array.isArray(items)) {\n items = [items];\n }\n\n const keys = items\n .map(x => OwnedResourceProxy._getKeyValue(x))\n .map(Number)\n .filter(x => !Number.isNaN(x));\n\n return makeCancelable(async signal => {\n await this.api.ky(this.baseUrl, {\n method,\n signal,\n json: { keys },\n });\n });\n }\n\n static _getKeyValue (item) {\n if (['number', 'string'].includes(typeof item)) {\n return item;\n }\n\n const key = item.constructor.resourceUrlKey || 'id';\n\n if (typeof item[key] !== 'undefined') {\n return item[key];\n }\n\n throw new TypeError('Expected items to be of type Array<ResourceBase>, Array<number>, ResourceBase or number}');\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Test if the application is running under nodejs\n * @returns {boolean} - Is the application running under node?\n * @see https://nodejs.org\n * @private\n */\nexport function isNode () {\n try {\n return Object.prototype.toString.call(typeof process === 'undefined' ? 0 : process) === '[object process]';\n } catch (_) {\n return false;\n }\n}\n\n/**\n * Quickly check if the window contains a variable\n * @param {string} str - target variable\n * @returns {boolean} - If the window contains the variable\n * @private\n */\nexport function windowTest (str) {\n return typeof window !== 'undefined' && typeof window[str] !== 'undefined';\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { encodeQueryString } from '../utils/requests';\nimport SimpleResourceProxy from './SimpleResourceProxy';\nimport { makeCancelable } from '../utils/helpers';\n\n/**\n * Proxy for accessing resource. This will make sure that they\n * are properly wrapped before the promise resolves.\n * @protected\n */\nexport default class ResourceProxy extends SimpleResourceProxy {\n /**\n * Parse selector\n * @param {Number|String|Object} [id=] - The resource id to be requested\n * @returns {Object} - Parsed selector\n * @private\n */\n _parseSelector (id) {\n if (id === '' || id === null) {\n return {};\n }\n\n switch (typeof id) {\n case 'number':\n case 'string':\n return { [this.Target.resourceUrlKey]: id };\n case 'object':\n return id;\n default:\n return {};\n }\n }\n\n /**\n * Get target resource\n * @param {Number|String|Object} [id=] - The resource id to be requested\n * @param {String} [deleted=null] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<ResourceBase>} - Target resource\n * @throws {ApiError} - If the api returns errors\n */\n get (id, deleted = null) {\n return makeCancelable(async signal => {\n const data = { ...this._seedData, ...this._parseSelector(id) };\n let url = this.new(data).url;\n\n if (typeof deleted === 'string') {\n const glue = url.includes('?') ? '&' : '?';\n\n url += glue + encodeQueryString({ deleted });\n }\n\n const { data: result } = await this.api.ky.get(url, { signal }).json();\n\n return this.new(result);\n });\n }\n\n /**\n * Select target resource without obtaining data\n * @param {Number|String} [id=] - Resource id\n * @returns {ResourceBase} - Empty target resource\n * @example\n * api.users.select('me').colors().then(doSomethingCool);\n */\n select (id) {\n const data = { ...this._seedData, ...this._parseSelector(id) };\n\n return this.new(data);\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport StorageManager from '../storage/StorageManager';\nimport { encodeQueryString } from '../utils/requests';\n\n/**\n * Oauth token container\n */\nexport default class OAuthToken {\n /**\n * @param {String} token - OAuth token\n * @param {String} [type=Bearer] - token type\n * @param {Date|Number} [expires=5 days] - expire time in seconds or Date\n * @param {Array<string>} [scopes=[]] - Any scopes\n */\n constructor (token, type = 'Bearer', expires = 432000, scopes = []) {\n this.scopes = scopes;\n this.token = token;\n this.type = type.toLowerCase().replace(/(\\s|^)\\w/g, x => x.toUpperCase());\n\n if (typeof expires === 'number') {\n const ms = expires * 1000;\n\n // Expires is in seconds\n this.expires = new Date(Date.now() + ms);\n } else if (expires instanceof Date) {\n this.expires = expires;\n } else {\n throw new TypeError('Expires not of type Date or Number');\n }\n }\n\n /**\n * String representation of the token, usable in the Authorization header\n * @returns {string} - String representation\n */\n toString () {\n return `${this.type} ${this.token}`;\n }\n\n /**\n * Get equivalent OAuth response object\n * @returns {{access_token: (String|*), token_type: String, expires_in: Number, scope: (Array.<String>|Array|*)}} - Raw response object\n */\n toResponseObject () {\n return {\n 'access_token': this.token,\n 'token_type': this.type.toLowerCase(),\n 'expires_in': this.expires - Date.now(),\n 'scope': this.scopes,\n };\n }\n\n /**\n * Export oauth response query string\n * @returns {string} - OAuth response query\n */\n toQueryString () {\n return encodeQueryString(this.toResponseObject());\n }\n\n /**\n * If the token has expired\n * @returns {Boolean} - expired\n */\n get expired () {\n return new Date() > this.expires;\n }\n\n /**\n * Internal storage key name\n * @returns {String} - storage name\n * @constant\n */\n static get storageName () {\n return 'api_token';\n }\n\n /**\n * Build instance from response object\n * @param {String|Object} data - object or JSON string\n * @returns {OAuthToken} - New OAuthToken instance\n */\n static fromResponseObject (data) {\n if (typeof data === 'string') {\n data = JSON.parse(data);\n }\n\n // Default expires = 5 days\n let expires = 432000;\n\n if (typeof data['exipires_in'] !== 'undefined') {\n expires = Number(data['expires_in']);\n } else if (typeof data.expires === 'string') {\n expires = new Date(data.expires);\n }\n\n return new OAuthToken(\n data['access_token'],\n data['token_type'],\n expires,\n data.scope || [],\n );\n }\n\n /**\n * Store the token for later recovery. Token will be stored in HTTPS cookie if possible.\n * @param {String} name - db key name\n * @throws {OAuthToken#recover}\n */\n save (name = OAuthToken.storageName) {\n const data = {\n token: this.token,\n type: this.type,\n expires: this.expires.toUTCString(),\n scopes: this.scopes,\n };\n\n // Third parameter is only used when we're using cookies\n StorageManager.secure.set(name, JSON.stringify(data), this.expires);\n }\n\n /**\n * Recover a token by looking through the HTTPS cookies and localStorage\n * @param {String} name - Storage key name\n * @returns {OAuthToken|null} - null if none could be recovered\n * @throws {OAuthToken#save}\n */\n static recover (name = OAuthToken.storageName) {\n const data = StorageManager.secure.get(name);\n\n if (!data) {\n return null;\n }\n\n const obj = JSON.parse(data);\n const instance = new OAuthToken(obj.token, obj.type, new Date(obj.expires), obj.scopes || []);\n\n if (instance.expired) {\n return null;\n }\n\n return instance;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { AbstractError } from '../../errors/AbstractError';\nimport CrudBase from './CrudBase';\nimport { camel as camelCase } from 'case';\n\n/**\n * Crud base for resource sets\n * @abstract\n */\nexport default class CrudSetBase extends CrudBase {\n\n /**\n * Get items associated with the set\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get items () {\n const url = `${this.url}/items`;\n const data = {};\n\n data[this.constructor.foreignKeyName] = this.id;\n\n return this._proxyResourceList(this._Child, url, data);\n }\n\n /**\n * Child constructor\n * @returns {Class<ResourceBase>} - Child constructor\n * @abstract\n * @protected\n */\n get _Child () {\n throw new AbstractError();\n }\n\n /**\n * Get the foreign key name\n * @returns {string} - Foreign key name\n * @example\n * api.fontFamilies.select(1).constructor.foreignKeyName === 'fontFamilyId'\n */\n static get foreignKeyName () {\n if (!this._fk) {\n let key = this.name; // ex: FontFamily\n\n key = camelCase(key); // ex: fontFamily\n\n this._fk = `${key}Id`;\n }\n\n return this._fk;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { AbstractClassError } from '../../errors/AbstractError';\nimport CrudBase from './CrudBase';\nimport { camel as camelCase } from 'case';\n\n/**\n * Items that are part of a set\n * @abstract\n */\nexport default class CrudSetItemBase extends CrudBase {\n /**\n * @param {Mapcreator} api - Api instance\n * @param {Object<String, *>} data - Item data\n */\n constructor (api, data = {}) {\n super(api, data);\n\n if (this.constructor === CrudBase) {\n throw new AbstractClassError();\n }\n }\n\n get hasParent () {\n const parentKey = camelCase(this.constructor.parentKey);\n\n return this.hasOwnProperty(parentKey);\n }\n\n /**\n * Get the parent id\n * @returns {number|undefined} - Parent number\n */\n get parentId () {\n if (this.hasParent) {\n const parentKey = camelCase(this.constructor.parentKey);\n\n return Number(this[parentKey]);\n }\n\n return void 0;\n }\n\n /**\n * Get the parent key\n * @returns {string} - Parent key\n */\n static get parentKey () {\n return this.resourceName.replace(/s$/, '_set_id');\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Mapcreator from './Mapcreator';\nimport RequestParameters from './RequestParameters';\nimport { isParentOf } from './utils/reflection';\nimport { makeCancelable } from './utils/helpers';\n\n/**\n * Proxy for accessing paginated resources\n */\nexport default class PaginatedResourceListing {\n /**\n * @param {Mapcreator} api - Instance of the api\n * @param {String} route - Resource route\n * @param {Class<ResourceBase>} Target - Wrapper target\n * @param {RequestParameters} parameters - Request parameters\n * @param {Number} pageCount - Resolved page count\n * @param {Number} rowCount - Resolved rowCount\n * @param {Array<ResourceBase>} data - Resolved data\n * @private\n */\n constructor (api, route, Target, parameters, pageCount = null, rowCount = 0, data = []) {\n if (!isParentOf(Mapcreator, api)) {\n throw new TypeError('Expected api to be of type Mapcreator');\n }\n\n if (!isParentOf(RequestParameters, parameters)) {\n parameters = new RequestParameters(parameters);\n }\n\n this._api = api;\n\n this.route = route;\n this._Target = Target;\n this._parameters = parameters;\n this._pageCount = pageCount;\n this._rows = rowCount;\n this._data = data;\n }\n\n /**\n * Get api instance\n * @returns {Mapcreator} - Api instance\n */\n get api () {\n return this._api;\n }\n\n /**\n * Target route\n * @returns {String} - Url\n */\n get route () {\n return this._route;\n }\n\n /**\n * Override the target route\n * @param {String} value - route\n */\n set route (value) {\n if (!value.startsWith('https://') && !value.startsWith('http://')) {\n if (!value.startsWith('/')) {\n value = `/${value}`;\n }\n\n value = `${this._api.url}${value}`;\n }\n\n this._route = value;\n }\n\n /**\n * Target to wrap results in\n * @returns {Class<ResourceBase>} - Target constructor\n */\n get Target () {\n return this._Target;\n }\n\n /**\n * Request parameters\n * @returns {RequestParameters} - Request parameters\n */\n get parameters () {\n return this._parameters;\n }\n\n /**\n * Request parameters\n * @param {RequestParameters} value - Request parameters\n */\n set parameters (value) {\n this._parameters = value;\n }\n\n /**\n * Current page number\n * @returns {Number} - Current page\n */\n get page () {\n return this.parameters.page;\n }\n\n /**\n * Maximum amount of items per page\n * @returns {Number} - Amount of items\n */\n get perPage () {\n return this.parameters.perPage;\n }\n\n /**\n * Set sort direction\n * @returns {Array<String>} - Sort\n * @example\n * const sort = ['-name', 'id']\n */\n get sort () {\n return this.parameters.sort;\n }\n\n /**\n * Current sorting value\n * @param {Array<String>} value - Sort\n */\n set sort (value) {\n this.parameters.sort = value;\n }\n\n /**\n * Deleted items filter state\n * @returns {String} value - Deleted items filter state\n * @see {@link DeletedState}\n */\n get deleted () {\n return this.parameters.deleted;\n }\n\n /**\n * Deleted items filter state\n * @param {String} value - Deleted items filter state\n * @see {@link DeletedState}\n */\n set deleted (value) {\n this.parameters.deleted = value;\n }\n\n /**\n * Amount of pages available\n * @returns {Number} - Page count\n */\n get pageCount () {\n return this._pageCount;\n }\n\n /**\n * Page data\n * @returns {Array<ResourceBase>} - Wrapped data\n */\n get data () {\n return this._data;\n }\n\n /**\n * Row count\n * @returns {Number} - Row count\n */\n get rows () {\n return this._rows;\n }\n\n /**\n * Optional search query\n * @default {}\n * @return {Object<String, String|Array<String>>} - Query\n */\n get query () {\n return this.parameters.search;\n }\n\n /**\n * Optional search query\n * @param {Object<String, String|Array<String>>} value - Query\n * @throws {TypeError}\n * @default {}\n * @see {@link ResourceProxy#search}\n */\n set query (value) {\n this.parameters.search = value;\n }\n\n /**\n * Get target page\n * @param {Number} page - Page number\n * @param {Number} perPage - Amount of items per page (max 50)\n * @returns {CancelablePromise<PaginatedResourceListing>} - Target page\n * @throws {ApiError} - If the api returns errors\n */\n getPage (page = this.page, perPage = this.perPage) {\n const query = this.parameters.copy();\n\n query.page = page;\n query.perPage = perPage;\n\n const glue = this.route.includes('?') ? '&' : '?';\n const url = this.route + glue + query.encode();\n\n return makeCancelable(async signal => {\n const response = await this.api.ky.get(url, { signal });\n const { data } = await response.json();\n\n const rowCount = Number(response.headers.get('x-paginate-total') || data.length);\n const totalPages = Number(response.headers.get('x-paginate-pages') || 1);\n const parameters = this.parameters.copy();\n\n parameters.page = page;\n\n return new PaginatedResourceListing(\n this.api, this.route, this.Target,\n parameters, totalPages, rowCount,\n data.map(row => new this.Target(this.api, row)),\n );\n });\n }\n\n /**\n * If there is a next page\n * @returns {boolean} - If there is a next page\n */\n get hasNext () {\n return this.page < this.pageCount;\n }\n\n /**\n * If there is a previous page\n * @returns {boolean} - If there is a previous page\n */\n get hasPrevious () {\n return this.page > 1;\n }\n\n /**\n * Used for caching pages internally\n * @returns {string} - Cache token\n * @see {@link PaginatedResourceWrapper}\n * @see {@link ResourceCache}\n */\n get cacheToken () {\n return this.parameters.token();\n }\n\n /**\n * Get next page\n * @returns {CancelablePromise<PaginatedResourceListing>} - Paginated resource\n * @throws {ApiError} - If the api returns errors\n */\n next () {\n return this.getPage(this.page + 1);\n }\n\n /**\n * Get previous page\n * @returns {CancelablePromise<PaginatedResourceListing>} - Paginated resource\n * @throws {ApiError} - If the api returns errors\n */\n previous () {\n return this.getPage(this.page - 1);\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport PaginatedResourceListing from '../PaginatedResourceListing';\nimport RequestParameters from '../RequestParameters';\nimport ResourceLister from '../ResourceLister';\nimport ResourceBase from '../resources/base/ResourceBase';\nimport { isParentOf } from '../utils/reflection';\n\n/**\n * Proxy for accessing resource. This will make sure that they\n * are properly wrapped before the promise resolves.\n * @protected\n */\nexport default class SimpleResourceProxy {\n /**\n * @param {Mapcreator} api - Instance of the api\n * @param {Class<ResourceBase>} Target - Target to wrap\n * @param {?string} [altUrl=null] - Internal use, Optional alternative url for more complex routing\n * @param {object} seedData - Internal use, used for seeding ::new\n */\n constructor (api, Target, altUrl = null, seedData = {}) {\n if (!isParentOf(ResourceBase, Target)) {\n throw new TypeError('Target is not a child of ResourceBase');\n }\n\n if (typeof Target !== 'function') {\n throw new TypeError('Target must to be a class not an instance');\n }\n\n if (altUrl) {\n this.__baseUrl = altUrl;\n }\n\n this._api = api;\n this._Target = Target;\n this._seedData = seedData;\n }\n\n /**\n * Proxy target url\n * @returns {string} url\n * @example\n * api.layers.select(100).organisations.baseUrl === \"https://maponline-api.dev/v1/layers/100/organisations\"\n */\n get baseUrl () {\n if (!this.__baseUrl) {\n this.__baseUrl = this.new().baseUrl;\n }\n\n return this.__baseUrl;\n }\n\n /**\n * Get api instance\n * @returns {Mapcreator} - Api instance\n */\n get api () {\n return this._api;\n }\n\n /**\n * Target to wrap results in\n * @returns {Class<ResourceBase>} - Target constructor\n */\n get Target () {\n return this._Target;\n }\n\n /**\n * Build a new instance of the target\n * @param {Object<String, *>} data - Data for the object to be populated with\n * @returns {ResourceBase} - Resource with target data\n */\n new (data = {}) {\n // Merge but don't overwrite using seed data\n data = { ...this._seedData, ...data };\n\n return new this.Target(this._api, data);\n }\n\n /**\n * List target resource\n * @param {Number|Object|RequestParameters} [params] - Parameters or the page number to be requested\n * @param {Number} [params.page=1] - The page to be requested\n * @param {Number} [params.perPage=RequestParameters.perPage] - Amount of items per page. This is silently capped by the API\n * @param {String|String[]} [params.sort=''] - Amount of items per page. This is silently capped by the API\n * @param {String} [params.deleted=RequestParameters.deleted] - Show deleted resources, posible values: only, none, all\n * @param {?Object<String, String|Array<String>>} [params.search] - Search parameters\n * @returns {CancelablePromise<PaginatedResourceListing>} - paginated resource\n * @throws {ApiError} - If the api returns errors\n * @example\n * // Find layers with a name that starts with \"test\" and a scale_min between 1 and 10\n * // See Api documentation for search query syntax\n * const search = {\n * name: '^:test',\n * scale_min: ['>:1', '<:10'],\n * };\n *\n * api.layers.list({perPage: 10, search});\n */\n list (params = {}) {\n const resolver = this._buildResolver(params);\n\n return resolver.getPage(resolver.page);\n }\n\n /**\n * Get the resource lister\n *\n * @param {object|RequestParameters} parameters - parameters\n * @param {number} maxRows - Maximum amount of rows\n * @returns {ResourceLister} - Resource lister\n */\n lister (parameters = {}, maxRows = 50) {\n return new ResourceLister(this.api, this.baseUrl, this.Target, parameters, maxRows, this.Target.resourceUrlKey);\n }\n\n // @todo disabled for now due to it promoting bad practices\n // /**\n // * Get all the resources\n // * Please note that you might hit the rate limiter if you use this method. Make sure to cache it's result.\n // *\n // * @param {object|RequestParameters} parameters - parameters\n // * @returns {Promise<ResourceBase[]>} - All the resources\n // * @throws {ApiError} - If the api returns errors\n // */\n // async all(parameters = {}) {\n // const page = await this.list(parameters);\n // const promises = [];\n //\n // for (let i = 2; i <= page.pageCount; i++) {\n // promises.push(page.getPage(i));\n // }\n //\n // const results = await Promise.all(promises);\n //\n // return results.reduce((a, v) => a.concat(v.data), [...page.data]);\n // }\n\n _buildResolver (params = {}) {\n const paramType = typeof params;\n const url = this.baseUrl;\n\n if (!['number', 'object'].includes(paramType)) {\n throw new TypeError(`Expected params to be of type number or object. Got \"${paramType}\"`);\n }\n\n if (paramType === 'number') {\n return this._buildResolver({ page: params });\n }\n\n if (!(params instanceof RequestParameters)) {\n params = new RequestParameters(params);\n }\n\n return new PaginatedResourceListing(this._api, url, this.Target, params);\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * OAuth error\n */\nexport default class OAuthError extends Error {\n /**\n * OAuth error code\n * @type {String}\n */\n error;\n\n /**\n * OAuth error response\n * @param {String} error - OAuth error key\n * @param {String} message - OAuth error message\n */\n constructor (error, message = '') {\n super(message);\n\n this.error = String(error);\n }\n\n /**\n * Displayable error string\n * @returns {String} - error\n */\n toString () {\n let error = this.error;\n\n if (error.includes('_')) {\n error = error.replace('_', ' ').replace(/^./, x => x.toUpperCase());\n }\n\n if (this.message) {\n return `${error}: ${this.message}`;\n }\n\n return error;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { isNode } from '../utils/node';\nimport DataStoreContract from './DataStoreContract';\n\n/**\n * @private\n * @todo fix\n */\nexport default class CookiesDriver extends DataStoreContract {\n constructor (prefix = '_m4n_') {\n super();\n\n this.__prefix = prefix;\n }\n\n /**\n * Cookie name prefix\n * @returns {String} - Prefix\n * @private\n */\n get _prefix () {\n return this.__prefix;\n }\n\n /**\n * @inheritDoc\n */\n static get secure () {\n return window.location.protocol === 'https:';\n }\n\n /**\n * @inheritDoc\n */\n static get available () {\n return !isNode();\n }\n\n /**\n * Store a value in the storage\n * @param {String} name - value name\n * @param {*} value - value\n * @param {Date|String} [expires=2050-01-01] - Expiration date\n */\n set (name, value, expires = new Date('2050-01-01')) {\n name = encodeURIComponent(this._prefix + name);\n value = encodeURIComponent(value);\n\n if (expires instanceof Date) {\n expires = expires.toUTCString();\n }\n\n let cookie = `${name}=${value}; expires=${expires}`;\n\n if (CookiesDriver.secure) {\n cookie += '; secure';\n }\n\n document.cookie = cookie;\n }\n\n /**\n * @inheritDoc\n */\n get (name) {\n name = this._prefix + name;\n\n return this._toObject()[name];\n }\n\n /**\n * @inheritDoc\n */\n remove (name) {\n this.set(name, '', new Date(1970));\n }\n\n /**\n * @inheritDoc\n */\n keys () {\n const regex = new RegExp(`^${this._prefix}`);\n\n return Object.keys(this._toObject()).map(x => x.replace(regex, ''));\n }\n\n /**\n * Extract cookies and turn them into a object\n * @returns {Object} - cookies\n * @private\n */\n _toObject () {\n const cookies = {};\n\n document.cookie\n .split(';')\n .map(x => x.trim().split('=').map(decodeURIComponent))\n .filter(x => x[0].startsWith(this._prefix))\n .forEach(x => {\n cookies[x[0]] = x[1];\n });\n\n return cookies;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { isNode } from '../utils/node';\nimport DataStoreContract from './DataStoreContract';\n\n/**\n * Used for storing data during tests\n * @private\n */\nexport default class DummyDriver extends DataStoreContract {\n static _data = {};\n\n /**\n * @inheritDoc\n */\n static get available () {\n return isNode() && process.env.NODE_ENV === 'test';\n }\n\n /**\n * If the storage is secure\n * @returns {boolean} - Secure storage\n */\n static get secure () {\n return true;\n }\n\n /**\n * Store a value in the storage\n * @param {String} name - value name\n * @param {*} value - value\n */\n set (name, value) {\n this.constructor._data[name] = value;\n }\n\n /**\n * Get a value from the store\n * @param {String} name - value name\n * @returns {*} - value\n */\n get (name) {\n return this.constructor._data[name];\n }\n\n /**\n * Remove a value from the store\n * @param {String} name - value name\n */\n remove (name) {\n delete this.constructor._data[name];\n }\n\n /**\n * Storage keys\n * @returns {Array<String>} - Stored keys\n */\n keys () {\n return Object.keys(this.constructor._data);\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport DataStoreContract from './DataStoreContract';\nimport { isNode } from '../utils/node';\n\n/**\n * @private\n */\nexport default class LocalStorageDriver extends DataStoreContract {\n /**\n * LocalStorage name prefix\n * @returns {String} - Prefix\n * @private\n */\n static get _prefix () {\n return '_m4n_';\n }\n\n /**\n * @inheritDoc\n */\n static get available () {\n return !isNode();\n }\n\n /**\n * Store a value in the storage\n * @param {String} name - value name\n * @param {*} value - value\n */\n set (name, value) {\n name = LocalStorageDriver._prefix + name;\n\n window.localStorage.setItem(name, value);\n }\n\n /**\n * Get a value from the store\n * @param {String} name - value name\n */\n get (name) {\n name = LocalStorageDriver._prefix + name;\n\n return window.localStorage.getItem(name);\n }\n\n /**\n * Remove a value from the store\n * @param {String} name - value name\n */\n remove (name) {\n name = LocalStorageDriver._prefix + name;\n\n window.localStorage.removeItem(name);\n }\n\n /**\n * Storage keys\n * @returns {Array<String>} - Stored keys\n */\n keys () {\n const keys = [];\n const storage = window.localStorage;\n const prefix = LocalStorageDriver._prefix;\n\n for (let i = 0; i < storage.length; i++) {\n let key = storage.key(i);\n\n if (key.startsWith(prefix)) {\n key = key.replace(new RegExp(`^${prefix}`), '');\n\n keys.push(key);\n }\n }\n\n return keys;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport StaticClass from '../utils/StaticClass';\nimport CookiesDriver from './CookiesDriver';\nimport DummyDriver from './DummyDriver';\nimport FileDriver from './FileDriver';\nimport LocalStorageDriver from './LocalStorageDriver';\n\n/**\n * @private\n */\nexport default class StorageManager extends StaticClass {\n /**\n * Available storage drivers\n * @returns {Array.<function>} - Available storage drivers\n */\n static get available () {\n return [\n DummyDriver,\n LocalStorageDriver,\n // CookiesDriver,\n FileDriver,\n ].filter(x => x.available);\n }\n\n /**\n * Get LocalStorageDriver instance\n * @returns {LocalStorageDriver} - Instance\n */\n static get localStorage () {\n return new LocalStorageDriver();\n }\n\n /**\n * Get CookiesDriver instance\n * @returns {CookiesDriver} - Instance\n */\n static get cookies () {\n return new CookiesDriver();\n }\n\n /**\n * Get FileDriver instance\n * @returns {FileDriver} - Instance\n */\n static get file () {\n return new FileDriver();\n }\n\n /**\n * Get DummyDriver instance\n * @returns {DummyDriver} - Instance\n */\n static get dummy () {\n return new DummyDriver();\n }\n\n /**\n * Returns the best available storage driver. For a secure driver use {@link StorageManager#secure}\n * @returns {DataStoreContract} - Best available storage driver\n */\n static get best () {\n return new this.available[0]();\n }\n\n /**\n * Returns the a secure storage driver\n * @returns {DataStoreContract} - Secure storage driver\n */\n static get secure () {\n const C = this.available.filter(x => x.secure)[0];\n\n if (typeof C === 'undefined') {\n return StorageManager.best;\n }\n\n return new C();\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { JobShareVisibility } from '../enums';\nimport CrudBase from './base/CrudBase';\n\nexport default class JobShare extends CrudBase {\n /**\n * Unsupported method implemented due to CrudBase abstraction\n * @throws {Error}\n * @private\n */\n save () {\n throw new Error('Unsupported method JobShare::save');\n }\n\n /**\n * Accessor for {@link JobShareVisibility} enum\n * @returns {Enum<JobShareVisibility>} - Accessor for enum\n */\n static get visibility () {\n return JobShareVisibility;\n }\n\n static get resourcePath () {\n return '/jobs/shares/{id}';\n }\n\n static get resourceName () {\n return 'shares';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport HandlesImages from '../traits/HandlesImages';\nimport OwnableResource from '../traits/OwnableResource';\nimport { mix } from '../utils/reflection';\nimport CrudBase from './base/CrudBase';\n\n/**\n * Layer\n * @extends CrudBase\n * @mixes OwnableResource\n * @mixes HandlesImages\n */\nexport default class Layer extends mix(CrudBase, OwnableResource, HandlesImages) {\n static get resourceName () {\n return 'layers';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Base64 encode data\n *\n * @param {Buffer|ArrayBuffer} buffer - input buffer\n * @author Jon Leighton\n * @license MIT\n * @see https://gist.github.com/jonleighton/958841\n * @returns {string} - base 64 encoded data\n * @private\n */\nexport function base64Encode (buffer) {\n let base64 = '';\n const encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n const bytes = new Uint8Array(buffer);\n const byteLength = bytes.byteLength;\n const byteRemainder = byteLength % 3;\n const mainLength = byteLength - byteRemainder;\n\n let a, b, c, d;\n let chunk;\n\n // Main loop deals with bytes in chunks of 3\n for (let i = 0; i < mainLength; i += 3) {\n // Combine the three bytes into a single integer\n chunk = bytes[i] * 65536 | bytes[i + 1] * 256 | bytes[i + 2];\n\n // Use bitmasks to extract 6-bit segments from the triplet\n a = (chunk & 16515072) >> 18; // 16515072 = (2^6 - 1) << 18\n b = (chunk & 258048) >> 12; // 258048 = (2^6 - 1) << 12\n c = (chunk & 4032) >> 6; // 4032 = (2^6 - 1) << 6\n d = chunk & 63; // 63 = 2^6 - 1\n\n // Convert the raw binary segments to the appropriate ASCII encoding\n base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d];\n }\n\n // Deal with the remaining bytes and padding\n if (byteRemainder === 1) {\n chunk = bytes[mainLength];\n\n a = (chunk & 252) >> 2; // 252 = (2^6 - 1) << 2\n\n // Set the 4 least significant bits to zero\n b = (chunk & 3) << 4; // 3 = 2^2 - 1\n\n base64 += `${encodings[a] + encodings[b]}==`;\n } else if (byteRemainder === 2) {\n chunk = bytes[mainLength] * 256 | bytes[mainLength + 1];\n\n a = (chunk & 64512) >> 10; // 64512 = (2^6 - 1) << 10\n b = (chunk & 1008) >> 4; // 1008 = (2^6 - 1) << 4\n\n // Set the 2 least significant bits to zero\n c = (chunk & 15) << 2; // 15 = 2^4 - 1\n\n base64 += `${encodings[a] + encodings[b] + encodings[c]}=`;\n }\n\n return base64;\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { base64Encode } from '../../utils/base64';\nimport { isNode } from '../../utils/node';\n\n/**\n * Downloaded resource from the api\n */\nexport default class DownloadedResource {\n /**\n *\n * @param {ArrayBuffer|Buffer} data - Data\n * @param {string} [type=application/octet-stream] - Mime-type\n * @param {string} [fileName=Untitled] - File name\n */\n constructor (data, type = 'application/octet-stream', fileName = 'Untitled') {\n this._data = data;\n this._type = type;\n this._fileName = fileName;\n }\n\n /**\n * Build instance from response\n * @param {Response} response - Response\n * @returns {DownloadedResource} - Instance\n */\n static async fromResponse (response) {\n // Get data\n const data = await response.arrayBuffer();\n\n // Find mimeType\n let mimeType;\n const contentType = response.headers.get('content-type');\n\n if (contentType) {\n mimeType = contentType.split(';')[0].trim();\n }\n\n // Extract file name\n let fileName;\n const contentDisposition = response.headers.get('content-disposition');\n\n if (contentDisposition) {\n const regex = /filename[^;=\\n]*=((['\"])(.*?)\\2|([^;\\s]*))/i;\n const matches = regex.exec(contentDisposition);\n\n if (matches) {\n fileName = matches[3] || matches[4];\n }\n }\n\n return new DownloadedResource(data, mimeType, fileName);\n }\n\n /**\n * In Nodejs it will return a {@link Buffer} and in the browser it will respond with a {@link ArrayBuffer}\n * @returns {ArrayBuffer|Buffer} - Resource data\n */\n get data () {\n return this._data;\n }\n\n /**\n * Resource mime-type\n * @return {string} - Mime-type\n */\n get type () {\n return this._type;\n }\n\n /**\n * Resource file name, if available\n * @return {string} - File name\n */\n get fileName () {\n return this._fileName;\n }\n\n /**\n * Get the size of the data\n * @return {Number} - Size in bytes\n */\n get size () {\n return this.data.length;\n }\n\n /**\n * Create a object url\n * The URL lifetime is tied to the document in the window on which it\n * was created. The new object URL represents the resource.\n * *Do not forget* to release the object urls once used.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n * @see https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL#Memory_management\n * @return {string} - Object url\n */\n createObjectUrl () {\n if (isNode()) {\n throw new Error('Object urls are not supported by Node');\n }\n\n return URL.createObjectURL(this.createBlob());\n }\n\n /**\n * Create a blob from the resource\n * @returns {Blob}\n */\n createBlob () {\n return new Blob([this.data], { type: this.type });\n }\n\n /**\n * Get base64-encoded data uri\n * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n * @returns {string} - Data uri\n */\n toDataUri () {\n return `data:${this.type};base64,${this.toBase64()}`;\n }\n\n /**\n * Base64 encode data\n * @returns {string} - Base64 encoded data\n */\n toBase64 () {\n return base64Encode(this.data);\n }\n\n /**\n * @inheritDoc\n */\n toString () {\n return this.data.toString();\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Makes an object and it's children unobservable by frameworks like Vuejs\n * @protected\n */\nexport default class Unobservable {\n /**\n * Overrides the `Object.prototype.toString.call(obj)` result\n * @returns {string} - type name\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag\n */\n get [Symbol.toStringTag] () {\n // Anything can go here really as long as it's not 'Object'\n return this.constructor.name;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { constant as constantCase } from 'case';\nimport { getTypeName } from '../utils/reflection';\nimport Unobservable from '../utils/Unobservable';\n\n\n/**\n * Base enum class\n * @example\n * const Colors = new Enum(['RED', 'BLACK', 'GREEN', 'WHITE', 'BLUE']);\n *\n * const Answers = new Enum({\n * YES: true,\n * NO: false,\n * // Passing functions as values will turn them into getters\n * // Getter results will appear in ::values\n * MAYBE: () => Math.random() >= 0.5,\n * });\n *\n * const FontStyles = new Enum(['italic', 'bold', 'underline', 'regular'], true);\n * FontStyles.ITALIC === 'italic'\n * FontStyles.BOLD === 'bold'\n *\n * // etc...\n */\nexport default class Enum extends Unobservable {\n /**\n * @param {Object<String, *>|Array<String>} enums - Data to build the enum from\n * @param {boolean} auto - Auto generate enum from data making assumptions about\n * the data, requires enums to be of type array.\n */\n constructor (enums, auto = false) {\n super();\n\n const isArray = Array.isArray(enums);\n\n if (auto && !isArray) {\n throw new TypeError(`Expected enums to be of type \"Array\" got \"${getTypeName(enums)}\"`);\n }\n\n if (isArray && auto) {\n for (const row of enums) {\n const key = constantCase(row);\n\n Object.defineProperty(this, key, {\n enumerable: true,\n value: row,\n });\n }\n } else if (isArray) {\n for (const key of enums) {\n Object.defineProperty(this, key, {\n enumerable: true,\n value: Enum._iota,\n });\n }\n } else {\n for (const key of Object.keys(enums)) {\n const init = { enumerable: true };\n\n if (typeof enums[key] === 'function') {\n init.get = enums[key];\n } else {\n init.value = enums[key];\n }\n\n Object.defineProperty(this, key, init);\n }\n }\n\n Object.freeze(this);\n }\n\n /**\n * List enum keys\n * @returns {Array} - Enum keys\n */\n keys () {\n return Object.keys(this);\n }\n\n /**\n * List enum values\n * @returns {Array<*>} - Enum values\n */\n values () {\n return this.keys()\n .map(key => this[key])\n .filter((v, i, s) => s.indexOf(v) === i);\n }\n\n static get _iota () {\n if (!Enum.__iota) {\n Enum.__iota = 0;\n }\n\n return Enum.__iota++;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ky from 'ky-universal';\nimport { AbstractClassError, AbstractMethodError } from '../errors/AbstractError';\nimport StorageManager from '../storage/StorageManager';\nimport OAuthToken from './OAuthToken';\nimport StateContainer from './StateContainer';\nimport { makeCancelable } from '../utils/helpers';\n\n/**\n * OAuth base class\n * @abstract\n */\nexport default class OAuth {\n token = null;\n path = '/';\n host = process.env.HOST;\n\n /**\n * @param {String} clientId - OAuth client id\n * @param {Array<String>} scopes - A list of required scopes\n */\n constructor (clientId, scopes = ['*']) {\n if (this.constructor === OAuth) {\n throw new AbstractClassError();\n }\n\n this.clientId = String(clientId);\n this.scopes = scopes;\n\n if (this.clientId) {\n this.token = OAuthToken.recover();\n }\n }\n\n /**\n * If the current instance has a valid token\n * @returns {Boolean} - If a valid token is available\n */\n get authenticated () {\n return this.token !== null && !this.token.expired;\n }\n\n /**\n * Authenticate\n * @returns {Promise<OAuthToken>} - Authentication token\n * @throws {OAuthError}\n * @abstract\n */\n authenticate () {\n throw new AbstractMethodError();\n }\n\n /**\n * Forget the current session\n * Empty the session token store and forget the api token\n */\n forget () {\n StateContainer.clean();\n StorageManager.secure.remove(OAuthToken.storageName);\n\n this.token = null;\n }\n\n /**\n * Invalidates the session token\n * @throws {OAuthError} - If de-authentication fails\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n logout () {\n if (!this.token) {\n return makeCancelable(() => {});\n }\n\n const url = `${this.host}/oauth/logout`;\n\n return makeCancelable(async signal => {\n await ky.post(url, {\n headers: {\n Accept: 'application/json',\n Authorization: this.token.toString(),\n },\n signal,\n });\n\n this.forget();\n });\n }\n\n /**\n * Manually import OAuthToken, usefull for debugging\n * @param {String} token - OAuth token\n * @param {String} [type=Bearer] - token type\n * @param {Date|Number} [expires=5 days] - expire time in seconds or Date\n * @param {Array<string>} [scopes=[]] - Any scopes\n */\n importToken (token, type = 'Bearer', expires = 432000, scopes = []) {\n this.token = new OAuthToken(token, type, expires, scopes);\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Simple logger implementation\n */\nexport default class Logger {\n /**\n * Create a Logger instance\n * @param {string} [logLevel=warn] - Log level\n */\n constructor (logLevel = 'warn') {\n this.logLevel = logLevel;\n }\n\n /**\n * Get available log levels\n * @returns {Array<string>} - Log levels\n */\n getLogLevels () {\n return [\n 'debug',\n 'info',\n 'warn',\n 'error',\n 'none',\n ];\n }\n\n /**\n * Log a message\n * @param {string} message - Message to be logged\n * @param {string} level - Log level\n */\n log (message, level = 'info') {\n if (level === 'none') {\n return;\n }\n\n if (this._shouldLog(level)) {\n // eslint-disable-next-line no-console\n console[level](message);\n }\n }\n\n /**\n * Log a debug message\n * @param {string} message - Message to be logged\n */\n debug (message) {\n this.log(message, 'debug');\n }\n\n /**\n * Log an informative message\n * @param {string} message - Message to be logged\n */\n info (message) {\n this.log(message, 'info');\n }\n\n /**\n * Log a warning message\n * @param {string} message - Message to be logged\n */\n warn (message) {\n this.log(message, 'warn');\n }\n\n /**\n * Log an error message\n * @param {string} message - Message to be logged\n */\n error (message) {\n this.log(message, 'error');\n }\n\n /**\n * Get the current log level\n * @returns {string} - log level\n */\n get logLevel () {\n return this._logLevel;\n }\n\n /**\n * Set the current log level\n * @param {string} value - log level\n * @throws {Logger#getLogLevels}\n */\n set logLevel (value) {\n value = value.toLowerCase();\n\n if (!this.getLogLevels().includes(value)) {\n throw new TypeError(`Expected one of ${this.getLogLevels().join(', ')}. Got ${value}`);\n }\n\n this._logLevel = value;\n }\n\n _shouldLog (level) {\n const logLevels = this.getLogLevels();\n const targetLevel = logLevels.findIndex(x => x === level);\n const currentLevel = logLevels.findIndex(x => x === this.logLevel);\n\n return targetLevel >= currentLevel;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ky from 'ky-universal';\n\nimport { Enum } from './enums';\nimport DummyFlow from './oauth/DummyFlow';\nimport OAuth from './oauth/OAuth';\nimport OAuthToken from './oauth/OAuthToken';\nimport GeoResourceProxy from './proxy/GeoResourceProxy';\nimport ResourceProxy from './proxy/ResourceProxy';\nimport SimpleResourceProxy from './proxy/SimpleResourceProxy';\nimport {\n Choropleth,\n Color,\n Contract,\n Dimension,\n DimensionSet,\n Faq,\n Feature,\n Font,\n FontFamily,\n Highlight,\n InsetMap,\n Job,\n JobShare,\n JobType,\n Language,\n Layer,\n Mapstyle,\n MapstyleSet,\n Message,\n Notification,\n Organisation,\n Permission,\n Role,\n Svg,\n SvgSet,\n Tag,\n TagType,\n User,\n VectorHighlight,\n VectorChoropleth,\n ProductTour,\n ProductTourStep,\n} from './resources';\nimport ResourceBase from './resources/base/ResourceBase';\nimport Injectable from './traits/Injectable';\nimport { fnv32b } from './utils/hash';\nimport Logger from './utils/Logger';\nimport { isParentOf, mix } from './utils/reflection';\nimport { delay, makeCancelable, wrapKyCancelable } from './utils/helpers';\nimport ValidationError from './errors/ValidationError';\nimport ApiError from './errors/ApiError';\nimport { wrapKyPrefixUrl } from './utils/requests';\nimport EventEmitter from 'events';\nimport LayerGroup from './resources/LayerGroup';\n\n/**\n * Base API class\n *\n * @mixes Injectable\n * @extends EventEmitter\n * @fires Mapcreator#error\n */\nexport default class Mapcreator extends mix(EventEmitter, Injectable) {\n /**\n * @param {OAuth|string} auth - Authentication flow\n * @param {string} host - Remote API host\n */\n constructor (auth = new DummyFlow(), host = process.env.HOST) {\n super();\n\n if (typeof auth === 'string') {\n const token = auth;\n\n auth = new DummyFlow();\n\n auth.token = new OAuthToken(token, 'Bearer', new Date('2100-01-01T01:00:00'), ['*']);\n }\n\n this.auth = auth;\n this.host = host;\n\n this._logger = new Logger(process.env.LOG_LEVEL);\n\n this.wrapKy(wrapKyCancelable);\n this.wrapKy(wrapKyPrefixUrl, `${this.host}/${this.version}`);\n }\n\n /**\n * Get api version\n * @returns {string} - Api version\n * @constant\n */\n get version () {\n return 'v1';\n }\n\n /**\n * Get authentication provider instance\n * @returns {OAuth} - OAuth instance\n */\n get auth () {\n return this._auth;\n }\n\n /**\n * Get logger instance\n * @returns {Logger} - Logger instance\n */\n get logger () {\n return this._logger;\n }\n\n /**\n * Set authentication provider instance\n * @param {OAuth} value -- OAuth instance\n */\n set auth (value) {\n if (!isParentOf(OAuth, value)) {\n throw new TypeError('auth must be an instance of OAuth');\n }\n\n this._auth = value;\n }\n\n /**\n * Test if the client is authenticated with the api and has a valid token\n * @returns {boolean} - If the client is authenticated with the api\n */\n get authenticated () {\n return this.auth.authenticated;\n }\n\n /**\n * The current host\n * @returns {string} - The current host\n */\n get host () {\n return this._host;\n }\n\n /**\n * The remote host\n * @param {string} value - A valid url\n */\n set host (value) {\n value = value.replace(/\\/+$/, '');\n this._host = value;\n this.auth.host = value;\n }\n\n get url () {\n return `${this.host}/${this.version}`;\n }\n\n /**\n * Saves the session token so that it can be recovered at a later time. The wrapper can\n * find the token most of the time if the name parameter is left blank.\n * @param {string?} name - name of the token\n */\n saveToken (name) {\n this.auth.token.save(name);\n }\n\n /**\n * Authenticate with the api using the authentication method provided.\n * @returns {Promise<Mapcreator>} - Current instance\n * @throws {OAuthError}\n * @throws {ApiError} - If the api returns errors\n */\n async authenticate () {\n await this.auth.authenticate();\n\n return this;\n }\n\n /**\n * Mapcreator ky instance\n * This ky instance takes care of the API communication. It has the following responsibilities:\n * - Send authenticated requests to the API\n * - Transform errors returned from the API into ApiError and ValidationError if possible\n * - Wait when the rate limiter responds with a 429 and retry later\n * - Prefix urls with the api domain if needed\n * @returns {function}\n * @see {@link https://github.com/sindresorhus/ky}\n */\n get ky () {\n if (this._ky) {\n return this._ky;\n }\n\n const hooks = {\n beforeRequest: [\n request => {\n if (this.authenticated) {\n request.headers.set('Authorization', this.auth.token.toString());\n }\n },\n ],\n afterResponse: [\n // 429 response\n async (request, _options, response) => {\n if (response.status !== 429) {\n return response;\n }\n\n const resetDelay = (response.headers.get('x-ratelimit-reset') * 1000) || 500;\n\n await delay(resetDelay);\n\n return this._ky(request);\n },\n // transform errors\n async (request, options, response) => {\n if (response.status < 400 || response.status >= 600) {\n return response;\n }\n\n const data = await response.json();\n const params = { data, request, options, response };\n\n if (data.error['validation_errors']) {\n throw new ValidationError(params);\n }\n\n const error = new ApiError(params);\n\n if (error.type === 'AuthenticationException') {\n /**\n * Critical api errors (AuthenticationException)\n *\n * @event Mapcreator#error\n * @type {ApiError}\n */\n this.emit('error', error);\n }\n\n throw error;\n },\n ],\n };\n\n this._ky = ky.create({\n timeout: 30000, // 30 seconds\n // throwHttpErrors: false, // This is done through a custom hook\n // redirect: 'error',\n retry: 0,\n headers: {\n 'Accept': 'application/json',\n 'X-No-CDN-Redirect': 'true',\n },\n hooks,\n });\n\n return this._ky;\n }\n\n wrapKy (wrapper, ...args) {\n this._ky = wrapper(this.ky, ...args);\n\n const requestMethods = [\n 'get', 'post', 'put',\n 'patch', 'head', 'delete',\n ];\n\n for (const method of requestMethods) {\n this._ky[method] = (input, options) => this._ky(input, { ...options, method });\n }\n }\n\n /**\n * Static proxy generation\n * @param {string|Class} Target - Constructor or url\n * @param {Class?} Constructor - Constructor for a resource that the results should be cast to\n * @returns {ResourceProxy} - A proxy for accessing the resource\n * @example\n * api.static('/custom/resource/path/{id}/').get(123);\n *\n * @example\n * class FooBar extends ResourceBase {\n * static get resourceName() {\n * return 'custom';\n * }\n * }\n *\n * api.static(FooBar)\n * .get(1)\n * .then(console.log);\n *\n * api.static('/foo-bar-custom', FooBar).lister();\n */\n static (Target, Constructor = ResourceBase) {\n if (typeof Target === 'string') {\n const path = Target;\n const name = Constructor.name || 'AnonymousResource';\n\n Target = class AnonymousResource extends Constructor {\n static get resourceName () {\n return Object.getPrototypeOf(this).resourceName || 'anonymous';\n }\n\n static get resourcePath () {\n return path;\n }\n };\n\n Object.defineProperty(Target, 'name', {\n value: `${name}_${fnv32b(path)}`,\n });\n }\n\n if (isParentOf(ResourceBase, Target)) {\n return new ResourceProxy(this, Target);\n }\n\n throw new TypeError('Expected Target to be of type string and Constructor to be a ResourceBase constructor');\n }\n\n /**\n * Choropleth accessor\n * @see {@link Choropleth}\n * @returns {GeoResourceProxy} - A proxy for accessing the resource\n */\n get choropleths () {\n return new GeoResourceProxy(this, Choropleth);\n }\n\n /**\n * VectorChoropleth accessor\n * @see {@link VectorChoropleth}\n * @returns {GeoResourceProxy} - A proxy for accessing the resource\n */\n get vectorChoropleths () {\n return new GeoResourceProxy(this, VectorChoropleth);\n }\n\n /**\n * Color accessor\n * @see {@link Color}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get colors () {\n return this.static(Color);\n }\n\n /**\n * Tag accessor\n * @see {@link Tag}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get tags () {\n return this.static(Tag);\n }\n\n /**\n * Tag accessor\n * @see {@link Tag}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get tagTypes () {\n return this.static(TagType);\n }\n\n /**\n * Contract accessor\n * @see {@link Contract}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get contracts () {\n return this.static(Contract);\n }\n\n /**\n * Dimension accessor\n * @see {@link Dimension}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get dimensions () {\n return this.static(Dimension);\n }\n\n /**\n * Dimension set accessor\n * @see {@link DimensionSet}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get dimensionSets () {\n return this.static(DimensionSet);\n }\n\n /**\n * Faq accessor\n * @see {@link Faq}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get faqs () {\n return this.static(Faq);\n }\n\n /**\n * Feature accessor\n * @see {@link Feature}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get features () {\n return this.static(Feature);\n }\n\n /**\n * Featured jobs accessor\n * @see {@link Job}\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get featuredMaps () {\n return new SimpleResourceProxy(this, Job, '/jobs/featured');\n }\n\n /**\n * Font accessor\n * @see {@link Font}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get fonts () {\n return this.static(Font);\n }\n\n /**\n * FontFamily accessor\n * @see {@link FontFamily}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get fontFamilies () {\n return this.static(FontFamily);\n }\n\n /**\n * Highlight accessor\n * @see {@link Highlight}\n * @returns {GeoResourceProxy} - A proxy for accessing the resource\n */\n get highlights () {\n return new GeoResourceProxy(this, Highlight);\n }\n\n /**\n * VectorHighlight accessor\n * @see {@link VectorHighlight}\n * @returns {GeoResourceProxy} - A proxy for accessing the resource\n */\n get vectorHighlights () {\n return new GeoResourceProxy(this, VectorHighlight);\n }\n\n /**\n * InsetMap accessor\n * @see {@link InsetMap}\n * @returns {GeoResourceProxy} - A proxy for accessing the resource\n */\n get insetMaps () {\n return new GeoResourceProxy(this, InsetMap);\n }\n\n /**\n * Job accessor\n * @see {@link Job}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get jobs () {\n return this.static(Job);\n }\n\n /**\n * JobShare accessor\n * @see {@link JobShare}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get jobShares () {\n return this.static(JobShare);\n }\n\n /**\n * JobType accessor\n * @see {@link JobType}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get jobTypes () {\n return this.static(JobType);\n }\n\n /**\n * Language accessor\n * @see {@link Language}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get languages () {\n return this.static(Language);\n }\n\n /**\n * Layer accessor\n * @see {@link Layer}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get layers () {\n return this.static(Layer);\n }\n\n /**\n * Layer group accessor\n * @see {@link LayerGroup}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get layerGroups () {\n return this.static(LayerGroup);\n }\n\n /**\n * Mapstyle accessor\n * @see {@link Mapstyle}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get mapstyles () {\n return this.static(Mapstyle);\n }\n\n /**\n * MapstyleSet accessor\n * @see {@link MapstyleSet}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get mapstyleSets () {\n return this.static(MapstyleSet);\n }\n\n /**\n * Notification accessor\n * @see {@link Notification}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get notifications () {\n return this.static(Notification);\n }\n\n /**\n * Message accessor\n * @see {@link Message}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get messages () {\n return this.static(Message);\n }\n\n /**\n * Organisation accessor\n * @see {@link Organisation}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get organisations () {\n return this.static(Organisation);\n }\n\n /**\n * Permission accessor\n * @see {@link Permission}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get permissions () {\n return this.static(Permission);\n }\n\n get productTours () {\n return this.static(ProductTour);\n }\n\n get productTourSteps () {\n return this.static(ProductTourStep);\n }\n\n /**\n * Role accessor\n * @see {@link Role}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get roles () {\n return this.static(Role);\n }\n\n /**\n * Svg accessor\n * @see {@link Svg}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get svgs () {\n return this.static(Svg);\n }\n\n /**\n * SvgSet accessor\n * @see {@link SvgSet}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get svgSets () {\n return this.static(SvgSet);\n }\n\n /**\n * User accessor\n * @see {@link User}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get users () {\n return this.static(User);\n }\n\n /**\n * Get SVG set types\n * @see {@link SvgSet}\n * @returns {CancelablePromise<Enum>} - Contains all the possible SVG set types\n * @throws {ApiError} - If the api returns errors\n */\n getSvgSetTypes () {\n return makeCancelable(async signal => {\n const { data } = await this.ky.get('svgs/sets/types', { signal }).json();\n\n return new Enum(data, true);\n });\n }\n\n /**\n * Get font styles\n * @see {@link Font}\n * @returns {CancelablePromise<Enum>} - Contains all the possible font styles\n * @throws {ApiError} - If the api returns errors\n */\n getFontStyles () {\n return makeCancelable(async signal => {\n const { data } = await this.ky.get('fonts/styles', { signal }).json();\n\n return new Enum(data, true);\n });\n }\n\n /**\n * Forget the current session\n * This will clean up any stored OAuth states stored using {@link StateContainer} and any OAuth tokens stored\n * @returns {CancelablePromise}\n * @throws {ApiError} - If the api returns errors\n */\n logout () {\n return this.auth.logout();\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Errors generated by the API\n */\nexport default class ApiError extends Error {\n\n /**\n * Get the request options\n * @type {Object}\n */\n options;\n\n /**\n * Get the response\n * @type {Response}\n */\n response;\n\n /**\n * Get the request\n * @type {Request}\n */\n request;\n\n /**\n * Error type\n * @type {String}\n */\n type;\n\n /**\n * Http error code\n * @type {Number}\n */\n status;\n\n /**\n * Get the parsed stacktrace from the error\n * @returns {Array<{line: Number, file: String, code: String}>} - Stacktrace\n */\n trace;\n\n /**\n * @param {Object} params\n * @param {Object} params.options - Request options\n * @param {Object} params.data - Response data\n * @param {Request} params.request - Request\n * @param {Response} params.response - Response\n */\n constructor ({ options, request, response, data }) {\n const { type, message, trace } = data.error;\n\n super(message);\n\n this.options = options;\n this.response = response;\n this.request = request;\n\n this.type = type;\n this.trace = [];\n\n // Only available when the api is in debug mode\n if (typeof trace === 'string') {\n this._trace = ApiError._parseTrace(trace);\n }\n }\n\n /**\n * Returns if the error contained a stacktrace that has been parsed\n * This should only be true if the API is in debug mode.\n * @returns {boolean} - If the Error contains a stacktrace\n */\n get hasTrace () {\n return this.trace.length > 0;\n }\n\n /**\n * Display-able string\n * @returns {string} - Displayable error string\n */\n toString () {\n return `[${this.status}] ${this.type}: ${this.message}`;\n }\n\n static _parseTrace (input) {\n // https://regex101.com/r/64cAbt/1\n const regex = /^#(\\d+)\\s(?:(.*?)\\((\\d+)\\)|(.*?)):\\s(.*?)$/gm;\n const output = [];\n\n let match;\n\n // eslint-disable-next-line no-cond-assign\n while ((match = regex.exec(input)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (match.index === regex.lastIndex) {\n regex.lastIndex++;\n }\n\n output.push({\n line: match[3],\n file: match[2] || match[4],\n code: match[5],\n });\n }\n\n return output;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Trait interface\n * @interface\n * @mixin\n */\nexport default class Trait {\n /**\n * Optional initialization method\n */\n initializer () { }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport stringify from 'json-stable-stringify';\n\nconst FNV1_32A_INIT = 0x811c9dc5;\n\n/**\n * Fast hash function for non-cryptographic use\n * @param {string} str - Input to be hashed\n * @returns {string} - String representation of the hash\n * @private\n */\nexport function fnv32b (str) {\n let hash = str\n .split('')\n .map(x => x.charCodeAt(0))\n .reduce((sum, val) => {\n sum ^= val;\n\n return sum + (sum << 1) + (sum << 4) + (sum << 7) + (sum << 8) + (sum << 24);\n }, FNV1_32A_INIT);\n\n // Avalanche\n hash ^= hash << 3;\n hash += hash >> 5;\n hash ^= hash << 4;\n hash += hash >> 17;\n hash ^= hash << 25;\n hash += hash >> 6;\n\n return `0000000${(hash >>> 0).toString(16)}`.substr(-8);\n}\n\n/**\n * Fast object hashing for non-cryptographic use\n * @param {object} data - input data\n * @returns {string} - String reprisentation of the hash\n * @private\n */\nexport function hashObject (data) {\n return fnv32b(stringify(data));\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* eslint-disable no-unused-vars */\n\nimport { AbstractClassError, AbstractMethodError } from '../errors/AbstractError';\n\n/**\n * @private\n */\nexport default class DataStoreContract {\n constructor () {\n if (this.constructor === DataStoreContract) {\n throw new AbstractClassError();\n }\n\n if (!this.constructor.available) {\n throw new Error(`${this.constructor.name} is unavailable`);\n }\n }\n\n /**\n * If the driver is currently available\n * @returns {boolean} - Driver availability\n */\n static get available () {\n return false;\n }\n\n /**\n * If the storage is secure\n * @returns {boolean} - Secure storage\n */\n static get secure () {\n return false;\n }\n\n /**\n * Store a value in the storage\n * @param {String} name - value name\n * @param {*} value - value\n * @abstract\n */\n set (name, value) {\n throw new AbstractMethodError();\n }\n\n /**\n * Get a value from the store\n * @param {String} name - value name\n * @returns {String} - value\n * @abstract\n */\n get (name) {\n throw new AbstractMethodError();\n }\n\n /**\n * Remove a value from the store\n * @param {String} name - value name\n * @abstract\n */\n remove (name) {\n throw new AbstractMethodError();\n }\n\n /**\n * Clear storage\n */\n clear () {\n this.keys().map(key => this.remove(key));\n }\n\n /**\n * Storage keys\n * @returns {Array<String>} - Stored keys\n * @abstract\n */\n keys () {\n throw new AbstractMethodError();\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Thrown when an error occurs during geo processing\n */\nexport default class GeoError extends Error {}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport GeoError from '../errors/GeoError';\nimport RequestParameters from '../RequestParameters';\nimport { GeoBoundary, GeoPoint } from '../utils/geo';\nimport ResourceProxy from './ResourceProxy';\nimport { makeCancelable } from '../utils/helpers';\n\nexport default class GeoResourceProxy extends ResourceProxy {\n /**\n * @param {Mapcreator} api - Instance of the api\n * @param {ResourceBase} Target - Target to wrap\n * @param {?string} [altUrl=null] - Internal use, Optional alternative url for more complex routing\n * @param {object} seedData - Internal use, used for seeding ::new\n * @param {object} options - instance options\n * @param {boolean} [options.hasForPoint=true] - If the endpoint supports for-point\n * @param {boolean} [options.hasForBoundary=true] - If the endpoint supports for-boundary\n */\n constructor (api, Target, altUrl = null, seedData = {}, { hasForPoint = true, hasForBoundary = true } = {}) {\n super(api, Target, altUrl, seedData);\n this._hasForPoint = hasForPoint;\n this._hasForBoundary = hasForBoundary;\n }\n\n /**\n * If the proxy supports for-point operations\n * @returns {boolean} - If it supports the operations\n */\n get hasForPoint () {\n return this._hasForPoint;\n }\n\n /**\n * If the proxy supports for-point operations\n * @returns {boolean} - If it supports the operations\n */\n get hasForBoundary () {\n return this._hasForBoundary;\n }\n\n // noinspection JSCommentMatchesSignature\n /**\n * Get an array of results for boundary\n * @param {Object} boundary - boundary to search within\n * @param {Object} boundary.topLeft - top left corner of the boundary\n * @param {Number} boundary.topLeft.lat - top left corner latitude\n * @param {Number} boundary.topLeft.lng - top left corner longitude\n * @param {Object} boundary.bottomRight - bottom right corner of the boundary\n * @param {Number} boundary.bottomRight.lat - bottom right corner latitude\n * @param {Number} boundary.bottomRight.lng - bottom right corner longitude\n * @param {Number} limit - maximum amount of results, can't be larger then RequestParameters.maxPerPage\n * @returns {CancelablePromise<ResourceBase[]>} - target resource for boundary\n * @throws {ApiError} - If the api returns errors\n * @throws TypeError\n * @throws GeoError\n */\n forBoundary ({ topLeft, bottomRight }, limit = RequestParameters.perPage) {\n if (!this.hasForBoundary) {\n throw new GeoError(`${this.Target.name} does not support the operation forBoundary`);\n }\n\n const boundary = new GeoBoundary(topLeft, bottomRight);\n\n if (limit > RequestParameters.maxPerPage) {\n throw new TypeError(`Invalid resource limit ${limit}, maximum allowed is ${RequestParameters.maxPerPage}`);\n }\n\n const url = `${this.new().baseUrl}/for-boundary?per_page=${limit}`;\n\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.post(url, { json: { boundary }, signal }).json();\n\n return data.map(r => this.new(r));\n });\n }\n\n /**\n * Get an array of results for point\n * @param {Object} point - point to search at\n * @param {Number} point.lat - top left corner latitude\n * @param {Number} point.lng - top left corner longitude\n * @param {Number} limit - maximum amount of results, can't be larger then RequestParameters.maxPerPage\n * @returns {CancelablePromise<ResourceBase[]>} - target resource for boundary\n * @throws {ApiError} - If the api returns errors\n * @throws TypeError\n * @throws GeoError\n */\n forPoint ({ lat, lng }, limit = RequestParameters.perPage) {\n if (!this.hasForPoint) {\n throw new GeoError(`${this.Target.name} does not support the operation forPoint`);\n }\n\n const point = new GeoPoint(lat, lng);\n\n if (limit > RequestParameters.maxPerPage) {\n throw new TypeError(`Invalid resource limit ${limit}, maximum allowed is ${RequestParameters.maxPerPage}`);\n }\n\n const url = `${this.new().baseUrl}/for-point`;\n\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.post(url, { json: { limit, point }, signal }).json();\n\n return data.map(r => this.new(r));\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport DownloadedResource from './base/DownloadedResource';\nimport ResourceBase from './base/ResourceBase';\nimport RequestParameters from '../RequestParameters';\nimport { encodeQueryString } from '../utils/requests';\nimport { DeletedState } from '../enums';\nimport { makeCancelable } from '../utils/helpers';\n\nexport default class JobResult extends ResourceBase {\n static get resourcePath () {\n return '/jobs/{job_id}/revisions/{revision}/result';\n }\n\n static get resourceName () {\n return 'job-result';\n }\n\n /**\n * Get the related job\n * @returns {CancelablePromise<Job>} - The job related to this row\n * @throws {ApiError} - If the api returns errors\n */\n get job () {\n return this.api.jobs.get(this.jobId);\n }\n\n /**\n * Get the related job revision\n * @returns {CancelablePromise<JobRevision>} - The job revision related to this row\n * @throws {ApiError} - If the api returns errors\n */\n get jobRevision () {\n return this.api.jobs.select(this.jobId).revisions.get(this.id);\n }\n\n /**\n * Job result archive url\n * @returns {string} - Archive url\n */\n get outputUrl () {\n return `${this.url}/output`;\n }\n\n /**\n * Get archive blob url\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<DownloadedResource>} - Job result output\n * @throws {ApiError} - If the api returns errors\n */\n downloadOutput (deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.outputUrl}?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const response = await this.api.ky.get(url, { signal });\n\n return DownloadedResource.fromResponse(response);\n });\n }\n\n /**\n * Get the output url url\n * @returns {string} - Output url url\n */\n get outputUrlUrl () {\n return `${this.url}/output-url`;\n }\n\n /**\n * Get the remote output url\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<string>} - The url to the output\n * @throws {ApiError} - If the api returns errors\n */\n getOutputUrl (deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.outputUrlUrl}?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.get(url, { signal }).json();\n\n return data.url;\n });\n }\n\n /**\n * Job result log url\n * @returns {string} - log url\n */\n get logUrl () {\n return `${this.url}/log`;\n }\n\n /**\n * Download the job result log\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<DownloadedResource>} - job result log\n * @throws {ApiError} - If the api returns errors\n */\n downloadLog (deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.logUrl}?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const response = await this.api.ky.get(url, { signal });\n\n return DownloadedResource.fromResponse(response);\n });\n }\n\n /**\n * Job result preview url, usable in an `<img>` tag\n * @returns {string} - Preview url\n */\n get previewUrl () {\n return `${this.url}/preview`;\n }\n\n /**\n * Download the job preview\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<DownloadedResource>} - Job result preview\n * @throws {ApiError} - If the api returns errors\n */\n downloadPreview (deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.previewUrl}?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const response = await this.api.ky.get(url, { signal });\n\n return DownloadedResource.fromResponse(response);\n });\n }\n\n /**\n * Mark a job as dealt with\n * This method is for internal use for our support team.\n *\n * @param {boolean} [value=true] - What to set the dealt-with value to\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise}\n * @throws {ApiError} - If the api returns errors\n */\n dealWith (value = true, deleted = RequestParameters.deleted || DeletedState.NONE) {\n value = Boolean(value);\n\n const method = value ? 'POST' : 'DELETE';\n const url = `${this.url}/deal-with?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n await this.api.ky(url, { method, signal });\n\n this.dealtWith = value;\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Thrown upon invocation of a static class\n * @see {@link StaticClass}\n */\nexport default class StaticClassError extends Error {}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ApiError from './ApiError';\n\n/**\n * Contains schema errors.\n * Normally thrown when a job object is invalid.\n *\n * @typedef {Object} SchemaError\n * @property {string} property - json property\n * @property {string} pointer - json pointer\n * @property {string} message - error message\n * @property {number} context -\n * @property {Object} constraint -\n * @property {Object<string, string>} constraint.params -\n * @property {string} constraint.name -\n * @see https://github.com/justinrainbow/json-schema\n * @example\n * {\n * property: \"data.meta\",\n * pointer: \"/data/meta\",\n * message: \"The property meta is required\",\n * constraint: {\n * name: \"required\",\n * params: {\n * property: \"meta\"\n * }\n * },\n * context: 1\n * }\n */\n\n/**\n * Extension of {@link ApiError} containing an extra field for validation errors\n */\nexport default class ValidationError extends ApiError {\n\n /**\n * Any validation errors\n * @type {Object.<String, Array<String>>} - Object containing arrays of validation errors where the field is stored in the key\n */\n validationErrors;\n\n /**\n * Get the schema errors if available\n * @type {SchemaError[]} - Array containing schema errors\n * @see {@link hasSchemaErrors}\n * @example\n * [\n * {\n * \"property\": \"data.meta\",\n * \"pointer\": \"/data/meta\",\n * \"message\": \"The property meta is required\",\n * \"constraint\": {\n * \"name\": \"required\",\n * \"params\": {\n * \"property\": \"meta\"\n * }\n * },\n * \"context\": 1\n * },\n * {\n * \"property\": \"data.paper\",\n * \"pointer\": \"/data/paper\",\n * \"message\": \"The property paper is required\",\n * \"constraint\": {\n * \"name\": \"required\",\n * \"params\": {\n * \"property\": \"paper\"\n * }\n * },\n * \"context\": 1\n * },\n * {\n * \"property\": \"data.scaleDefinition\",\n * \"pointer\": \"/data/scaleDefinition\",\n * \"message\": \"The property scaleDefinition is required\",\n * \"constraint\": {\n * \"name\": \"required\",\n * \"params\": {\n * \"property\": \"scaleDefinition\"\n * }\n * },\n * \"context\": 1\n * }\n * ]\n */\n schemaErrors;\n\n /**\n * @param {Object} params\n * @param {Object} params.options - Request options\n * @param {Object} params.data - Response data\n * @param {Request} params.request - Request\n * @param {Response} params.response - Response\n */\n constructor ({ options, request, response, data }) {\n super({ options, request, response, data });\n\n const schemaErrors = data.error['schema_errors'];\n\n this.validationErrors = data.error['validation_errors'];\n this.schemaErrors = Array.isArray(schemaErrors) ? schemaErrors : [];\n }\n\n /**\n * True if the error contains schema errors\n * @return {boolean} - Has schema errors\n */\n get hasSchemaErrors () {\n return this.schemaErrors.length > 0;\n }\n\n /**\n * Get validation error messages\n * @returns {Array<String>} - All validation messages\n */\n get messages () {\n const out = [];\n\n for (const key of Object.keys(this.validationErrors)) {\n out.push(...this.validationErrors[key]);\n }\n\n return out;\n }\n\n /**\n * @inheritDoc\n */\n toString () {\n return `There were some validation errors: ${this.messages.join(', ')}`;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudBase from './base/CrudBase';\nimport OwnableResource from '../traits/OwnableResource';\nimport { mix } from '../utils/reflection';\n\n/**\n * Color resource\n * @extends CrudBase\n * @mixes OwnableResource\n */\nexport default class Color extends mix(CrudBase, OwnableResource) {\n static get resourceName () {\n return 'colors';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudSetBase from './base/CrudSetBase';\nimport Dimension from './Dimension';\nimport OwnableResource from '../traits/OwnableResource';\nimport { mix } from '../utils/reflection';\n\n\n/**\n * Dimension sets\n * @extends CrudSetBase\n * @mixes OwnableResource\n */\nexport default class DimensionSet extends mix(CrudSetBase, OwnableResource) {\n static get resourcePath () {\n return '/dimensions/sets/{id}';\n }\n\n static get resourceName () {\n return 'dimension-sets';\n }\n\n get _Child () {\n return Dimension;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudSetItemBase from './base/CrudSetItemBase';\n\n/**\n * Dimension resource\n */\nexport default class Dimension extends CrudSetItemBase {\n static get resourceName () {\n return 'dimensions';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudBase from './base/CrudBase';\nimport OwnableResource from '../traits/OwnableResource';\nimport { mix } from '../utils/reflection';\n\n\n/**\n * Feature\n * @extends CrudBase\n * @mixes OwnableResource\n */\nexport default class Feature extends mix(CrudBase, OwnableResource) {\n static get resourceName () {\n return 'features';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OwnableResource from '../traits/OwnableResource';\nimport { mix } from '../utils/reflection';\nimport CrudSetBase from './base/CrudSetBase';\nimport Font from './Font';\n\n/**\n * Font family\n * @extends CrudSetBase\n * @mixes OwnableResource\n */\nexport default class FontFamily extends mix(CrudSetBase, OwnableResource) {\n static get resourcePath () {\n return '/fonts/families/{id}';\n }\n\n static get resourceName () {\n return 'font-families';\n }\n\n get _Child () {\n return Font;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudSetItemBase from './base/CrudSetItemBase';\n\nexport default class Font extends CrudSetItemBase {\n static get resourceName () {\n return 'fonts';\n }\n\n static get parentKey () {\n return 'font_family_id';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ResourceProxy from '../proxy/ResourceProxy';\nimport DownloadedResource from './base/DownloadedResource';\nimport CrudBase from './base/CrudBase';\nimport JobResult from './JobResult';\nimport JobRevision from './JobRevision';\nimport RequestParameters from '../RequestParameters';\nimport { encodeQueryString } from '../utils/requests';\nimport { DeletedState } from '../enums';\nimport { makeCancelable } from '../utils/helpers';\nimport JobShare from './JobShare';\n\nexport default class Job extends CrudBase {\n /**\n * Get the list of associated job results\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get results () {\n return this._proxyResourceList(JobResult, `${this.url}/results`);\n }\n\n /**\n * Get the list job revisions\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get revisions () {\n const data = {\n jobId: this.id,\n };\n\n return new ResourceProxy(this.api, JobRevision, null, data);\n }\n\n /**\n * Resource name\n * @returns {String} - Resource name\n * @abstract\n */\n static get resourceName () {\n return 'jobs';\n }\n\n /**\n * Get the most up to date preview url\n * @returns {string} - Preview url\n */\n get previewUrl () {\n return `${this.url}/preview`;\n }\n\n /**\n * Get the most up to date archive url\n * @returns {string} - Last archive url\n */\n get lastArchiveUrl () {\n return `${this.url}/output`;\n }\n\n /**\n * Download the job preview\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<DownloadedResource>} - Job result preview\n * @throws {ApiError} - If the api returns errors\n */\n downloadPreview (deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.previewUrl}?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const response = await this.api.ky.get(url, { signal });\n\n return DownloadedResource.fromResponse(response);\n });\n }\n\n /**\n * Get archive blob url\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<DownloadedResource>} - Job result output\n * @throws {ApiError} - If the api returns errors\n */\n downloadOutput (deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.lastArchiveUrl}?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const response = await this.api.ky.get(url, { signal });\n\n return DownloadedResource.fromResponse(response);\n });\n }\n\n /**\n * Get the remote output url\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<string>} - The url to the output\n * @throws {ApiError} - If the api returns errors\n */\n getOutputUrl (deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.url}/output-url?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.get(url, { signal }).json();\n\n return data.url;\n });\n }\n\n /**\n * Share the job\n * @param {String} visibility - See {@link JobShareVisibility}, either `private`, `public` or `organisation`\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<JobShare>} - Object containing share links\n * @throws {ApiError} - If the api returns errors\n */\n share (visibility = JobShare.visibility.PRIVATE, deleted = RequestParameters.deleted || DeletedState.NONE) {\n visibility = visibility.toLowerCase();\n\n if (!JobShare.visibility.values().includes(visibility)) {\n throw new Error(`Unknown visibility '${visibility}'`);\n }\n\n const url = `${this.url}/share?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.post(url, { json: { visibility }, signal }).json();\n\n return new JobShare(this._api, data);\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudBase from './base/CrudBase';\nimport OwnableResource from '../traits/OwnableResource';\nimport { mix } from '../utils/reflection';\n\n/**\n * Job type\n * @extends CrudBase\n * @mixes OwnableResource\n */\nexport default class JobType extends mix(CrudBase, OwnableResource) {\n static get resourcePath () {\n return '/jobs/types/{id}';\n }\n\n static get resourceName () {\n return 'job-types';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport HandlesImages from '../traits/HandlesImages';\nimport { mix } from '../utils/reflection';\nimport CrudSetItemBase from './base/CrudSetItemBase';\n\n/**\n * @extends CrudSetItemBase\n * @mixes HandlesImages\n */\nexport default class Mapstyle extends mix(CrudSetItemBase, HandlesImages) {\n static get resourceName () {\n return 'mapstyles';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OwnableResource from '../traits/OwnableResource';\nimport CrudSetBase from './base/CrudSetBase';\nimport Svg from './Svg';\nimport { mix } from '../utils/reflection';\n\n/**\n * Svg set\n * @extends CrudSetBase\n * @mixes OwnableResource\n */\nexport default class SvgSet extends mix(CrudSetBase, OwnableResource) {\n static get resourcePath () {\n return '/svgs/sets/{id}';\n }\n\n static get resourceName () {\n return 'svg-sets';\n }\n\n get _Child () {\n return Svg;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudSetItemBase from './base/CrudSetItemBase';\n\nexport default class Svg extends CrudSetItemBase {\n static get resourceName () {\n return 'svgs';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OwnableResource from '../traits/OwnableResource';\nimport { mix } from '../utils/reflection';\nimport CrudSetItemBase from './base/CrudSetItemBase';\n\n/**\n * Tag resource\n * @extends CrudSetItemBase\n * @mixes OwnableResource\n */\nexport default class Tag extends mix(CrudSetItemBase, OwnableResource) {\n static get resourceName () {\n return 'tags';\n }\n\n static get parentKey () {\n return 'tag_type_id';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OwnedResourceProxy from '../proxy/OwnedResourceProxy';\nimport ResourceProxy from '../proxy/ResourceProxy';\nimport CrudBase from './base/CrudBase';\nimport Color from './Color';\nimport Dimension from './Dimension';\nimport DimensionSet from './DimensionSet';\nimport Feature from './Feature';\nimport Font from './Font';\nimport FontFamily from './FontFamily';\nimport Job from './Job';\nimport JobShare from './JobShare';\nimport JobType from './JobType';\nimport Language from './Language';\nimport Layer from './Layer';\nimport Mapstyle from './Mapstyle';\nimport MapstyleSet from './MapstyleSet';\nimport Message from './Message';\nimport Notification from './Notification';\nimport Organisation from './Organisation';\nimport Permission from './Permission';\nimport Role from './Role';\nimport Svg from './Svg';\nimport SvgSet from './SvgSet';\nimport { makeCancelable } from '../utils/helpers';\n\nexport default class User extends CrudBase {\n static get resourceName () {\n return 'users';\n }\n\n /**\n * Get all known ips\n * @returns {CancelablePromise<string[]>} - List of ip addresses\n * @throws {ApiError} - If the api returns errors\n */\n ips () {\n const url = `${this.url}/ips`;\n\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.get(url, { signal }).json();\n\n return data.map(row => row['ip_address']);\n });\n }\n\n /**\n * Get the user's organisation\n * @returns {CancelablePromise<Organisation>} - User's organisation\n * @throws {ApiError} - If the api returns errors\n */\n organisation () {\n return new ResourceProxy(this.api, Organisation).get(this.organisationId);\n }\n\n /**\n * Get the user's language\n * @returns {CancelablePromise<Language>} - User's language\n * @throws {ApiError} - If the api returns errors\n */\n language () {\n return new ResourceProxy(this.api, Language).get(this.languageCode);\n }\n\n // region Resource listing\n /**\n * Get the list notifications linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get notifications () {\n return this._proxyResourceList(Notification);\n }\n\n /**\n * Get a list of read/unread messages for the user\n * @returns {CancelablePromise<{read: Message[], unread: Message[]}>} - Read and unread messages\n */\n messages () {\n const url = `${this.url}/messages`;\n\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.get(url, { signal }).json();\n\n return {\n read: data.read.map(o => new Message(this.api, o)),\n unread: data.unread.map(o => new Message(this.api, o)),\n };\n });\n }\n\n /**\n * Get the list mapstyle sets linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get mapstyleSets () {\n return this._proxyResourceList(MapstyleSet);\n }\n\n /**\n * Get the list mapstyles linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get mapstyles () {\n return this._proxyResourceList(Mapstyle);\n }\n\n /**\n * Get the list dimension sets linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get dimensionSets () {\n return this._proxyResourceList(DimensionSet);\n }\n\n /**\n * Get the list dimensions linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get dimensions () {\n return this._proxyResourceList(Dimension);\n }\n\n /**\n * Get the list font families linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get fontFamilies () {\n return this._proxyResourceList(FontFamily);\n }\n\n /**\n * Get the list fonts linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get fonts () {\n return this._proxyResourceList(Font);\n }\n\n /**\n * Get the list svg sets linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get svgSets () {\n return this._proxyResourceList(SvgSet);\n }\n\n /**\n * Get the list svgs linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get svgs () {\n return this._proxyResourceList(Svg);\n }\n\n /**\n * Get the list colors linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get colors () {\n return this._proxyResourceList(Color);\n }\n\n /**\n * Get the list jobs linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get jobs () {\n return this._proxyResourceList(Job);\n }\n\n /**\n * Get the list features linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get features () {\n return this._proxyResourceList(Feature);\n }\n\n /**\n * Get the list layers linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get layers () {\n return this._proxyResourceList(Layer);\n }\n\n /**\n * Get the list job types linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get jobTypes () {\n return this._proxyResourceList(JobType);\n }\n\n /**\n * Get the list job shares linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get jobShares () {\n return this._proxyResourceList(JobShare);\n }\n\n /**\n * Get the list permissions linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get permissions () {\n return this._proxyResourceList(Permission);\n }\n\n /**\n * Get the list roles linked to the user\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get roles () {\n return new OwnedResourceProxy(this.api, this, Role);\n }\n\n // endregion\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ResourceBase from './base/ResourceBase';\n\nexport default class Permission extends ResourceBase {\n static get resourceName () {\n return 'permissions';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudSetItemBase from './base/CrudSetItemBase';\n\n/**\n * Mapstyle set color\n * @extends CrudSetItemBase\n */\nexport default class MapstyleSetColor extends CrudSetItemBase {\n static get resourcePath () {\n return '/mapstyles/sets/{mapstyle_set_id}/colors/{id}';\n }\n\n static get resourceName () {\n return 'mapstyle-set-colors';\n }\n\n get baseUrl () {\n return `${this._api.url}/mapstyles/sets/${this.mapstyleSetId}/colors`;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OwnableResource from '../traits/OwnableResource';\nimport { mix } from '../utils/reflection';\nimport CrudSetBase from './base/CrudSetBase';\nimport Mapstyle from './Mapstyle';\nimport ResourceProxy from '../proxy/ResourceProxy';\nimport MapstyleSetColor from './MapstyleSetColor';\n\n/**\n * Mapstyle set\n * @extends CrudSetBase\n * @mixes OwnableResource\n */\nexport default class MapstyleSet extends mix(CrudSetBase, OwnableResource) {\n static get resourcePath () {\n return '/mapstyles/sets/{id}';\n }\n\n static get resourceName () {\n return 'mapstyle-sets';\n }\n\n get _Child () {\n return Mapstyle;\n }\n\n get colors () {\n const data = {\n mapstyleSetId: this.id,\n };\n\n return new ResourceProxy(this.api, MapstyleSetColor, null, data);\n }\n}\n","module.exports = require(\"ky-universal\");","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport StaticClassError from '../errors/StaticClassError';\n\n/**\n * Disables the constructor and throws a {@link StaticClassError} when an instance is created.\n * @protected\n */\nexport default class StaticClass {\n constructor () {\n throw new StaticClassError();\n }\n}\n","module.exports = require(\"events\");","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OwnedResourceProxy from '../proxy/OwnedResourceProxy';\nimport CrudBase from './base/CrudBase';\nimport Color from './Color';\nimport Contract from './Contract';\nimport DimensionSet from './DimensionSet';\nimport Domain from './Domain';\nimport Feature from './Feature';\nimport FontFamily from './FontFamily';\nimport Job from './Job';\nimport JobShare from './JobShare';\nimport JobType from './JobType';\nimport Layer from './Layer';\nimport MapstyleSet from './MapstyleSet';\nimport SvgSet from './SvgSet';\nimport Tag from './Tag';\nimport User from './User';\nimport { makeCancelable } from '../utils/helpers';\nimport { encodeQueryString } from '../utils/requests';\nimport LayerGroup from './LayerGroup';\n\n\nexport default class Organisation extends CrudBase {\n static get resourceName () {\n return 'organisations';\n }\n\n // Resource listing\n /**\n * Get a proxy for font families linked to the organisation\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get fontFamilies () {\n return new OwnedResourceProxy(this.api, this, FontFamily);\n }\n\n /**\n * Get a proxy for dimension sets linked to the organisation\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get dimensionSets () {\n return new OwnedResourceProxy(this.api, this, DimensionSet);\n }\n\n /**\n * Get a proxy for mapstyle sets linked to the organisation\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get mapstyleSets () {\n return new OwnedResourceProxy(this.api, this, MapstyleSet);\n }\n\n /**\n * Get a proxy for svg sets linked to the organisation\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get svgSets () {\n return new OwnedResourceProxy(this.api, this, SvgSet);\n }\n\n /**\n * Get a proxy for colors linked to the organisation\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get colors () {\n return new OwnedResourceProxy(this.api, this, Color);\n }\n\n /**\n * Get a proxy for tags linked to the organisation\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get tags () {\n return new OwnedResourceProxy(this.api, this, Tag);\n }\n\n /**\n * Get a proxy for features linked to the organisation\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get features () {\n return new OwnedResourceProxy(this.api, this, Feature);\n }\n\n /**\n * Get a proxy for layers linked to the organisation\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get layers () {\n return new OwnedResourceProxy(this.api, this, Layer);\n }\n\n /**\n * Get a proxy for layer groups linked to the organisation\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get layerGroups () {\n return new OwnedResourceProxy(this.api, this, LayerGroup);\n }\n\n /**\n * Get a proxy for jobs linked to the organisation, also known as company maps\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get jobs () {\n return this._proxyResourceList(Job);\n }\n\n /**\n * Get a proxy for job types linked to the organisation\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get jobTypes () {\n return new OwnedResourceProxy(this.api, this, JobType);\n }\n\n /**\n * Get a proxy for job shares linked to the organisation\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get jobShares () {\n return this._proxyResourceList(JobShare);\n }\n\n /**\n * Get a proxy for users linked to the organisation\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get users () {\n return this._proxyResourceList(User);\n }\n\n /**\n * Get a proxy for contracts linked to the organisation\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get contracts () {\n return this._proxyResourceList(Contract);\n }\n\n /**\n * Get a proxy for contracts linked to the organisation\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get domains () {\n return this._proxyResourceList(Domain);\n }\n\n /**\n * Get a tree representation of the organisation's relationships\n * @returns {CancelablePromise<Array<Organisation>>} - List of organisation root nodes. Organisations contain an extra property called \"children\"\n * @throws {ApiError} - If the api returns errors\n * @example\n * function printTree(nodes, prefix = '-') {\n * for (const node of nodes) {\n * console.log(`${prefix} ${node.name}`);\n *\n * printTree(node.children, prefix + '-');\n * }\n * }\n *\n * organisation.getTree().then(printTree)\n */\n getTree (deleted = null) {\n return makeCancelable(async signal => {\n let url = `${this.url}/tree`;\n\n if (typeof deleted === 'string') {\n const glue = url.includes('?') ? '&' : '?';\n\n url += glue + encodeQueryString({ deleted });\n }\n\n const { data } = await this.api.ky.get(url, { signal }).json();\n\n return data.map(root => this._parseTree(root));\n });\n }\n\n _parseTree (rawNode) {\n const node = new this.constructor(this._api, rawNode);\n\n node.children = node.children.map(child => this._parseTree(child));\n\n return node;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OAuthError from '../errors/OAuthError';\nimport OAuth from './OAuth';\n\n/**\n * Dummy flow for when the token should be available in the\n * cache and no attempt at authentication should be made.\n */\nexport default class DummyFlow extends OAuth {\n /**\n * @param {String} [clientId=] - OAuth client id\n * @param {Array<String>} scopes - A list of required scopes\n */\n constructor (clientId = '', scopes = ['*']) {\n super(clientId, scopes);\n }\n\n /**\n * Authenticate\n * @returns {Promise<OAuthToken>} - token\n * @throws {OAuthError}\n */\n authenticate () {\n return new Promise((resolve, reject) => {\n if (this.authenticated) {\n resolve(this.token);\n } else {\n reject(new OAuthError('dummy_error', 'Attempted authentication using a dummy authenticator'));\n }\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n\nimport GeoError from '../errors/GeoError';\n\n/**\n * A geographical point\n */\nexport class GeoPoint {\n /**\n * Geographical point\n * @param {Number} lat - latitude\n * @param {Number} lng - longitude\n */\n constructor (lat, lng) {\n this.lat = lat;\n this.lng = lng;\n }\n\n /**\n * Get latitude\n * @returns {Number} - latitude\n */\n get lat () {\n return this._lat;\n }\n\n /**\n * Set latitude\n * @param {Number} value - latitude\n */\n set lat (value) {\n value = Number(value);\n\n if (!Number.isFinite(value)) {\n throw new GeoError(`Invalid latitude: ${value}`);\n }\n\n this._lat = Math.min(90, Math.max(-90, value));\n }\n\n /**\n * Get longitude\n * @returns {Number} - longitude\n */\n get lng () {\n return this._lng;\n }\n\n /**\n * Set longitude\n * @param {Number} value - longitude\n */\n set lng (value) {\n value = Number(value);\n\n if (!Number.isFinite(value)) {\n throw new GeoError(`Invalid longitude: ${value}`);\n }\n\n this._lng = value;\n }\n\n /**\n * Get data to be JSON encoded\n * @returns {{lat: Number, lng: Number}} - data\n */\n toJSON () {\n return { lat: this.lat, lng: this.lng };\n }\n}\n\n/**\n * Geometric boundary\n */\nexport class GeoBoundary {\n /**\n * Geometric boundary\n * @param {Object} topLeft - top left corner of the boundary\n * @param {Number} topLeft.lat - top left corner latitude\n * @param {Number} topLeft.lng - top left corner longitude\n * @param {Object} bottomRight - bottom right corner of the boundary\n * @param {Number} bottomRight.lat - bottom right corner latitude\n * @param {Number} bottomRight.lng - bottom right corner longitude\n */\n constructor ({ lat: lat1, lng: lng1 }, { lat: lat2, lng: lng2 }) {\n this.topLeft = new GeoPoint(lat1, lng1);\n this.bottomRight = new GeoPoint(lat2, lng2);\n }\n\n getCenter () {\n const lat = (this.topLeft.lat + this.bottomRight.lat) / 2;\n const lng = (this.topLeft.lng + this.bottomRight.lng) / 2;\n\n return new GeoPoint(lat, lng);\n }\n\n /**\n * Top left coordinate\n * @type {GeoPoint}\n */\n topLeft;\n\n /**\n * Bottom right coordinate\n * @type {GeoPoint}\n */\n bottomRight;\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n\nimport ResourceBase from './base/ResourceBase';\n\nexport default class MessageVariant extends ResourceBase {\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudBase from './base/CrudBase';\nimport MessageVariant from './MessageVariant';\nimport { makeCancelable } from '../utils/helpers';\nimport { camel as camelCase, snake as snakeCase } from 'case';\n\nexport default class Message extends CrudBase {\n static get resourceName () {\n return 'messages';\n }\n\n toObject (camelCaseKeys = false) {\n const superObject = super.toObject(camelCaseKeys);\n\n superObject.variants = superObject.variants.map(variant => {\n if (variant instanceof MessageVariant) {\n return variant.toObject(camelCaseKeys);\n }\n\n const caseFn = camelCaseKeys ? camelCase : snakeCase;\n const res = {};\n const fields = Object.keys(variant);\n\n for (const field of fields) {\n res[caseFn(field)] = variant[field];\n }\n\n return res;\n });\n\n return superObject;\n }\n\n _guessType (name, value) {\n if (name === 'variants') {\n return Array.from(value).map(data => new MessageVariant(this.api, data));\n }\n\n return super._guessType(name, value);\n }\n\n _buildCreateData () {\n return this.toObject();\n }\n\n _update () {\n return makeCancelable(async signal => {\n const json = this.toObject();\n\n await this.api.ky.patch(this.url, { json, signal });\n\n // Reset changes\n Object.assign(this._baseProperties, this._properties);\n this._properties = {};\n\n if ('updated_at' in this._baseProperties) {\n this._baseProperties['updated_at'] = new Date();\n }\n\n return this;\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport StaticClass from './StaticClass';\n\n/**\n * UUID util class\n * @static\n * @private\n */\nexport default class Uuid extends StaticClass {\n /**\n * Generate a UUID4 string\n * @returns {string} - Uuid\n */\n static uuid4 () {\n let d = new Date().getTime();\n\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n d += performance.now(); // use high-precision timer if available\n }\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n const r = (d + (Math.random() * 16)) % 16 | 0;\n\n d = Math.floor(d / 16);\n\n return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n }\n\n /**\n * Empty uuid as per spec\n * @returns {string} - Uuid\n */\n static nil () {\n return '0000000-0000-0000-0000-000000000000';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport StorageManager from '../storage/StorageManager';\nimport StaticClass from '../utils/StaticClass';\nimport Uuid from '../utils/uuid';\n\n/**\n * State container for keeping track of OAuth states (crsf tokens)\n * @static\n * @private\n */\nexport default class StateContainer extends StaticClass {\n /**\n * LocalStorage key prefix\n * @returns {String} - prefix\n * @constant\n */\n static get prefix () {\n return 'oauth_state_';\n }\n\n /**\n * Generate and store a state that can be checked at a later point\n * @returns {string} - state\n */\n static generate () {\n const uuid = Uuid.uuid4();\n const key = StateContainer.prefix + uuid;\n\n StorageManager.best.set(key, Date.now());\n\n return uuid;\n }\n\n /**\n * Validate a state\n * @param {String} state - state to validate\n * @param {Boolean} purge - remove from state db after validation\n * @returns {Boolean} - if the state is valid\n */\n static validate (state, purge = true) {\n const storage = StorageManager.best;\n const key = StateContainer.prefix + state;\n const found = typeof storage.get(key) !== 'undefined';\n\n if (purge && found) {\n storage.remove(key);\n }\n\n return found;\n }\n\n /**\n * Remove all states from the state db\n */\n static clean () {\n const tokens = Object.keys(this.list());\n\n for (const token of tokens) {\n StorageManager.best.remove(StateContainer.prefix + token);\n }\n }\n\n /**\n * Get states with their corresponding state db key\n * @returns {Object<String, String>} - List of stored states\n */\n static list () {\n const storage = StorageManager.best;\n\n return storage\n .keys()\n .filter(x => x.startsWith(StateContainer.prefix))\n .map(x => x.replace(StateContainer.prefix, ''))\n .reduce((out, key) => {\n out[key] = storage.get(key);\n\n return out;\n }, {});\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { snake as snakeCase } from 'case';\nimport { EventEmitter } from 'events';\nimport Mapcreator from './Mapcreator';\nimport RequestParameters from './RequestParameters';\nimport ResourceBase from './resources/base/ResourceBase';\nimport { isParentOf } from './utils/reflection';\nimport { makeCancelable } from './utils/helpers';\n\n/**\n * Paginated resource lister\n *\n * @fires ResourceLister#update\n */\nexport default class ResourceLister extends EventEmitter {\n /**\n * ResourceLister constructor\n *\n * @param {Mapcreator} api - Api instance\n * @param {string} route - Resource url route\n * @param {Class<ResourceBase>} Resource - Resource constructor\n * @param {?RequestParameters} parameters - Request parameters\n * @param {number} [maxRows=50] - Initial max rows\n * @param {string} [key=id] - Key\n */\n constructor (api, route, Resource = ResourceBase, parameters = null, maxRows = 50, key = 'id') {\n super();\n\n if (!isParentOf(Mapcreator, api)) {\n throw new TypeError('Expected api to be of type Mapcreator');\n }\n\n this._api = api;\n this._Resource = Resource;\n this._route = route || new this.Resource(api, {}).baseUrl;\n this._parameters = new RequestParameters(parameters || { perPage: RequestParameters.maxPerPage });\n this._key = snakeCase(key);\n this._waiting = false;\n\n this.autoUpdate = true;\n this.maxRows = maxRows;\n\n this._reset();\n }\n\n /**\n * Get if there are more resources to fetch. It indicates if the maxRows can be increased.\n * @returns {boolean} - if more rows are available\n */\n get hasMore () {\n return typeof this.availableRows === 'undefined' || this.availableRows > this.maxRows;\n }\n\n /**\n * Get if the instance is waiting for data\n * @returns {boolean} - waiting for data\n */\n get waiting () {\n return this._waiting;\n }\n\n /**\n * Get the request parameters\n * @returns {RequestParameters} - parameters\n */\n get parameters () {\n return this._parameters;\n }\n\n /**\n * Set the request parameters\n *\n * If you set {@link ResourceLister#autoUpdate} to true then {@link ResourceLister#update}\n * will automatically be called when the parameters are updated.\n * @throws {ResourceLister#autoUpdate}\n * @param {RequestParameters} object - parameters\n */\n set parameters (object) {\n this.parameters.apply(object);\n }\n\n /**\n * Resource constructor accessor, used for building the resource instance\n * @returns {Class<ResourceBase>} - resource constructor\n */\n get Resource () {\n return this._Resource;\n }\n\n /**\n * Get the route (url)\n * @returns {string} - route\n */\n get route () {\n return this._route;\n }\n\n /**\n * Get the data\n * @returns {Array<ResourceLister.Resource>} - data\n */\n get data () {\n return this._data;\n }\n\n /**\n * Get the api instance\n * @returns {Mapcreator} - Api instance\n */\n get api () {\n return this._api;\n }\n\n /**\n * Get the row count\n *\n * @see {ResourceLister.data}\n * @returns {number} - row count\n */\n get rowCount () {\n return this.data.length;\n }\n\n /**\n * Get the maximum amount of rows allowed\n * @returns {number} - max rows\n */\n get maxRows () {\n return this._maxRows;\n }\n\n /**\n * Set the maximum amount of rows allowed\n * @param {number} value - max rows\n */\n set maxRows (value) {\n value = Number(value);\n\n if (Number.isNaN(value)) {\n throw new TypeError(`Expected maxRows to be numeric got ${typeof raw}`);\n }\n\n this._maxRows = value;\n\n if (this.autoUpdate) {\n // noinspection JSIgnoredPromiseFromCall\n this.update();\n }\n }\n\n /**\n * Get the number of rows the server has available\n * @returns {number} - number of rows\n */\n get availableRows () {\n return this._availableRows;\n }\n\n /**\n * Set if {@link ResourceLister#update} should be called when {@link ResourceLister#parameters} is updated\n *\n * @throws {ResourceLister#update}\n * @throws {ResourceLister#parameters}\n * @param {boolean} value - auto update\n */\n set autoUpdate (value) {\n value = Boolean(value);\n\n if (this.autoUpdate !== value) {\n this._autoUpdate = value;\n\n if (typeof this._boundUpdate === 'undefined') {\n this._boundUpdate = this.update.bind(this);\n }\n\n if (this.autoUpdate) {\n this.parameters.on('change', this._boundUpdate);\n } else {\n this.parameters.off('change', this._boundUpdate);\n }\n }\n }\n\n /**\n * Get if {@link ResourceLister#update} should be called when {@link ResourceLister#parameters} is updated\n *\n * @throws {ResourceLister#update}\n * @throws {ResourceLister#parameters}\n */\n get autoUpdate () {\n return this._autoUpdate;\n }\n\n /**\n * Reset the instance\n *\n * @private\n */\n _reset () {\n this._parameterToken = this.parameters.token();\n\n this._realData = [];\n this._data = [];\n this._keys = [];\n\n delete this._availableRows;\n }\n\n /**\n * Update the server data\n */\n async update () {\n if (this.waiting) {\n return;\n }\n\n this._waiting = true;\n\n try {\n if (this._parameterToken !== this.parameters.token()) {\n this._reset();\n }\n\n if (this._realData.length < this.maxRows) {\n try {\n await this._fetchMore();\n } catch (e) {\n this.autoUpdate = false;\n\n this.emit('error', e);\n\n throw e;\n }\n }\n\n if (this.data.length !== this.maxRows) {\n this._data = this._realData.slice(0, this.maxRows);\n }\n } finally {\n this._waiting = false;\n }\n\n /**\n * Update event.\n * Called when the ResourceLister has updated\n *\n * @event RequestLister#update\n */\n this.emit('update');\n }\n\n /**\n * Fetch more data from the server\n * @private\n * @returns {CancelablePromise}\n * @throws {ApiError} - If the api returns errors\n */\n _fetchMore () {\n const glue = this.route.includes('?') ? '&' : '?';\n const parameters = this.parameters.copy();\n\n parameters.offset += this.rowCount;\n\n const endPage = Math.ceil((this.maxRows - this.rowCount) / this.parameters.perPage);\n const promises = [];\n\n return makeCancelable(async signal => {\n for (; parameters.page <= endPage; parameters.page++) {\n const url = this.route + glue + parameters.encode();\n const promise = this.api.ky.get(url, { signal });\n\n promises.push(promise);\n }\n\n const responses = await Promise.all(promises);\n\n for (const response of responses) {\n const { data } = await response.json();\n\n data.forEach(row => this.push(row, false));\n\n this._availableRows = Number(response.headers.get('x-paginate-total')) + parameters.offset;\n }\n });\n }\n\n /**\n * Returns the iterable\n * @returns {Iterator} - iterator\n */\n [Symbol.iterator] () {\n return this.data[Symbol.iterator]();\n }\n\n /**\n * Push a row to the data collection\n *\n * This will append the row or update an existing row based on the key. If\n * autoMaxRows is set to true and maxRows only needs to be increased by one\n * for the new resource to show up it will\n * @param {ResourceLister.Resource} row - resource\n * @param {boolean} autoMaxRows - Increase maxRows if needed\n */\n push (row, autoMaxRows = true) {\n if (!isParentOf(this.Resource, row)) {\n row = new this.Resource(this.api, row);\n }\n\n const index = this._keys.findIndex(i => i === row[this._key]);\n\n if (index >= 0) {\n this._realData[index] = row;\n\n if (typeof this._data[index] !== 'undefined') {\n this._data[index] = row;\n }\n } else {\n this._realData.push(row);\n\n this._keys.push(row[this._key]);\n\n if (autoMaxRows) {\n this.maxRows++;\n\n this._data.push(row);\n }\n }\n }\n\n /**\n * Same as `this.maxRows += this.parameters.perPage`\n * @param {number} [rows=parameters.perPage] - Amount to increment maxRows with\n */\n loadMore (rows = this.parameters.perPage) {\n this.maxRows += rows;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { isParentOf } from '../utils/reflection';\nimport SimpleResourceProxy from './SimpleResourceProxy';\nimport { makeCancelable } from '../utils/helpers';\n\nexport default class OrganisationProxy extends SimpleResourceProxy {\n /**\n * @param {Mapcreator} api - Instance of the api\n * @param {ResourceBase} parent - Parent instance\n */\n constructor (api, parent) {\n // Fixes dependency issue\n const Organisation = require('../resources/Organisation').default;\n\n super(api, Organisation, `${parent.url}/organisations`, {});\n\n this._parent = parent;\n }\n\n /**\n * Returns parent instance\n * @returns {ResourceBase} - Parent instance\n */\n get parent () {\n return this._parent;\n }\n\n /**\n * Sync organisations to the parent resource\n * The organisations attached to the target resource will be replaced with the organisations provided in the request.\n * @param {Array<Organisation|number>} organisations - List of items to sync\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n sync (organisations) {\n return this._modifyLink(organisations, 'PATCH', this.Target);\n }\n\n /**\n * Attach organisations to the parent resource\n * The provided organisations will be attached to the resource if they're not already attached\n * @param {Array<Organisation|number>} organisations - List of items to attach\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n attach (organisations) {\n return this._modifyLink(organisations, 'POST', this.Target);\n }\n\n /**\n * Detach organisations from the parent resource\n * The provided organisations will be detached from the resource\n * @param {Array<Organisation|number>} organisations - List of items to detach\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n detach (organisations) {\n return this._modifyLink(organisations, 'DELETE', this.Target);\n }\n\n /**\n * Attach all organisations to the parent resource\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n attachAll () {\n return makeCancelable(async signal => {\n await this.api.ky.post(`${this.baseUrl}/all`, { signal });\n });\n }\n\n /**\n * Detach all organisations from the parent resource\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n detachAll () {\n return makeCancelable(async signal => {\n await this.api.ky.delete(`${this.baseUrl}/all`, { signal });\n });\n }\n\n /**\n * Sync, attach or unlink resources\n * @param {Array<Organisation|Number>|Organisation|Number} items - List of items to sync or attach\n * @param {String} method - Http method to use\n * @param {Class<ResourceBase>} Type - Resource type\n * @param {?String} path - Optional appended resource path, will guess if null\n * @throws {ApiError} - If the api returns errors\n * @protected\n * @returns {CancelablePromise}\n */\n _modifyLink (items, method, Type, path = null) {\n if (!Array.isArray(items)) {\n items = [items];\n }\n\n if (!path) {\n const resource = Type.resourceName.replace(/s+$/, '');\n\n path = `${resource}s`;\n }\n\n const keys = items.map(x => typeof x === 'number' ? x : x.id).map(Number);\n const filter = x => !isParentOf(Type, x) && !Number.isFinite(x);\n const isValid = keys.filter(filter).length === 0;\n\n if (!isValid) {\n throw new TypeError(`Array must contain either Numbers (resource id) or \"${Type.name}\".`);\n }\n\n const url = `${this.parent.url}/${path}`;\n\n return makeCancelable(async signal => {\n await this.api.ky(url, { method, signal, json: { keys } });\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudBase from './base/CrudBase';\n\n/**\n * Contract resource\n */\nexport default class Contract extends CrudBase {\n static get resourceName () {\n return 'contracts';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudBase from './base/CrudBase';\n\n/**\n * Domain resource\n */\nexport default class Domain extends CrudBase {\n static get resourceName () {\n return 'domains';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { isParentOf } from '../utils/reflection';\nimport CrudBase from './base/CrudBase';\nimport JobResult from './JobResult';\nimport JobShare from './JobShare';\nimport Layer from './Layer';\nimport RequestParameters from '../RequestParameters';\nimport { encodeQueryString } from '../utils/requests';\nimport { DeletedState } from '../enums';\nimport { makeCancelable } from '../utils/helpers';\n\nexport default class JobRevision extends CrudBase {\n get baseUrl () {\n return `${this._api.url}/jobs/${this.jobId}/revisions`;\n }\n\n static get resourcePath () {\n return '/jobs/{job_id}/revisions/{revision}';\n }\n\n static get resourceName () {\n return 'job-revisions';\n }\n\n static get resourceUrlKey () {\n return 'revision';\n }\n\n /**\n * Get layers\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get layers () {\n return this._proxyResourceList(Layer);\n }\n\n /**\n * Get the job result\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<JobResult>} - The associated job result\n * @throws {ApiError} - If the api returns errors\n */\n result (deleted = RequestParameters.deleted || DeletedState.NONE) {\n return makeCancelable(async signal => {\n const url = `${this.url}/result?${encodeQueryString({ deleted })}`;\n const { data } = await this.api.ky.get(url, { signal }).json();\n\n data.jobId = this.jobId;\n data.revision = this.revision;\n\n return new JobResult(this.api, data);\n });\n }\n\n /**\n * Get a result proxy\n *\n * @returns {JobResult} - Empty job result used for\n */\n get resultProxy () {\n const data = {\n jobId: this.jobId,\n revision: this.revision,\n };\n\n return new JobResult(this.api, data);\n }\n\n // noinspection JSCheckFunctionSignatures\n /**\n * Save updated job revision\n * @param {Object} object - Map object\n * @param {Array<Layer>|Array<Number>|null} layers - Array containing all layers for this revision. If set to null the same layers will be used\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<JobRevision>} - New job revision\n * @throws {TypeError}\n * @throws {ApiError} - If the api returns errors\n */\n save (object = {}, layers = null, deleted = RequestParameters.deleted || DeletedState.NONE) {\n if (layers && layers.length > 0) {\n if (isParentOf(Layer, layers[0])) {\n layers = layers.map(layer => layer.id);\n } else if (typeof layers[0] !== 'number') {\n throw new TypeError('layers property is not of type Array<Layer>, Array<Number> or null');\n }\n }\n\n const json = {\n 'object': JSON.stringify(object),\n 'language_code': this.languageCode,\n 'mapstyle_set_id': this.mapstyleSetId,\n };\n\n if (layers) {\n json.layers = layers;\n }\n\n const url = `${this.baseUrl}?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.post(url, { json, signal }).json();\n\n return new JobRevision(this.api, data);\n });\n }\n\n /**\n * Get job object\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<Object>} - The map object\n * @throws {ApiError} - If the api returns errors\n */\n object (deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.url}/object?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.get(url, { signal }).json();\n\n return data;\n });\n }\n\n /**\n * Build the revision\n * @param {String} callback - Optional callback url for when the job completes\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n build (callback, deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.url}/build?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n await this.api.ky.post(url, { json: { callback }, signal });\n });\n }\n\n /**\n * Cancels a running job\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise}\n * @throws {ApiError} - If the api returns errors\n */\n cancel (deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.url}/cancel?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n await this.api.ky.post(url, { signal });\n });\n }\n\n // noinspection JSCheckFunctionSignatures\n /**\n * Clones a job revision to the user requesting it\n * @param {String} [title=null] - The new title for the job\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise<JobRevision>} - The new job revision, which will be linked to a new job\n */\n clone (title = null, deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.url}/clone?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.post(url, { json: { title }, signal }).json();\n\n return new JobRevision(this.api, data);\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudBase from './base/CrudBase';\n\nexport default class Language extends CrudBase {\n static get resourceName () {\n return 'languages';\n }\n\n static get resourcePath () {\n return `/${this.resourceName}/{code}`;\n }\n\n toString () {\n return `${this.constructor.name}(${this.code})`;\n }\n\n static get resourceUrlKey () {\n return 'code';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudBase from './base/CrudBase';\n\nexport default class Notification extends CrudBase {\n static get resourceName () {\n return 'notifications';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OwnedResourceProxy from '../proxy/OwnedResourceProxy';\nimport CrudBase from './base/CrudBase';\nimport Permission from './Permission';\nimport User from './User';\n\nexport default class Role extends CrudBase {\n /**\n * Get the list permissions linked to the role\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get permissions () {\n return new OwnedResourceProxy(this.api, this, Permission);\n }\n\n /**\n * Get the list users linked to the role\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get users () {\n return new OwnedResourceProxy(this.api, this, User);\n }\n\n static get resourceName () {\n return 'roles';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nexport GeoResourceProxy from './GeoResourceProxy';\nexport OrganisationProxy from './OrganisationProxy';\nexport OwnedResourceProxy from './OwnedResourceProxy';\nexport ResourceProxy from './ResourceProxy';\nexport SimpleResourceProxy from './SimpleResourceProxy';\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Invoked upon nodejs specific errors\n */\nexport default class NodeError extends Error { }\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nexport * from './AbstractError';\nexport ApiError from './ApiError';\nexport ValidationError from './ValidationError';\nexport NodeError from './NodeError';\nexport OAuthError from './OAuthError';\nexport StaticClassError from './StaticClassError';\nexport GeoError from './GeoError';\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ResourceBase from '../resources/base/ResourceBase';\nimport { hasTrait, isParentOf } from '../utils/reflection';\nimport Trait from './Trait';\n\n/**\n * Adds the possibility to inject proxies/methods\n *\n * @mixin\n */\nexport default class Injectable extends Trait {\n /**\n * Inject proxies and methods during the constructor\n */\n initializer () {\n const injectable = this.constructor._injectable || {};\n\n for (const name of Object.keys(injectable)) {\n const { value, isProxy } = injectable[name];\n\n if (isProxy) {\n this.injectProxy(name, value);\n } else {\n this.inject(name, value);\n }\n }\n }\n\n /**\n * Inject a proxy property into future instances\n *\n * @param {string|object} name - Name of the property\n * @param {function?} value - Either a resource or a function that returns a proxy\n *\n * @example\n *\n * Mapcreator.injectProxy({Domain});\n *\n * // After creating new api instance\n *\n * api.domains // returns proxy\n */\n static injectProxy (name, value) {\n if (value) {\n if (typeof this._injectable === 'undefined') {\n this._injectable = {};\n }\n\n this._injectable[name] = { value, isProxy: true };\n } else {\n // Handle vue-style injections `.inject({ Foo, Bar, Baz })`\n for (const key of Object.keys(name)) {\n this.inject(key, name[key]);\n }\n }\n }\n\n /**\n * Inject a property into future instances\n *\n * @param {string|object} name - Name of the property\n * @param {function?} value - Any function that does not return a proxy\n *\n */\n static inject (name, value) {\n if (value) {\n if (typeof this._injectable === 'undefined') {\n this._injectable = {};\n }\n\n this._injectable[name] = { value, isProxy: false };\n } else {\n // Handle vue-style injections `.inject({ Foo, Bar, Baz })`\n for (const key of Object.keys(name)) {\n this.inject(key, name[key]);\n }\n }\n }\n\n /**\n * Prevent a property from being injected\n * @param {string} name - Name of the property\n */\n static uninject (name) {\n if (typeof this._injectable !== 'undefined') {\n delete this._injectable[name];\n }\n }\n\n /**\n * Inject a proxy\n * @param {string} name - Name of the property\n * @param {function?} value - Either a resource or a function that returns a proxy\n */\n injectProxy (name, value) {\n if (!value) {\n // Handle vue-style injections `.inject({ Foo, Bar, Baz })`\n for (const key of Object.keys(name)) {\n this.injectProxy(key, name[key]);\n }\n } else if (isParentOf(ResourceBase, value)) {\n this._injectProxy(name, value);\n } else {\n this._inject(name, value);\n }\n }\n\n /**\n * Inject a property into the instance\n *\n * @param {string|object} name - Name of the property\n * @param {function?} value - Any function that does not return a proxy\n *\n */\n inject (name, value) {\n this._inject(name, value, false);\n }\n\n /**\n * Revert a proxy injection in instance, won't delete non-injected properties\n *\n * @param {string} name - property name\n * @throws Error when the property was not injected\n */\n uninject (name) {\n const descriptor = Object.getOwnPropertyDescriptor(this, name);\n const value = descriptor.value || descriptor.get || {};\n\n if (!value.injected) {\n throw new Error(`Property \"${name}\" was not injected, can't un-inject`);\n }\n\n if (value.original) {\n Object.defineProperty(this, name, value.original);\n } else {\n Object.defineProperty(this, name, {\n // eslint-disable-next-line no-undefined\n value: undefined,\n enumerable: false,\n writable: true,\n });\n }\n }\n\n _injectProxy (name, value) {\n if (name === value.name) {\n name = `${name.replace(/^\\w/, c => c.toLowerCase())}s`;\n }\n\n const OwnableResource = require('./OwnableResource').default;\n\n if (hasTrait(value, OwnableResource)) {\n const OwnedResourceProxy = require('../proxy/OwnedResourceProxy').default;\n\n this._inject(name, function () {\n return new OwnedResourceProxy(this.api, this, value);\n });\n } else if (isParentOf(ResourceBase, value) && this._proxyResourceList) {\n // returns a SimpleResourceProxy\n this._inject(name, function () {\n return this._proxyResourceList(value);\n });\n } else {\n const ResourceProxy = require('../proxy/ResourceProxy').default;\n\n this._inject(name, function () {\n return new ResourceProxy(this, value);\n });\n }\n }\n\n _inject (name, value, getter = true) {\n const func = (...args) => value.apply(this, args);\n const original = Object.getOwnPropertyDescriptor(this, name);\n\n func.injected = true;\n\n // Store the original property descriptor if available\n if (original) {\n func.original = original;\n }\n\n Object.defineProperty(this, name, {\n enumerable: false,\n configurable: true,\n\n [getter ? 'get' : 'value']: func,\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OwnableResource from '../traits/OwnableResource';\nimport { mix } from '../utils/reflection';\nimport Layer from './Layer';\nimport CrudSetBase from './base/CrudSetBase';\nimport { OwnedResourceProxy } from '../proxy';\n\n/**\n * Layer\n * @extends CrudBase\n * @mixes OwnableResource\n * @mixes HandlesImages\n */\nexport default class LayerGroup extends mix(CrudSetBase, OwnableResource) {\n static get resourceName () {\n return 'layer-groups';\n }\n\n get items () {\n return new OwnedResourceProxy(this.api, this, this._Child);\n }\n\n get _Child () {\n return Layer;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Mapcreator from './Mapcreator';\nimport DownloadedResource from './resources/base/DownloadedResource';\nimport ResourceBase from './resources/base/ResourceBase';\nimport { isParentOf } from './utils/reflection';\nimport { FormData } from './utils/requests';\nimport { makeCancelable } from './utils/helpers';\n\n/**\n * Image resource handler\n * @protected\n */\nexport default class ImageHandler {\n /**\n * @param {Mapcreator} api - Api instance\n * @param {ResourceBase} target - Instance of target item\n */\n constructor (api, target) {\n if (!isParentOf(Mapcreator, api)) {\n throw new TypeError('Expected api to be of type Mapcreator');\n }\n\n if (!isParentOf(ResourceBase, target)) {\n throw new TypeError('Expected target to be of type ResourceBase');\n }\n\n this._api = api;\n this._target = target;\n }\n\n /**\n * Get api instance\n * @returns {Mapcreator} - Api instance\n */\n get api () {\n return this._api;\n }\n\n /**\n * Resource url, can be used in an image tag\n * @returns {string} - Resource url\n */\n get url () {\n return `${this._target.url}/image`;\n }\n\n /**\n * Delete image\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n delete () {\n // use the makeCancelable helper so we don't return the response object\n return makeCancelable(async signal => {\n await this.api.ky.delete(this.url, { signal });\n });\n }\n\n /**\n * Download the image\n * @returns {CancelablePromise<DownloadedResource>} - image\n * @throws {ApiError} - If the api returns errors\n * @example\n * // Browser\n * layer.imageHandler.download().then(image => {\n * $('img').src = image.createObjectURL();\n * });\n *\n * // NodeJs\n * layer.imageHandler.download().then({fileName, data} => {\n * fs.writeFileSync(fileName, data);\n * });\n */\n download () {\n return makeCancelable(async signal => {\n const response = await this.api.ky.get(this.url, { signal });\n\n return DownloadedResource.fromResponse(response);\n });\n }\n\n /**\n * Upload new image\n * @param {ArrayBuffer|ArrayBufferView|File|Blob|Buffer} image - Image file\n * @returns {CancelablePromise}\n * @throws {ApiError} - If the api returns errors\n */\n upload (image) {\n const body = new FormData();\n\n body.append('image', image, 'image');\n\n const headers = {};\n\n if (body.getHeaders) {\n Object.assign(headers, body.getHeaders());\n }\n\n return makeCancelable(async signal => {\n await this.api.ky.post(this.url, { headers, body, signal });\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Trait from './Trait';\nimport ImageHandler from '../ImageHandler';\n\n\n/**\n * Adds the imageHandler to a resource\n *\n * @mixin\n */\nexport default class HandlesImages extends Trait {\n /**\n * Handler for item image management\n * @returns {ImageHandler} - Image handler\n */\n get imageHandler () {\n return new ImageHandler(this.api, this);\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { isNode } from '../utils/node';\nimport DataStoreContract from './DataStoreContract';\n\n/**\n * @private\n */\nexport default class FileDriver extends DataStoreContract {\n /**\n * @param {String} path - File storage path\n * @inheritDoc\n */\n constructor (path = '.m4n') {\n super();\n\n this._path = path;\n }\n\n /**\n * File storage path\n * @returns {String} - path\n */\n get path () {\n return this._path;\n }\n\n /**\n * File storage path\n * @param {String} value - path\n */\n set path (value) {\n if (typeof value !== 'string') {\n throw new TypeError('Expected \"path\" value to be of type \"string\"');\n }\n\n this._path = value;\n }\n\n /**\n * @inheritDoc\n */\n static get available () {\n return isNode();\n }\n\n /**\n * @inheritDoc\n */\n static get secure () {\n return true;\n }\n\n /**\n * @inheritDoc\n */\n set (name, value) {\n const data = this._read();\n\n data[name] = value;\n\n this._write(data);\n }\n\n /**\n * @inheritDoc\n */\n get (name) {\n return this._read()[name];\n }\n\n /**\n * @inheritDoc\n */\n remove (name) {\n const data = this._read();\n\n delete data[name];\n\n this._write(data);\n }\n\n /**\n * @inheritDoc\n */\n clear () {\n this._write({});\n }\n\n /**\n * @inheritDoc\n */\n keys () {\n return Object.keys(this._read());\n }\n\n /**\n * Read file and parse\n * @returns {Object<String, String>} - Key, value object\n * @private\n */\n _read () {\n let data;\n\n try {\n data = this._fs.readFileSync(this.path).toString();\n } catch (e) {\n data = '{}';\n }\n\n if (!data) {\n return {};\n }\n\n return JSON.parse(data);\n }\n\n /**\n * Write data to file\n * @param {Object<String, String>} obj - Key, value object\n * @private\n */\n _write (obj) {\n const data = JSON.stringify(obj);\n const fd = this._fs.openSync(this.path, 'w');\n\n this._fs.writeSync(fd, data);\n this._fs.closeSync(fd);\n }\n\n /**\n * Get fs instance\n * @returns {fs} - fs instance\n * @private\n */\n get _fs () {\n if (!this.__fs) {\n // eslint-disable-next-line no-eval\n this.__fs = eval('require(\"fs\")');\n }\n\n return this.__fs;\n }\n}\n","module.exports = require(\"json-stable-stringify\");","module.exports = require(\"form-data\");","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OAuth from './OAuth';\nimport OAuthToken from './OAuthToken';\nimport StateContainer from './StateContainer';\nimport { encodeQueryString } from '../utils/requests';\nimport OAuthError from '../errors/OAuthError';\nimport { isNode } from '../utils/node';\nimport { title as titleCase } from 'case';\n\n/**\n * Implicit OAuth flow using redirection\n */\nexport default class ImplicitFlow extends OAuth {\n\n /**\n * Implicit authentication flow\n * @param {String} clientId - OAuth client id\n * @param {String} callbackUrl - callbackUrl for obtaining the token. This should be a\n * page with this script on it. If left empty the current\n * url will be used.\n * @param {Array<String>} scopes - A list of required scopes\n * @param {Boolean} useState - use state verification\n */\n constructor (clientId, callbackUrl = '', scopes = ['*'], useState = true) {\n super(clientId, scopes);\n\n if (isNode()) {\n throw new Error(`${this.constructor.name} can't be used under nodejs`);\n }\n\n this.path = '/oauth/authorize';\n\n this.callbackUrl = callbackUrl;\n this.useState = useState;\n\n if (!this.callbackUrl) {\n // Drop the anchor (if any)\n this.callbackUrl = window.location.toString().split('#')[0];\n }\n\n this._anchorParams = [\n 'access_token', 'token_type', 'expires_in',\n ];\n\n if (this.useState) {\n this._anchorParams.push('state');\n }\n\n if (this._anchorContainsOAuthResponse()) {\n const anchorParams = this._getOAuthAnchorParams();\n\n this._cleanAnchorParams();\n\n if (this.useState && !StateContainer.validate(anchorParams.state)) {\n throw Error('Invalid state in url');\n } else {\n this.token = OAuthToken.fromResponseObject(anchorParams);\n }\n }\n }\n\n /**\n * @inheritDoc\n */\n authenticate () {\n return new Promise((resolve, reject) => {\n if (this.authenticated) {\n resolve(this.token);\n } else if (this._anchorContainsError()) {\n const err = this._getError();\n\n this._cleanAnchorParams();\n\n reject(err);\n } else {\n window.location = this._buildRedirectUrl();\n }\n });\n }\n\n /**\n * Builds the url for redirection\n * @returns {String} - Redirect url\n * @protected\n */\n _buildRedirectUrl () {\n const queryParams = {\n 'client_id': this.clientId,\n 'redirect_uri': this.callbackUrl,\n 'response_type': 'token',\n 'scope': this.scopes.join(' '),\n };\n\n if (this.useState) {\n queryParams.state = StateContainer.generate();\n }\n\n return `${this.host + this.path}?${encodeQueryString(queryParams)}`;\n }\n\n /**\n * Builds an object containing all the anchor parameters\n * @param {String} query - Url hash\n * @returns {Object<String, String>} - Anchor parameters\n * @protected\n */\n _getAnchorParams (query = window.location.hash) {\n const out = {};\n\n query = query.replace(/^#\\/?/g, '');\n\n for (const raw of query.split('&')) {\n const pair = raw.split('=').map(decodeURIComponent);\n\n out[pair[0]] = pair[1];\n }\n\n return out;\n }\n\n /**\n * Fetch OAuth anchor params\n * @param {Object<String, String>} query - Optional override for the query to analyse, defaults to {@link ImplicitFlow#_getAnchorParams}\n * @returns {Object<String, String>} - List of OAuth anchor parameters\n * @protected\n */\n _getOAuthAnchorParams (query = this._getAnchorParams()) {\n return Object.keys(query)\n .filter(key => this._anchorParams.includes(key))\n .reduce((obj, key) => {\n obj[key] = query[key];\n\n return obj;\n }, {});\n }\n\n /**\n * Remove OAuth related anchor parameters\n * @protected\n */\n _cleanAnchorParams () {\n const anchorParams = this._getAnchorParams();\n const targets = this._anchorParams;\n\n // Just in case\n targets.push('state', 'error');\n\n for (const key of targets) {\n // Should silently fail when key doesn't exist\n delete anchorParams[key];\n }\n\n window.location.hash = encodeQueryString(anchorParams);\n }\n\n /**\n * Test if the anchor contains an OAuth response\n * @returns {Boolean} - If anchor tested positive for containing an OAuth response\n * @protected\n */\n _anchorContainsOAuthResponse () {\n const queryKeys = Object.keys(this._getOAuthAnchorParams());\n\n // Check if all the params are in the anchor\n return this._anchorParams.reduce((output, key) => output && queryKeys.includes(key), true);\n }\n\n /**\n * Test if the anchor contains an OAuth error\n * @returns {Boolean} - If anchor tested positive for containing an OAuth error\n * @protected\n */\n _anchorContainsError () {\n return Boolean(this._getAnchorParams().error);\n }\n\n /**\n * Get and return the error in the anchor\n * @returns {OAuthError} - OAuthError object\n * @protected\n */\n _getError () {\n if (!this._anchorContainsError()) {\n throw Error('No OAuthError found in anchor');\n }\n\n const params = this._getAnchorParams();\n\n if (params.message) {\n return new OAuthError(params.error, params.message);\n }\n\n return new OAuthError(params.error, titleCase(params.error));\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OAuthError from '../errors/OAuthError';\nimport ImplicitFlow from './ImplicitFlow';\nimport OAuthToken from './OAuthToken';\n\n/**\n * Implicit OAuth flow using a pop-up.\n */\nexport default class ImplicitFlowPopup extends ImplicitFlow {\n /**\n * Implicit pop-up authentication flow\n * @param {String} clientId - OAuth client id\n * @param {String} callbackUrl - callbackUrl for obtaining the token. This should be a\n * page with this script on it. If left empty the current\n * url will be used.\n * @param {Array<String>} scopes - A list of required scopes\n * @param {Boolean} useState - use state verification\n * @param {String} windowOptions - optional window options for the pop-up window\n */\n constructor (clientId, callbackUrl = '', scopes = ['*'], useState = false, windowOptions = process.env.WINDOW_OPTIONS) {\n super(clientId, callbackUrl, scopes, useState);\n\n this.windowOptions = windowOptions;\n\n if (window.name === ImplicitFlowPopup.popupWindowName) {\n throw new Error('We\\'re a flow popup');\n }\n }\n\n /**\n * Popup window name\n * @returns {String} - window.name of the created pop-up\n * @constant\n */\n static get popupWindowName () {\n return 'm4n_api_auth';\n }\n\n /**\n * @inheritDoc\n */\n authenticate () {\n if (window.name === ImplicitFlowPopup.popupWindowName) {\n return new Promise(() => {\n });\n }\n\n // Should be super.super.authenticate() :/\n if (this.authenticated) {\n return new Promise(resolve => {\n resolve(this.token);\n });\n }\n\n return new Promise((resolve, reject) => {\n const popup = window.open(\n this._buildRedirectUrl(),\n ImplicitFlowPopup.popupWindowName,\n this.windowOptions,\n );\n\n const ticker = setInterval(() => {\n if (popup.closed) {\n reject(new OAuthError('window_closed', 'Pop-up window was closed before data could be extracted'));\n }\n\n let done = false;\n\n try {\n done = !['', 'about:blank'].includes(popup.location.href);\n } catch (e) {\n // Nothing\n }\n\n if (done) {\n clearInterval(ticker);\n\n const data = this._getAnchorParams(popup.location.hash);\n\n popup.close();\n\n if (data.error) {\n reject(new OAuthError(data.error, data.message));\n } else {\n resolve(this.token = OAuthToken.fromResponseObject(data));\n }\n }\n }, 250);\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ky from 'ky-universal';\nimport OAuthError from '../errors/OAuthError';\nimport { isNode } from '../utils/node';\nimport OAuth from './OAuth';\nimport OAuthToken from './OAuthToken';\nimport { makeCancelable } from '../utils/helpers';\n\n\n/**\n * Password authentication flow\n */\nexport default class PasswordFlow extends OAuth {\n /**\n * @param {string} clientId - OAuth client id\n * @param {string} secret - OAuth secret\n * @param {string} username - Valid username (email)\n * @param {string} password - Valid password\n * @param {Array<string>} scopes - A list of required scopes\n */\n constructor (clientId, secret, username, password, scopes = ['*']) {\n super(clientId, scopes);\n\n this._secret = secret;\n this._username = username;\n this._password = password;\n\n this._path = '/oauth/token';\n\n // Because the client requires a secret HTTPS is highly recommended\n if (!isNode()) {\n console.warn('Using PasswordFlow in the browser is unrecommended');\n\n if (window.location.protocol !== 'https:') {\n console.warn('Page was not loaded using https. You\\'re most likely leaking secrets right now');\n }\n }\n }\n\n /**\n * it's a secret :o (client secret)\n * @returns {String} - secret\n */\n get secret () {\n return this._secret;\n }\n\n /**\n * Set client secret\n * @param {String} value - secret\n */\n set secret (value) {\n this._secret = value;\n }\n\n /**\n * Get the username for authentication\n * @returns {String} - Username (email)\n */\n get username () {\n return this._username;\n }\n\n /**\n * Get the username for authentication\n * @param {String} value - Username (email)\n */\n set username (value) {\n this._username = value;\n }\n\n /**\n * Get the password\n * @returns {String} - Password\n */\n get password () {\n return this._password;\n }\n\n /**\n * Set the password\n * @param {String} value - password\n */\n set password (value) {\n this._password = value;\n }\n\n /**\n * OAuth path\n * @returns {String} - OAuth path\n */\n get path () {\n return this._path;\n }\n\n /**\n * OAuth path\n * @param {String} value - OAuth path\n */\n set path (value) {\n this._path = value;\n }\n\n /**\n * Authenticate\n * @returns {CancelablePromise<OAuthToken>} - Response token\n * @throws {OAuthError}\n */\n authenticate () {\n const url = this.host + this.path;\n const json = {\n 'grant_type': 'password',\n 'client_id': this.clientId,\n 'client_secret': this._secret,\n 'username': this.username,\n 'password': this.password,\n 'scope': this.scopes.join(' '),\n };\n\n return makeCancelable(async signal => {\n const data = await ky.post(url, { json, signal }).json();\n\n if (data.error) {\n throw new OAuthError(data.error, data.message);\n }\n\n this.token = OAuthToken.fromResponseObject(data);\n this.token.scopes = this.scopes;\n\n return this.token;\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n// Core\nexport Mapcreator from './Mapcreator';\nexport RequestParameters from './RequestParameters';\nexport StorageManager from './storage/StorageManager';\n\n// Enums\nexport Enum from './enums/Enum';\nexport { DeletedState, ResultStatus } from './enums';\n\n// Flows\nexport OAuth from './oauth/OAuth';\nexport OAuthToken from './oauth/OAuthToken';\nexport ImplicitFlow from './oauth/ImplicitFlow';\nexport ImplicitFlowPopup from './oauth/ImplicitFlowPopup';\nexport PasswordFlow from './oauth/PasswordFlow';\nexport DummyFlow from './oauth/DummyFlow';\n\n// Exceptions\nexport ApiError from './errors/ApiError';\nexport * from './errors/AbstractError';\nexport ValidationError from './errors/ValidationError';\nexport StaticClassError from './errors/StaticClassError';\n\n// Resources\nexport * as resources from './resources';\n\n// Helpers\nexport * as helpers from './utils/helpers';\nexport ResourceLister from './ResourceLister';\nexport * as geo from './utils/geo';\n\n// Errors\nexport * as errors from './errors';\n\n// Proxies\nexport * as proxies from './proxy';\n\n\n/**\n * Package version\n * @private\n */\nexport const version = VERSION;\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://mapcreator/webpack/bootstrap","webpack://mapcreator/./src/utils/helpers.js","webpack://mapcreator/./src/utils/reflection.js","webpack://mapcreator/./src/resources/base/CrudBase.js","webpack://mapcreator/./src/resources/Choropleth.js","webpack://mapcreator/./src/resources/Faq.js","webpack://mapcreator/./src/resources/Highlight.js","webpack://mapcreator/./src/resources/InsetMap.js","webpack://mapcreator/./src/resources/LayerFaq.js","webpack://mapcreator/./src/resources/ProductTourStep.js","webpack://mapcreator/./src/resources/ProductTour.js","webpack://mapcreator/./src/resources/TagType.js","webpack://mapcreator/./src/resources/VectorHighlight.js","webpack://mapcreator/./src/resources/VectorChoropleth.js","webpack://mapcreator/./src/resources/index.js","webpack://mapcreator/./src/RequestParameters.js","webpack://mapcreator/./src/utils/requests.js","webpack://mapcreator/./src/resources/base/ResourceBase.js","webpack://mapcreator/external \"case\"","webpack://mapcreator/./src/enums/DeletedState.js","webpack://mapcreator/./src/enums/ResultStatus.js","webpack://mapcreator/./src/enums/JobShareVisibility.js","webpack://mapcreator/./src/enums/index.js","webpack://mapcreator/./src/traits/OwnableResource.js","webpack://mapcreator/external \"@babel/runtime/helpers/defineProperty\"","webpack://mapcreator/./src/errors/AbstractError.js","webpack://mapcreator/./src/proxy/OwnedResourceProxy.js","webpack://mapcreator/./src/utils/node.js","webpack://mapcreator/./src/resources/base/CrudSetItemBase.js","webpack://mapcreator/./src/proxy/ResourceProxy.js","webpack://mapcreator/./src/oauth/OAuthToken.js","webpack://mapcreator/./src/resources/base/CrudSetBase.js","webpack://mapcreator/./src/PaginatedResourceListing.js","webpack://mapcreator/./src/proxy/SimpleResourceProxy.js","webpack://mapcreator/./src/errors/OAuthError.js","webpack://mapcreator/./src/storage/CookiesDriver.js","webpack://mapcreator/./src/storage/DummyDriver.js","webpack://mapcreator/./src/storage/LocalStorageDriver.js","webpack://mapcreator/./src/storage/StorageManager.js","webpack://mapcreator/./src/resources/JobShare.js","webpack://mapcreator/./src/resources/Layer.js","webpack://mapcreator/./src/utils/base64.js","webpack://mapcreator/./src/resources/base/DownloadedResource.js","webpack://mapcreator/./src/utils/Unobservable.js","webpack://mapcreator/./src/enums/Enum.js","webpack://mapcreator/./src/oauth/OAuth.js","webpack://mapcreator/./src/utils/Logger.js","webpack://mapcreator/./src/Mapcreator.js","webpack://mapcreator/./src/errors/ApiError.js","webpack://mapcreator/./src/traits/Trait.js","webpack://mapcreator/./src/utils/hash.js","webpack://mapcreator/./src/storage/DataStoreContract.js","webpack://mapcreator/./src/errors/GeoError.js","webpack://mapcreator/./src/proxy/GeoResourceProxy.js","webpack://mapcreator/./src/resources/JobResult.js","webpack://mapcreator/./src/errors/StaticClassError.js","webpack://mapcreator/./src/errors/ValidationError.js","webpack://mapcreator/./src/resources/Color.js","webpack://mapcreator/./src/resources/DimensionSet.js","webpack://mapcreator/./src/resources/Dimension.js","webpack://mapcreator/./src/resources/Feature.js","webpack://mapcreator/./src/resources/FontFamily.js","webpack://mapcreator/./src/resources/Font.js","webpack://mapcreator/./src/resources/Job.js","webpack://mapcreator/./src/resources/JobType.js","webpack://mapcreator/./src/resources/Mapstyle.js","webpack://mapcreator/./src/resources/SvgSet.js","webpack://mapcreator/./src/resources/Svg.js","webpack://mapcreator/./src/resources/Tag.js","webpack://mapcreator/./src/resources/User.js","webpack://mapcreator/./src/resources/Permission.js","webpack://mapcreator/./src/resources/MapstyleSetColor.js","webpack://mapcreator/./src/resources/MapstyleSet.js","webpack://mapcreator/external \"ky-universal\"","webpack://mapcreator/./src/utils/StaticClass.js","webpack://mapcreator/external \"events\"","webpack://mapcreator/./src/resources/Organisation.js","webpack://mapcreator/./src/oauth/DummyFlow.js","webpack://mapcreator/./src/utils/geo.js","webpack://mapcreator/./src/resources/MessageVariant.js","webpack://mapcreator/./src/resources/Message.js","webpack://mapcreator/./src/utils/uuid.js","webpack://mapcreator/./src/oauth/StateContainer.js","webpack://mapcreator/./src/ResourceLister.js","webpack://mapcreator/./src/proxy/OrganisationProxy.js","webpack://mapcreator/./src/resources/Contract.js","webpack://mapcreator/./src/resources/Domain.js","webpack://mapcreator/./src/resources/JobRevision.js","webpack://mapcreator/./src/resources/Language.js","webpack://mapcreator/./src/resources/Notification.js","webpack://mapcreator/./src/resources/Role.js","webpack://mapcreator/./src/proxy/index.js","webpack://mapcreator/./src/errors/NodeError.js","webpack://mapcreator/./src/errors/index.js","webpack://mapcreator/./src/traits/Injectable.js","webpack://mapcreator/./src/resources/LayerGroup.js","webpack://mapcreator/./src/ImageHandler.js","webpack://mapcreator/./src/traits/HandlesImages.js","webpack://mapcreator/./src/storage/FileDriver.js","webpack://mapcreator/external \"json-stable-stringify\"","webpack://mapcreator/external \"form-data\"","webpack://mapcreator/./src/oauth/ImplicitFlow.js","webpack://mapcreator/./src/oauth/ImplicitFlowPopup.js","webpack://mapcreator/./src/oauth/PasswordFlow.js","webpack://mapcreator/./src/index.js"],"names":["getPaginatedRange","page","start","stop","Promise","out","data","promises","pageCount","i","push","get","rows","all","concat","map","x","delay","ms","resolve","setTimeout","wrapKyCancelable","fn","input","options","hasOwnProperty","controller","AbortController","promise","signal","cancel","abort","makeCancelable","serializeUTCDate","date","Date","TypeError","pad","num","slice","Math","max","String","length","getUTCFullYear","getUTCMonth","getUTCDate","join","getUTCHours","getUTCMinutes","getUTCSeconds","clone","clonePrivate","_clone","value","Array","isArray","output","key","Object","keys","startsWith","isParentOf","parent","child","constructor","name","getPrototypeOf","getTypeName","Empty","copyProps","target","source","getOwnPropertyNames","getOwnPropertySymbols","forEach","prop","match","defineProperty","getOwnPropertyDescriptor","mix","baseClass","mixins","cocktail","_Cocktail","args","mixin","prototype","initializer","filter","call","Trait","__mixins","hash","fnv32b","hasTrait","Subject","TraitClass","includes","CrudBase","ResourceBase","api","AbstractClassError","_buildCreateData","_updateProperties","_properties","_baseProperties","item","pos","self","indexOf","id","save","_update","_create","json","_prepareData","ky","post","baseUrl","patch","url","assign","delete","updateSelf","restore","put","instance","entries","Choropleth","resourceName","getJson","downloadPreview","response","DownloadedResource","fromResponse","Faq","Highlight","InsetMap","LayerFaq","CrudSetItemBase","parentKey","ProductTourStep","ProductTour","CrudSetBase","resourcePath","_Child","TagType","tags","_proxyResourceList","Tag","VectorHighlight","VectorChoropleth","base","RequestParameters","EventEmitter","object","_resolve","apply","perPage","offset","search","sort","deleted","extra","_page","_perPage","Number","process","_offset","maxPerPage","_maxPerPage","_search","_sort","_deleted","_extra","_validatePage","_validatePerPage","_validateOffset","_validateMaxPerPage","_validateSearch","_validateSort","_validateDeleted","_validateExtra","isNaN","isFinite","round","min","normalize","toString","query","split","toLowerCase","possible","DeletedState","values","_name","preventEvent","pascalCase","emit","encode","encodeQueryString","toParameterObject","toObject","reduce","obj","snakeCase","replace","snakeKey","copy","token","hashObject","resetDefaults","params","Key","camelCase","getFormData","windowTest","window","FormData","require","_encodeQueryString","paramsObject","_basePrefix","prefix","encodeURIComponent","shift","wrapKyPrefixUrl","test","unique","v","findIndex","vv","Injectable","newKey","_guessType","_api","fields","_applyProperty","enumerable","configurable","Boolean","deletedAt","_knownFields","Mapcreator","AbstractError","resourceUrlKey","protectedFields","readonly","sanitize","reset","field","refresh","desc","set","val","_url","endsWith","ownable","basePath","fieldNames","camelCaseKeys","ccKey","Target","seedData","SimpleResourceProxy","static","Constructor","AnonymousResource","Enum","ALL","BOTH","NONE","ONLY","ResultStatus","JobShareVisibility","OwnableResource","organisations","OrganisationProxy","Error","message","AbstractMethodError","OwnedResourceProxy","resource","sync","items","_modifyResourceLink","attach","detach","attachAll","detachAll","method","_getKeyValue","isNode","_","str","hasParent","parentId","ResourceProxy","_parseSelector","_seedData","new","glue","result","select","OAuthToken","type","expires","scopes","toUpperCase","now","toResponseObject","toQueryString","expired","storageName","fromResponseObject","JSON","parse","scope","toUTCString","StorageManager","secure","stringify","recover","foreignKeyName","_fk","PaginatedResourceListing","route","parameters","rowCount","_Target","_parameters","_pageCount","_rows","_data","_route","getPage","headers","totalPages","row","hasNext","hasPrevious","cacheToken","next","previous","altUrl","__baseUrl","list","resolver","_buildResolver","lister","maxRows","ResourceLister","paramType","OAuthError","error","CookiesDriver","DataStoreContract","__prefix","_prefix","location","protocol","available","cookie","document","_toObject","remove","regex","RegExp","cookies","trim","decodeURIComponent","DummyDriver","LocalStorageDriver","localStorage","setItem","getItem","removeItem","storage","StaticClass","FileDriver","file","dummy","best","C","JobShare","visibility","Layer","HandlesImages","base64Encode","buffer","base64","encodings","bytes","Uint8Array","byteLength","byteRemainder","mainLength","a","b","c","d","chunk","fileName","_type","_fileName","arrayBuffer","mimeType","contentType","contentDisposition","matches","exec","size","createObjectUrl","URL","createObjectURL","createBlob","Blob","toDataUri","toBase64","Unobservable","Symbol","toStringTag","enums","auto","constantCase","_iota","init","freeze","s","__iota","OAuth","clientId","authenticated","authenticate","forget","StateContainer","clean","logout","host","Accept","Authorization","importToken","Logger","logLevel","getLogLevels","log","level","_shouldLog","console","debug","info","warn","_logLevel","logLevels","targetLevel","currentLevel","auth","DummyFlow","_logger","wrapKy","version","_auth","logger","_host","saveToken","_ky","hooks","beforeRequest","request","afterResponse","_options","status","resetDelay","ValidationError","ApiError","create","timeout","retry","wrapper","requestMethods","path","choropleths","GeoResourceProxy","vectorChoropleths","colors","Color","tagTypes","contracts","Contract","dimensions","Dimension","dimensionSets","DimensionSet","faqs","features","Feature","featuredMaps","Job","fonts","Font","fontFamilies","FontFamily","highlights","vectorHighlights","insetMaps","jobs","jobShares","jobTypes","JobType","languages","Language","layers","layerFaqs","layerGroups","LayerGroup","mapstyles","Mapstyle","mapstyleSets","MapstyleSet","notifications","Notification","messages","Message","Organisation","permissions","Permission","productTours","productTourSteps","roles","Role","svgs","Svg","svgSets","SvgSet","users","User","getSvgSetTypes","getFontStyles","trace","_trace","_parseTrace","hasTrace","index","lastIndex","line","code","FNV1_32A_INIT","charCodeAt","sum","substr","clear","GeoError","hasForPoint","hasForBoundary","_hasForPoint","_hasForBoundary","forBoundary","topLeft","bottomRight","limit","boundary","GeoBoundary","r","forPoint","lat","lng","point","GeoPoint","JobResult","job","jobId","jobRevision","revisions","outputUrl","downloadOutput","outputUrlUrl","getOutputUrl","logUrl","downloadLog","previewUrl","dealWith","dealtWith","StaticClassError","schemaErrors","validationErrors","hasSchemaErrors","results","JobRevision","lastArchiveUrl","share","PRIVATE","ips","organisation","organisationId","language","languageCode","read","o","unread","MapstyleSetColor","mapstyleSetId","domains","Domain","getTree","root","_parseTree","rawNode","node","children","reject","_lat","_lng","toJSON","lat1","lng1","lat2","lng2","getCenter","MessageVariant","superObject","variants","variant","caseFn","res","from","Uuid","uuid4","getTime","performance","random","floor","nil","generate","uuid","validate","state","purge","found","tokens","Resource","_Resource","_key","_waiting","autoUpdate","_reset","hasMore","availableRows","waiting","_maxRows","raw","update","_availableRows","_autoUpdate","_boundUpdate","bind","on","off","_parameterToken","_realData","_keys","_fetchMore","e","endPage","ceil","responses","iterator","autoMaxRows","loadMore","default","_parent","_modifyLink","Type","isValid","revision","resultProxy","layer","build","callback","title","NodeError","injectable","_injectable","isProxy","injectProxy","inject","uninject","_injectProxy","_inject","descriptor","injected","original","undefined","writable","getter","func","ImageHandler","_target","download","upload","image","body","append","getHeaders","imageHandler","_path","_read","_write","_fs","readFileSync","fd","openSync","writeSync","closeSync","__fs","eval","ImplicitFlow","callbackUrl","useState","_anchorParams","_anchorContainsOAuthResponse","anchorParams","_getOAuthAnchorParams","_cleanAnchorParams","_anchorContainsError","err","_getError","_buildRedirectUrl","queryParams","_getAnchorParams","pair","targets","queryKeys","titleCase","ImplicitFlowPopup","windowOptions","popupWindowName","popup","open","ticker","setInterval","closed","done","href","clearInterval","close","PasswordFlow","secret","username","password","_secret","_username","_password","VERSION"],"mappings":"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","file":"bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 75);\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Get all the pages from a {@link PaginatedResourceListing} or a range\n * @param {Promise<PaginatedResourceListing>|PaginatedResourceListing} page - Promise that returns a {@link PaginatedResourceListing}\n * @param {?Number} [start=1] - Start page\n * @param {?Number} [stop] - Stop page, defaults to the page count if not filled in.\n * @returns {Promise<Array<ResourceBase>>} - multiple pages\n * @throws {ApiError} - If the api returns errors\n * @example\n * import { helpers } from \"@mapcreator/api\";\n *\n * const promise = api.users.list(1, 50); // 50 per page is more efficient\n *\n * helpers.getPaginatedRange(promise).then(data => {\n * data.map(row => `[${row.id}] ${row.name}`) // We just want the names\n * .forEach(console.log) // Log the names and ids of every user\n * })\n */\nexport async function getPaginatedRange (page, start = 1, stop) {\n // Resolve promise if any\n if (page instanceof Promise) {\n page = await page;\n }\n\n const out = page.data;\n const promises = [];\n\n // Handle defaults\n start = start || page.page;\n stop = stop || page.pageCount;\n\n if (start === page.page) {\n start++;\n }\n\n // Get all pages\n for (let i = start; i <= stop; i++) {\n promises.push(page.get(i));\n }\n\n // Resolve\n const rows = await Promise.all(promises);\n\n return out.concat(...rows.map(x => x.data));\n}\n\n/**\n * Async delay\n * @private\n * @param {number} ms - milliseconds\n * @returns {Promise}\n */\nexport const delay = ms => new Promise(resolve => setTimeout(resolve, ms));\n\n/**\n * Wraps around ky to make it return cancelable requests\n * @param {function(*=, *=): Response} fn - ky instance\n * @returns {function(*=, *=): Response}\n * @private\n */\nexport function wrapKyCancelable (fn) {\n return (input, options = {}) => {\n if (typeof options === 'object' && options.hasOwnProperty('signal')) {\n return fn(input, options);\n }\n\n const controller = new AbortController();\n const promise = fn(input, { signal: controller.signal, ...options });\n\n promise.cancel = () => controller.abort();\n\n return promise;\n };\n}\n\n/**\n * @typedef {Promise} CancelablePromise\n * @property {function(): void} cancel - Cancel the promise\n */\n\n/**\n * Makes a promise cancelable by passing it a signal\n * @param {function} fn - async method\n * @returns {CancelablePromise}\n * @private\n */\nexport function makeCancelable (fn) {\n const controller = new AbortController();\n\n const promise = fn(controller.signal);\n\n if (promise instanceof Promise) {\n promise.cancel = () => controller.abort();\n }\n\n return promise;\n}\n\n/**\n * Convert Date into server format\n * @param {Date} date - Target\n * @returns {String} - Formatted date\n * @private\n */\nexport function serializeUTCDate (date) {\n if (!(date instanceof Date)) {\n throw new TypeError('Expected date to be of type Date');\n }\n\n const pad = num => `00${num}`.slice(-Math.max(String(num).length, 2));\n\n let out = [\n date.getUTCFullYear(),\n date.getUTCMonth() + 1,\n date.getUTCDate(),\n ].map(pad).join('-');\n\n out += ` ${[\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n ].map(pad).join(':')}`;\n\n return out;\n}\n\nexport function clone (input, clonePrivate = true) {\n const _clone = value => clone(value, clonePrivate);\n\n if (typeof input !== 'object' || input === null) {\n return input;\n } else if (Array.isArray(input)) {\n return input.map(_clone);\n }\n\n const output = {};\n\n for (const key of Object.keys(input)) {\n if (!clonePrivate && key.startsWith('_')) {\n continue;\n }\n\n output[key] = _clone(input[key]);\n }\n\n return output;\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Trait from '../traits/Trait';\nimport { fnv32b } from './hash';\n\n/**\n * Tests if the parent is a parent of child\n * @param {Class|object} parent - Instance or Class\n * @param {Class|object} child - Instance or Class\n * @returns {boolean} - is parent a parent of child\n * @private\n * @example\n * class A {}\n * class B extends A {}\n * class C extends B {}\n *\n * isParentOf(A, C) // true\n * isParentOf(B, C) // true\n * isParentOf(C, C) // true\n * isParentOf(B, A) // false\n */\nexport function isParentOf (parent, child) {\n if (parent === null || child === null) {\n return false;\n }\n\n parent = typeof parent === 'function' ? parent : parent.constructor;\n child = typeof child === 'function' ? child : child.constructor;\n\n do {\n if (child.name === parent.name) {\n return true;\n }\n\n child = Object.getPrototypeOf(child);\n } while (child.name !== '');\n\n return false;\n}\n\n\n/**\n * Get the name of the value type\n * @param {*} value - Any value\n * @private\n * @returns {string} - Value type name\n */\nexport function getTypeName (value) {\n if (typeof value === 'undefined') {\n return 'undefined';\n }\n\n value = typeof value === 'function' ? value : value.constructor;\n\n return value.name;\n\n}\n\n/**\n * Helper class for mix\n * @see {@link mix}\n */\nclass Empty {\n}\n\n/**\n * Copy properties from source to target\n * @param {object} target - Object for the properties to be copied to\n * @param {object} source - Object containing properties to be copied\n */\nfunction copyProps (target, source) {\n Object\n .getOwnPropertyNames(source)\n .concat(Object.getOwnPropertySymbols(source))\n .forEach(prop => {\n if (!prop.match(/^(?:constructor|initializer|prototype|arguments|caller|name|bind|call|apply|toString|length)$/)) {\n Object.defineProperty(target, prop, Object.getOwnPropertyDescriptor(source, prop));\n }\n });\n}\n\n/**\n * Mix traits into the target class\n * @param {Class} baseClass - Target base class for the traits to be applied to\n * @param {Class<Trait>} mixins - Traits to be applied\n * @returns {Class} - Constructor with any traits applied\n * @private\n */\nexport function mix (baseClass, ...mixins) {\n const cocktail = class _Cocktail extends (baseClass || Empty) {\n constructor (...args) {\n super(...args);\n\n mixins\n .map(mixin => mixin.prototype.initializer)\n .filter(initializer => typeof initializer === 'function')\n .forEach(initializer => initializer.call(this));\n }\n };\n\n\n for (const mixin of mixins) {\n if (!isParentOf(Trait, mixin)) {\n throw new TypeError(`Expected mixin to implement Trait for ${mixin.name}`);\n }\n\n copyProps(cocktail.prototype, mixin.prototype);\n copyProps(cocktail, mixin);\n }\n\n cocktail.__mixins = mixins;\n\n const hash = fnv32b(mixins.map(x => x.name).join(','));\n\n Object.defineProperty(cocktail, 'name', { value: `Cocktail_${hash}` });\n\n return cocktail;\n}\n\n/**\n * Checks if the target has a certain trait.\n *\n * @param {Class|Object} Subject - Instance or class\n * @param {Class<Trait>} TraitClass - Trait to check for\n * @returns {boolean} - If the subject has the trait\n * @private\n */\nexport function hasTrait (Subject, TraitClass) {\n Subject = typeof Subject === 'function' ? Subject : Subject.constructor;\n\n do {\n if (Array.isArray(Subject.__mixins) && Subject.__mixins.includes(TraitClass)) {\n return true;\n }\n\n Subject = Object.getPrototypeOf(Subject);\n } while (Subject.name !== '');\n\n return false;\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { AbstractClassError } from '../../errors';\nimport ResourceBase from './ResourceBase';\nimport { makeCancelable, serializeUTCDate } from '../../utils/helpers';\n\n/**\n * Base of all resource items that support Crud operations\n * @abstract\n */\nexport default class CrudBase extends ResourceBase {\n /**\n * @param {Mapcreator} api - Api instance\n * @param {Object<String, *>} data - Item data\n */\n constructor (api, data = {}) {\n super(api, data);\n\n if (this.constructor === CrudBase) {\n throw new AbstractClassError();\n }\n }\n\n /**\n * Build data for create operation\n * @returns {Object<String, *>} - Create data\n * @protected\n */\n _buildCreateData () {\n this._updateProperties();\n\n const out = {};\n const keys = [].concat(\n Object.keys(this._properties),\n Object.keys(this._baseProperties),\n ).filter((item, pos, self) => self.indexOf(item) === pos);\n\n for (const key of keys) {\n out[key] = this._properties[key] || this._baseProperties[key];\n }\n\n delete out.id;\n\n return out;\n }\n\n /**\n * Save item. This will create a new item if `id` is unset\n * @returns {CancelablePromise<CrudBase>} - Current instance\n * @throws {ApiError} - If the api returns errors\n * @throws {ValidationError} - If the submitted data isn't valid\n */\n save () {\n return this.id ? this._update() : this._create();\n }\n\n /**\n * Store new item\n * @returns {CancelablePromise<CrudBase>} - Current instance\n * @throws {ApiError} - If the api returns errors\n * @throws {ValidationError} - If the submitted data isn't valid\n * @private\n */\n _create () {\n return makeCancelable(async signal => {\n const json = this._prepareData(this._buildCreateData());\n\n const { data } = await this.api.ky.post(this.baseUrl, { json, signal }).json();\n\n this._properties = {};\n this._baseProperties = data;\n\n this._updateProperties();\n\n return this;\n });\n }\n\n /**\n * Update existing item\n * @returns {CancelablePromise<CrudBase>} - Current instance\n * @throws {ApiError} - If the api returns errors\n * @throws {ValidationError} - If the submitted data isn't valid\n * @protected\n */\n _update () {\n this._updateProperties();\n\n return makeCancelable(async signal => {\n // We'll just fake it, no need to bother the server\n // with an empty request.\n if (Object.keys(this._properties).length === 0) {\n return this;\n }\n\n const json = this._prepareData(this._properties);\n\n await this.api.ky.patch(this.url, { json, signal });\n\n // Reset changes\n Object.assign(this._baseProperties, this._properties);\n this._properties = {};\n\n if ('updated_at' in this._baseProperties) {\n this._baseProperties['updated_at'] = new Date();\n }\n\n return this;\n });\n }\n\n /**\n * Delete item\n * @param {Boolean} [updateSelf=true] - Update current instance (set the deletedAt property)\n * @returns {CancelablePromise<CrudBase>} - Current instance\n * @throws {ApiError} - If the api returns errors\n * @throws {ValidationError} - If the submitted data isn't valid\n */\n delete (updateSelf = true) {\n return makeCancelable(async signal => {\n await this.api.ky.delete(this.url, { signal });\n\n if (updateSelf) {\n this._baseProperties['deleted_at'] = new Date();\n }\n\n return this;\n });\n }\n\n /**\n * Restore item\n * @param {Boolean} [updateSelf=true] - Update current instance (unset the deletedAt property)\n * @returns {CancelablePromise<CrudBase>} - New restored instance\n * @throws {ApiError} - If the api returns errors\n * @throws {ValidationError} - If the submitted data isn't valid\n */\n restore (updateSelf = true) {\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.put(this.url, { signal }).json();\n const instance = new this.constructor(this.api, data);\n\n if (updateSelf) {\n this._properties = {};\n this._baseProperties = data;\n\n this._updateProperties();\n }\n\n return instance;\n });\n }\n\n /**\n * Prepare data to be sent to the api\n * @param {Object} data\n * @returns {Object} prepared\n * @private\n */\n _prepareData (data) {\n const output = {};\n\n for (const [key, value] of Object.entries(data)) {\n if (value instanceof Date) {\n output[key] = serializeUTCDate(value);\n } else {\n output[key] = value;\n }\n }\n\n return output;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport DownloadedResource from './base/DownloadedResource';\nimport ResourceBase from './base/ResourceBase';\nimport { makeCancelable } from '../utils/helpers';\n\n/**\n * Choropleth resource\n */\nexport default class Choropleth extends ResourceBase {\n static get resourceName () {\n return 'choropleths';\n }\n\n /**\n * Get the inset map json\n * @returns {CancelablePromise<Object>} - Choropleth json\n * @throws {ApiError} - If the api returns errors\n */\n getJson () {\n return makeCancelable(signal => this.api.ky.get(`${this.url}/json`, { signal }).json());\n }\n\n /**\n * Download the choropleth preview\n * @returns {CancelablePromise<DownloadedResource>} - Choropleth preview\n * @throws {ApiError} - If the api returns errors\n */\n downloadPreview () {\n return makeCancelable(async signal => {\n const response = await this.api.ky.get(`${this.url}/preview`, { signal });\n\n return DownloadedResource.fromResponse(response);\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudBase from './base/CrudBase';\n\n/**\n * Faq resource\n */\nexport default class Faq extends CrudBase {\n static get resourceName () {\n return 'faqs';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ResourceBase from './base/ResourceBase';\n\nexport default class Highlight extends ResourceBase {\n static get resourceName () {\n return 'highlights';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ResourceBase from './base/ResourceBase';\nimport { makeCancelable } from '../utils/helpers';\n\nexport default class InsetMap extends ResourceBase {\n static get resourceName () {\n return 'inset-maps';\n }\n\n /**\n * Get the inset map json\n * @returns {CancelablePromise<Object>} - Inset map json\n * @throws {ApiError} - If the api returns errors\n */\n getJson () {\n return makeCancelable(signal => this.api.ky.get(`${this.url}/json`, { signal }).json());\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2022, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudSetItemBase from './base/CrudSetItemBase';\n\n/**\n * LayerFaq\n * @extends CrudSetItemBase\n */\nexport default class LayerFaq extends CrudSetItemBase {\n static get resourceName () {\n return 'layer-faqs';\n }\n\n static get parentKey () {\n return 'layer_group_id';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { mix } from '../utils/reflection';\nimport CrudSetItemBase from './base/CrudSetItemBase';\n\n/**\n * @extends CrudSetItemBase\n */\nexport default class ProductTourStep extends mix(CrudSetItemBase) {\n static get resourceName () {\n return 'product-tours/steps';\n }\n\n static get parentKey () {\n return 'product_tour_id';\n }\n}\n\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { mix } from '../utils/reflection';\nimport CrudSetBase from './base/CrudSetBase';\nimport ProductTourStep from './ProductTourStep';\n\n/**\n * Mapstyle set\n * @extends CrudSetBase\n */\nexport default class ProductTour extends mix(CrudSetBase) {\n static get resourcePath () {\n return '/product-tours/{id}';\n }\n\n static get resourceName () {\n return 'product-tours';\n }\n\n get _Child () {\n return ProductTourStep;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudBase from './base/CrudBase';\nimport Tag from './Tag';\n\n/**\n * TagType resource\n * @mixes CrudSetBase\n */\nexport default class TagType extends CrudBase {\n static get resourcePath () {\n return '/tags/types/{id}';\n }\n\n static get resourceName () {\n return 'tag-types';\n }\n\n /**\n * Get the list of tags that are attached to this type\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get tags () {\n return this._proxyResourceList(Tag, `${this.url}/tags`);\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n\nimport ResourceBase from './base/ResourceBase';\n\nexport default class VectorHighlight extends ResourceBase {\n static get resourceName () {\n return 'highlights/vector';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n\nimport ResourceBase from './base/ResourceBase';\n\nexport default class VectorChoropleth extends ResourceBase {\n static get resourceName () {\n return 'choropleths/vector';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nexport Choropleth from './Choropleth';\nexport Color from './Color';\nexport Contract from './Contract';\nexport Dimension from './Dimension';\nexport DimensionSet from './DimensionSet';\nexport Domain from './Domain';\nexport Faq from './Faq';\nexport Feature from './Feature';\nexport Font from './Font';\nexport FontFamily from './FontFamily';\nexport Highlight from './Highlight';\nexport InsetMap from './InsetMap';\nexport Job from './Job';\nexport JobResult from './JobResult';\nexport JobRevision from './JobRevision';\nexport JobShare from './JobShare';\nexport JobType from './JobType';\nexport Language from './Language';\nexport Layer from './Layer';\nexport LayerFaq from './LayerFaq';\nexport Mapstyle from './Mapstyle';\nexport MapstyleSet from './MapstyleSet';\nexport Message from './Message';\nexport Notification from './Notification';\nexport Organisation from './Organisation';\nexport Permission from './Permission';\nexport ProductTour from './ProductTour';\nexport ProductTourStep from './ProductTourStep';\nexport Role from './Role';\nexport Svg from './Svg';\nexport SvgSet from './SvgSet';\nexport Tag from './Tag';\nexport TagType from './TagType';\nexport User from './User';\nexport VectorHighlight from './VectorHighlight';\nexport VectorChoropleth from './VectorChoropleth';\n\nimport CrudBase from './base/CrudBase';\nimport CrudSetBase from './base/CrudSetBase';\nimport ResourceBase from './base/ResourceBase';\n\n/**\n * @private\n */\nexport const base = {\n CrudBase, CrudSetBase, ResourceBase,\n};\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n\nimport { camel as camelCase, pascal as pascalCase, snake as snakeCase } from 'case';\nimport { EventEmitter } from 'events';\nimport { DeletedState } from './enums';\nimport { hashObject } from './utils/hash';\nimport { getTypeName } from './utils/reflection';\nimport { encodeQueryString } from './utils/requests';\n\n/**\n * Used for keeping track of the request parameters\n *\n * @fires RequestParameters#change\n * @fires RequestParameters#change:page\n * @fires RequestParameters#change:perPage\n * @fires RequestParameters#change:search\n * @fires RequestParameters#change:sort\n * @fires RequestParameters#change:deleted\n * @fires RequestParameters#change:extra\n */\nexport default class RequestParameters extends EventEmitter {\n /**\n * RequestParameters constructor\n * @param {Object} object - properties\n */\n constructor (object = {}) {\n super();\n\n // Apply defaults\n RequestParameters.keys().forEach(x => this._resolve(x));\n\n // Apply properties\n this.apply(object);\n }\n\n // region instance\n // region instance getters\n /**\n * Get page number\n * @returns {Number} - Page number\n * @throws {TypeError}\n */\n get page () {\n return this._resolve('page');\n }\n\n /**\n * Get rows per page\n * @returns {Number} - Per page\n * @throws {TypeError}\n */\n get perPage () {\n return this._resolve('perPage');\n }\n\n /**\n * Get pagination offset\n * @returns {Number} - Offset\n * @throws {TypeError}\n */\n get offset () {\n return this._resolve('offset');\n }\n\n /**\n * Search query\n * @returns {Object<String, String|Array<String>>} - Query\n * @throws {TypeError}\n */\n get search () {\n return this._resolve('search');\n }\n\n /**\n * Get sort options\n * @returns {Array<String>} - Per page\n * @throws {TypeError}\n */\n get sort () {\n return this._resolve('sort');\n }\n\n /**\n * If deleted items should be shown\n * @returns {String} - Deleted items filter state\n * @see {@link DeletedState}\n */\n get deleted () {\n return this._resolve('deleted');\n }\n\n /**\n * Extra parameters\n * @returns {Object} - Extra parameters\n */\n get extra () {\n return this._resolve('extra');\n }\n\n // endregion instance getters\n\n // region instance setters\n /**\n * Page number\n * @param {Number} value - Page number\n */\n set page (value) {\n this._update('page', value);\n }\n\n /**\n * Rows per page\n * @param {Number} value - Per page\n */\n set perPage (value) {\n this._update('perPage', value);\n }\n\n /**\n * Pagination offset\n * @param {Number} value - Offset\n */\n set offset (value) {\n this._update('offset', value);\n }\n\n /**\n * Search query\n * @param {Object<String, String|Array<String>>} value - Search query\n */\n set search (value) {\n this._update('search', value);\n }\n\n /**\n * Sort query\n * @param {Array<String>} value - Sort query\n */\n set sort (value) {\n this._update('sort', value);\n }\n\n /**\n * Deleted items filter state\n * @param {String} value - Deleted items filter state\n * @see {@link DeletedState}\n */\n set deleted (value) {\n this._update('deleted', value);\n }\n\n /**\n * Extra request parameters\n * @param {Object} value - Extra request parameters\n */\n set extra (value) {\n this._update('extra', value);\n }\n\n // endregion instance setters\n // endregion instance\n\n // region static\n // region getters\n /**\n * Default page number\n * @returns {Number} - Page number\n */\n static get page () {\n return RequestParameters._page || 1;\n }\n\n /**\n * Default per page\n * @returns {Number} - Per page\n */\n static get perPage () {\n return RequestParameters._perPage || Number(process.env.PER_PAGE) || 12;\n }\n\n /**\n * Default pagination offset\n * @returns {Number} - Offset\n */\n static get offset () {\n return RequestParameters._offset || 0;\n }\n\n /**\n * Gets the maximum allowed value for perPage\n * Some users will have a special permission that allows them to fetch more than 50 resources at once\n * @returns {Number} - Maximum amount of resources per page\n */\n static get maxPerPage () {\n return RequestParameters._maxPerPage || 50;\n }\n\n /**\n * Default search query\n * @returns {Object<String, String|Array<String>>} - Search query\n */\n static get search () {\n return RequestParameters._search || {};\n }\n\n /**\n * Default sort query\n * @returns {Array<String>} - Sort query\n */\n static get sort () {\n return RequestParameters._sort || [];\n }\n\n /**\n * Default deleted items filter state\n * @returns {String|undefined} - Deleted items filter state\n */\n static get deleted () {\n return RequestParameters._deleted || void 0;\n }\n\n /**\n * Default extra request parameters\n * @returns {Object} - Extra request parameters\n */\n static get extra () {\n return RequestParameters._extra || {};\n }\n\n // endregion getters\n\n // region setters\n /**\n * Default page number\n * @param {Number} value - Page number\n */\n static set page (value) {\n RequestParameters._page = RequestParameters._validatePage(value);\n }\n\n /**\n * Default per page\n * @param {Number} value - Per page\n */\n static set perPage (value) {\n RequestParameters._perPage = RequestParameters._validatePerPage(value);\n }\n\n /**\n * Default pagination offset\n * @param {Number} value - Offset\n */\n static set offset (value) {\n RequestParameters._offset = RequestParameters._validateOffset(value);\n }\n\n /**\n * Sets the maximum allowed value for perPage\n * Some users will have a special permission that allows them to fetch more than 50 resources at once\n * @param {Number} value - Maximum amount of resources per page\n */\n static set maxPerPage (value) {\n RequestParameters._maxPerPage = RequestParameters._validateMaxPerPage(value);\n }\n\n /**\n * Default search query\n * @param {Object<String, String|Array<String>>} value - Search query\n */\n static set search (value) {\n RequestParameters._search = RequestParameters._validateSearch(value);\n }\n\n /**\n * Default sort query\n * @param {Array<String>} value - Sort query\n */\n static set sort (value) {\n RequestParameters._sort = RequestParameters._validateSort(value);\n }\n\n /**\n * Default deleted items filter state\n * @param {String} value - Deleted items filter state\n */\n static set deleted (value) {\n RequestParameters._deleted = RequestParameters._validateDeleted(value);\n }\n\n /**\n * Default extra request parameters\n * @param {Object} value - Extra request parameters\n */\n static set extra (value) {\n RequestParameters._extra = RequestParameters._validateExtra(value);\n }\n\n // endregion setters\n // endregion static\n\n // region validators\n /**\n * Validators should work the same as laravel's ::validate method. This means\n * this means that they will throw a TypeError or return a normalized result.\n */\n\n static _validatePage (value) {\n if (typeof value !== 'number') {\n throw new TypeError(`Expected page to be of type 'number' instead got '${typeof value}'`);\n }\n\n if (value < 0) {\n throw new TypeError('Page must be a positive number');\n }\n\n if (Number.isNaN(value) || !Number.isFinite(value)) {\n throw new TypeError('Page must be a real number');\n }\n\n if (Math.round(value) !== value) {\n throw new TypeError('Page must be a natural number');\n }\n\n return Math.round(value);\n }\n\n static _validatePerPage (value) {\n if (typeof value !== 'number') {\n throw new TypeError(`Expected per page to be of type 'Number' instead got '${getTypeName(value)}'`);\n }\n\n if (value <= 0) {\n throw new TypeError('Per page must be greater than zero');\n }\n\n if (Number.isNaN(value) || !Number.isFinite(value)) {\n throw new TypeError('Per page must be a real number');\n }\n\n if (Math.round(value) !== value) {\n throw new TypeError('Per page must be a natural number');\n }\n\n // Upper limit is 50 by default\n value = Math.min(RequestParameters.maxPerPage, value);\n\n return value;\n }\n\n static _validateOffset (value) {\n if (typeof value !== 'number') {\n throw new TypeError(`Expected offset to be of type 'Number' instead got '${getTypeName(value)}'`);\n }\n\n if (value < 0) {\n throw new TypeError('Offset must be a positive number');\n }\n\n if (Number.isNaN(value) || !Number.isFinite(value)) {\n throw new TypeError('Offset must be a real number');\n }\n\n if (Math.round(value) !== value) {\n throw new TypeError('Offset must be a natural number');\n }\n\n return value;\n }\n\n static _validateMaxPerPage (value) {\n if (typeof value !== 'number') {\n throw new TypeError(`Expected page to be of type 'Number' instead got '${getTypeName(value)}'`);\n }\n\n if (value < 1) {\n throw new TypeError('Value must be greater or equal to 1');\n }\n\n return value;\n }\n\n static _validateSearch (value) {\n if (typeof value !== 'object' || Array.isArray(value)) {\n throw new TypeError(`Expected value to be of type \"Object\" got \"${getTypeName(value)}\"`);\n }\n\n // Normalization macro\n const normalize = x => typeof x === 'number' ? x.toString() : x;\n\n for (let key of Object.keys(value)) {\n key = normalize(key);\n value[key] = normalize(value[key]);\n\n if (typeof key !== 'string') {\n throw new TypeError(`Expected key to be of type \"String\" got \"${getTypeName(key)}\"`);\n }\n\n if (Array.isArray(value[key])) {\n if (value[key].length > 0) {\n for (const query of value[key]) {\n if (!['string', 'number', 'boolean'].includes(typeof query) && query !== null) {\n throw new TypeError(`Expected query for \"${key}\" to be of type \"String\", \"Boolean\", \"Number\" or \"null\" got \"${getTypeName(query)}\"`);\n }\n }\n } else {\n // Drop empty nodes\n delete value[key];\n }\n } else if (value[key] === null) {\n delete value[key];\n } else if (!['string', 'number', 'boolean'].includes(typeof value[key]) && value[key] !== null) {\n throw new TypeError(`Expected query value to be of type \"String\", \"Boolean\", \"Number\", \"Array\" or \"null\" got \"${getTypeName(value[key])}\"`);\n }\n }\n\n return value;\n }\n\n static _validateSort (value) {\n if (typeof value === 'string') {\n return this._validateSort(value.split(','));\n }\n\n if (!(value instanceof Array)) {\n throw new TypeError(`Expected sort value to be of type \"Array\" got \"${getTypeName(value)}\"`);\n }\n\n // Array keys type checking\n value\n .filter(x => typeof x !== 'string')\n .forEach(x => {\n throw new TypeError(`Expected sort array values to be of type \"String\" got \"${getTypeName(x)}\"`);\n });\n\n // Don't do regex matching because it's something\n // we can just let the server do for us.\n\n return value;\n }\n\n static _validateDeleted (value) {\n if (typeof value === 'undefined') {\n return value;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError(`Expected deleted to be of type \"string\" got \"${getTypeName(value)}\". See: DeletedState`);\n }\n\n value = value.toLowerCase();\n\n const possible = DeletedState.values();\n\n if (!possible.includes(value)) {\n throw new TypeError(`Expected deleted to be one of ${possible.join(', ')}, got ${value}`);\n }\n\n return value;\n }\n\n static _validateExtra (value) {\n if (typeof value !== 'object') {\n throw new TypeError(`Expected extra to be of type 'object', got '${getTypeName(value)}'`);\n }\n\n return value;\n }\n\n // endregion validators\n\n _resolve (name) {\n const _name = `_${name}`;\n\n if (!this[_name]) {\n // Confuse esdoc\n (this || {})[_name] = RequestParameters[name];\n }\n\n return this[_name];\n }\n\n _update (name, value, preventEvent = false) {\n const _name = `_${name}`;\n\n value = RequestParameters[`_validate${pascalCase(name)}`](value);\n (this || {})[_name] = value; // Weird syntax confuses esdoc\n\n if (!preventEvent) {\n /**\n * Change event.\n *\n * @event RequestParameters#change\n * @type {Array<object>}\n * @property {string} name - Parameter name\n * @property {*} value - New value\n */\n this.emit('change', [{ name, value }]);\n this.emit(`change:${name}`, value);\n }\n\n return value;\n }\n\n // region utils\n /**\n * Urlencode parameters\n * @returns {string} - HTTP query\n */\n encode () {\n return encodeQueryString(this.toParameterObject());\n }\n\n /**\n * Convert to object\n * @returns {Object} - Object\n */\n toObject () {\n return RequestParameters\n .keys()\n .reduce((obj, key) => {\n obj[snakeCase(key)] = this._resolve(key);\n\n return obj;\n }, {});\n }\n\n /**\n * Convert to object\n * @returns {Object} - Object\n */\n toParameterObject () {\n const data = {};\n\n RequestParameters\n .keys()\n .forEach(key => {\n // Skip extra key\n if (key === 'extra') {\n return;\n }\n\n data[snakeCase(key)] = this._resolve(key);\n });\n\n // Fix column names for sort\n data.sort = data.sort.map(snakeCase).map(x => x.replace(/^_/, '-')).join(',');\n\n if (data.offset === 0) {\n delete data.offset;\n }\n\n // Fix column names for search\n for (const key of Object.keys(data.search)) {\n const snakeKey = key.split(',').map(snakeCase).join(',');\n\n if (key !== snakeKey) {\n data.search[snakeKey] = data.search[key];\n delete data.search[key];\n }\n }\n\n // Cast search values\n for (const key of Object.keys(data.search)) {\n if (typeof data.search[key] === 'boolean') {\n data.search[key] = Number(data.search[key]);\n }\n\n if (data.search[key] === null) {\n data.search[key] = '';\n }\n }\n\n\n // Overwrite using extra properties\n const extra = this._resolve('extra');\n\n for (const key of Object.keys(extra)) {\n data[key] = extra[key];\n }\n\n for (const key of Object.keys(data)) {\n if (typeof data[key] === 'undefined') {\n delete data[key];\n }\n }\n\n return data;\n }\n\n /**\n * Copy object\n * @returns {RequestParameters} - Copy\n */\n copy () {\n return new RequestParameters(this.toObject());\n }\n\n /**\n * Different parameters\n * @returns {Array<String>} - keys\n */\n static keys () {\n // enumeration is disabled for properties\n return [\n 'page',\n 'perPage',\n 'offset',\n 'search',\n 'sort',\n 'deleted',\n 'extra',\n ];\n }\n\n /**\n * Generates a cache token\n * @returns {string} - Cache token\n */\n token () {\n const data = this.toObject();\n\n delete data.page;\n delete data['per_page'];\n\n return hashObject(data);\n }\n\n /**\n * Resets all parameters back to default\n */\n static resetDefaults () {\n for (const key of RequestParameters.keys()) {\n delete RequestParameters[`_${key}`];\n }\n }\n\n /**\n * Apply parameters from object\n * @param {object|RequestParameters} params - parameters\n * @returns {Object[]} - Array containing the updated values\n * @example\n * const params = new RequestParameters({perPage: 12});\n *\n * params.perPage === 12;\n *\n * params.apply({perPage: 50});\n *\n * params.perPage === 50;\n */\n apply (params) {\n if (params instanceof RequestParameters) {\n params = params.toObject();\n }\n\n const out = [];\n\n for (const key of Object.keys(params)) {\n const Key = camelCase(key);\n\n if (key[0] === '_' || !RequestParameters.keys().includes(Key)) {\n continue;\n }\n\n out.push({\n name: Key,\n value: this._update(Key, params[key], true),\n });\n }\n\n this.emit('change', out);\n\n for (const { name, value } of out) {\n this.emit(`change:${name}`, value);\n }\n\n return out;\n }\n\n // endregion utils\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { windowTest } from './node';\n\nfunction getFormData () {\n if (windowTest('FormData')) {\n return window.FormData;\n }\n\n return require('form-data');\n}\n\n/**\n * @private\n */\nexport const FormData = getFormData();\n\n/**\n * Encodes an object to a http query string with support for recursion\n * @param {Object<string, *>} paramsObject - data to be encoded\n * @param {Array<string>} _basePrefix - Used internally for tracking recursion\n * @returns {string} - encoded http query string\n *\n * @see http://stackoverflow.com/a/39828481\n * @private\n */\nfunction _encodeQueryString (paramsObject, _basePrefix = []) {\n return Object\n .keys(paramsObject)\n .sort()\n .map(key => {\n const prefix = _basePrefix.slice(0);\n\n if (typeof paramsObject[key] === 'object' && paramsObject[key] !== null) {\n prefix.push(key);\n\n return _encodeQueryString(paramsObject[key], prefix);\n }\n\n prefix.push(key);\n\n let out = '';\n\n out += encodeURIComponent(prefix.shift()); // main key\n out += prefix.map(item => `[${encodeURIComponent(item)}]`).join(''); // optional array keys\n\n const value = paramsObject[key];\n\n if (value !== null && typeof value !== 'undefined') {\n out += `=${encodeURIComponent(value)}`; // value\n }\n\n return out;\n }).join('&');\n}\n\n/**\n * Encodes an object to a http query string with support for recursion\n * @param {object<string, *>} paramsObject - data to be encoded\n * @returns {string} - encoded http query string\n *\n * @private\n */\nexport function encodeQueryString (paramsObject) {\n const query = _encodeQueryString(paramsObject);\n\n // Removes any extra unused &'s.\n return query.replace(/^&*|&+(?=&)|&*$/g, '');\n}\n\n/**\n * Wraps around ky to ensure that the prefix is correctly set\n * @param {function(*=, *=): Response} fn - ky instance\n * @param {string} baseUrl - url to be prefixed\n * @returns {function(*=, *=): Response}\n * @private\n */\nexport function wrapKyPrefixUrl (fn, baseUrl) {\n return function (input, options) {\n if (typeof input === 'string' && !/^https?:\\/\\//.test(input)) {\n if (!input.startsWith('/')) {\n input = `/${input}`;\n }\n\n input = baseUrl + input;\n }\n\n return fn(input, options);\n };\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { camel as camelCase, snake as snakeCase } from 'case';\nimport { AbstractClassError, AbstractError } from '../../errors/AbstractError';\nimport Mapcreator from '../../Mapcreator';\nimport SimpleResourceProxy from '../../proxy/SimpleResourceProxy';\nimport Injectable from '../../traits/Injectable';\nimport { fnv32b } from '../../utils/hash';\nimport { isParentOf, mix } from '../../utils/reflection';\nimport { clone, makeCancelable } from '../../utils/helpers';\n\nfunction unique (input) {\n return input.filter((v, i) => input.findIndex(vv => vv === v) === i);\n}\n\n/**\n * Resource base\n * @abstract\n */\nexport default class ResourceBase extends mix(null, Injectable) {\n /**\n * @param {Mapcreator} api - Api instance\n * @param {Object<String, *>} data - Item data\n */\n constructor (api, data = {}) {\n super();\n\n if (this.constructor === ResourceBase) {\n throw new AbstractClassError();\n }\n\n this.api = api;\n\n // De-reference\n data = clone(data);\n\n // Normalize keys to snake_case\n // Fix data types\n for (const key of Object.keys(data)) {\n const newKey = snakeCase(key);\n\n if (camelCase(newKey) in this) {\n delete data[key];\n\n continue;\n }\n\n data[newKey] = this._guessType(newKey, data[key]);\n\n if (newKey !== key) {\n delete data[key];\n }\n }\n\n this._baseProperties = data || {};\n this._properties = {};\n this._api = api;\n\n const fields = Object.keys(this._baseProperties);\n\n // Apply properties\n for (const key of fields) {\n this._applyProperty(key);\n }\n\n // Add deleted field if possible\n if (fields.includes('deleted_at')) {\n Object.defineProperty(this, 'deleted', {\n enumerable: true,\n configurable: true,\n\n get: () => Boolean(this.deletedAt),\n });\n }\n\n /* We keep track of any new fields by recording the\n * keys the object currently has. We don't need no\n * fancy-pants observers, Proxies etc.\n * snake_case only\n */\n this._knownFields = Object.keys(this).filter(x => x[0] !== '_');\n }\n\n /**\n * Get api instance\n * @returns {Mapcreator} - Api instance\n */\n get api () {\n return this._api;\n }\n\n /**\n * Set the api instance\n * @param {Mapcreator} value - Api instance\n */\n set api (value) {\n if (!isParentOf(Mapcreator, value)) {\n throw new TypeError('Expected api to be of type Mapcreator or null');\n }\n\n this._api = value;\n }\n\n /**\n * Resource path template\n * @returns {String} - Path template\n */\n static get resourcePath () {\n return `/${this.resourceName}/{id}`;\n }\n\n /**\n * Resource name\n * @returns {String} - Resource name\n * @abstract\n */\n static get resourceName () {\n throw new AbstractError();\n }\n\n /**\n * Returns the url key of the resource\n * @returns {String} - Resource key\n */\n static get resourceUrlKey () {\n return 'id';\n }\n\n /**\n * Protected read-only fields\n * @returns {Array<string>} - Array containing protected read-only fields\n * @protected\n */\n static get protectedFields () {\n return ['id', 'created_at', 'updated_at', 'deleted_at'];\n }\n\n /**\n * Returns if the resource is readonly\n * @returns {boolean} - Readonly\n */\n static get readonly () {\n return false;\n }\n\n /**\n * Moves new fields to this._properties and turns them into a getter/setter\n * @protected\n */\n _updateProperties () {\n // Build a list of new fields\n let fields = Object.keys(this)\n .filter(x => x[0] !== '_')\n .filter(x => !this._knownFields.includes(x));\n\n // Move the pointer from this to the properties object\n for (const key of fields) {\n const newKey = snakeCase(key);\n\n this._properties[newKey] = this[key];\n delete this[key];\n\n this._applyProperty(newKey);\n this._knownFields.push(newKey);\n }\n\n // Build a list of new BaseProperty fields\n fields = Object.keys(this._baseProperties)\n .filter(x => !this._knownFields.includes(camelCase(x)));\n\n for (const key of fields) {\n this._applyProperty(key);\n this._knownFields.push(key);\n }\n\n this._knownFields = unique(this._knownFields);\n }\n\n /**\n * Clean up instance and commit all changes locally.\n * This means that any changed fields will be marked\n * as unchanged whilst keeping their new values. The\n * changes will not be saved.\n */\n sanitize () {\n this._updateProperties();\n Object.assign(this._baseProperties, this._properties);\n this._properties = {};\n }\n\n /**\n * Resets model instance to it's original state\n * @param {Array<string>|string|null} [fields=null] - Fields to reset, defaults to all fields\n */\n reset (fields = null) {\n this._updateProperties();\n\n if (typeof fields === 'string') {\n this.reset([fields]);\n } else if (fields === null) {\n this._properties = {}; // Delete all\n } else if (Array.isArray(fields)) {\n fields\n .map(String)\n .map(snakeCase)\n .forEach(field => delete this._properties[field]);\n }\n }\n\n /**\n * Clone the object\n * @returns {ResourceBase} - Exact clone of the object\n */\n clone () {\n this._updateProperties();\n\n const out = new this.constructor(this.api, this._baseProperties);\n\n for (const key of Object.keys(this._properties)) {\n out[key] = this._properties[key];\n }\n\n return out;\n }\n\n /**\n * Refresh the resource by requesting it from the server again\n * @param {Boolean} updateSelf - Update the current instance\n * @returns {CancelablePromise<ResourceBase>} - Refreshed instance\n * @throws {ApiError} - If the api returns errors\n */\n refresh (updateSelf = true) {\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.get(this.url, { signal }).json();\n\n if (updateSelf) {\n this._properties = {};\n this._baseProperties = data;\n\n this._updateProperties();\n }\n\n return new this.constructor(this._api, data);\n });\n }\n\n /**\n * Create proxy for property\n * @param {string} key - property key\n * @private\n */\n _applyProperty (key) {\n const desc = {\n enumerable: true,\n configurable: true,\n\n get: () => {\n if (this._properties.hasOwnProperty(key)) {\n return this._properties[key];\n }\n\n return this._baseProperties[key];\n },\n };\n\n if (!this.constructor.protectedFields.includes(key) && !this.constructor.readonly) {\n desc.set = val => {\n this._properties[key] = this._guessType(key, val);\n delete this._url; // Clears url cache\n };\n }\n\n const newKey = camelCase(key);\n\n Object.defineProperty(this, newKey, desc);\n }\n\n /**\n * Guess type based on property name\n * @param {string} name - Field name\n * @param {*} value - Field Value\n * @protected\n * @returns {*} - Original or converted value\n */\n _guessType (name, value) {\n if (name.endsWith('_at') || name.startsWith('date_')) {\n return typeof value === 'string' ? new Date(value.replace(' ', 'T')) : value;\n } else if (/(_|^)id$/.test(name) && value !== null) {\n return Number.isFinite(Number(value)) ? Number(value) : value;\n }\n\n return value;\n }\n\n /**\n * If the resource can be owned by an organisation\n * @returns {boolean} - Can be owned by an organisation\n */\n get ownable () {\n return false;\n }\n\n /**\n * Auto generated resource url\n * @returns {string} - Resource url\n */\n get url () {\n if (!this._url) {\n let url = `${this._api.url}${this.constructor.resourcePath}`;\n\n // Find and replace any keys\n url = url.replace(/{(\\w+)}/g, (match, key) => this[camelCase(key)]);\n\n this._url = url;\n }\n\n return this._url;\n }\n\n /**\n * Auto generated Resource base url\n * @returns {string} - Resource base url\n */\n get baseUrl () {\n const basePath = this.constructor.resourcePath.match(/^(\\/[^{]+\\b)/)[1];\n\n return `${this._api.url}${basePath}`;\n }\n\n /**\n * List fields that contain object data\n * @returns {Array<String>} - A list of fields\n */\n get fieldNames () {\n const keys = unique([\n ...Object.keys(this._baseProperties),\n ...Object.keys(this._properties),\n ]);\n\n return keys.map(camelCase);\n }\n\n /**\n * String representation of the resource, similar to Python's __repr__\n * @returns {string} - Resource name and id\n */\n toString () {\n return `${this.constructor.name}(${this[this.resourceUrlKey]})`;\n }\n\n /**\n * Transform instance to object\n * @param {boolean} [camelCaseKeys=false] - camelCase object keys\n * @returns {{}} - Object\n */\n toObject (camelCaseKeys = false) {\n this._updateProperties();\n\n const out = { ...this._baseProperties, ...this._properties };\n\n if (camelCaseKeys) {\n for (const key of Object.keys(out)) {\n const ccKey = camelCase(key);\n\n if (key !== ccKey) {\n out[ccKey] = out[key];\n\n delete out[key];\n }\n }\n }\n\n return out;\n }\n\n /**\n * Macro for resource listing\n * @param {string|Class<ResourceBase>} Target - Target object\n * @param {?String} url - Target url, if null it will guess\n * @param {object} seedData - Internal use, used for seeding SimpleResourceProxy::new\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n * @protected\n */\n _proxyResourceList (Target, url = null, seedData = {}) {\n if (!url) {\n url = `${Target.resourceName.replace(/s+$/, '')}s`;\n }\n\n if (typeof url === 'string' && !url.startsWith('/') && !url.match(/https?:/)) {\n url = `${this.url}/${url}`;\n }\n\n return new SimpleResourceProxy(this.api, Target, url, seedData);\n }\n\n /**\n * Static proxy generation\n * @param {string|Class} Target - Constructor or url\n * @param {Class?} Constructor - Constructor for a resource that the results should be cast to\n * @param {Object<string, *>} seedData - Optional data to seed the resolved resources\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n * @example\n * user.static('jobs').lister();\n *\n * @example\n * class FooBar extends ResourceBase {\n * static get resourceName() {\n * return 'custom';\n * }\n * }\n *\n * api.static(FooBar)\n * .get(1)\n * .then(console.log);\n */\n static (Target, Constructor = ResourceBase, seedData = {}) {\n let url;\n\n if (typeof Target === 'string') {\n url = `${this.url}/${Target}`;\n\n const name = Constructor.name || 'AnonymousResource';\n\n Target = class AnonymousResource extends Constructor {\n static get resourceName () {\n return Object.getPrototypeOf(this).resourceName || 'anonymous';\n }\n\n static get resourcePath () {\n return url;\n }\n };\n\n Object.defineProperty(Target, 'name', {\n value: `${name}_${fnv32b(url)}`,\n });\n }\n\n if (!isParentOf(ResourceBase, Target)) {\n throw new TypeError('Expected Target to be of type String or ResourceBase constructor');\n }\n\n return this._proxyResourceList(Target, url, seedData);\n }\n}\n","module.exports = require(\"case\");","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Enum from './Enum';\n\n/**\n * Enum containing the possible different values for {@link RequestParameters#deleted}\n * @enum {string}\n * @property {string} ALL - Don't discriminate between deleted items and non-deleted resources\n * @property {string} BOTH - Don't discriminate between deleted items and non-deleted resources\n * @property {string} NONE - Don't return deleted resources\n * @property {string} ONLY - Only return deleted resources\n * @readonly\n */\nexport const DeletedState = new Enum({\n ALL: 'all',\n BOTH: 'all',\n NONE: 'none',\n ONLY: 'only',\n});\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Enum from './Enum';\n\n/**\n * Enum containing the possible different values for {@link RequestParameters#deleted}\n * @enum {string}\n * @property {string} QUEUED - Job has been queued\n * @property {string} PROCESSING - Job is processing\n * @property {string} COMPLETED - Job has been completed\n * @property {string} CANCELED - Job has been canceled\n * @property {string} FAILED - Job has failed\n * @readonly\n */\nexport const ResultStatus = new Enum([\n 'queued', 'processing',\n 'completed', 'canceled',\n 'failed',\n], true);\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Enum from './Enum';\n\n/**\n * Enum containing the possible different visibilities for a {@link JobShare}\n * @enum {string}\n * @property {string} PRIVATE - Anyone outside of the organisation could open the map, the map is not visible within the organisation folder\n * @property {string} PUBLIC - Anyone who has that link can open the map\n * @property {string} ORGANISATION - This map only opens if a user is within the same organisation\n * @readonly\n */\nexport const JobShareVisibility = new Enum(['private', 'organisation', 'public'], true);\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nexport Enum from './Enum';\nexport { DeletedState } from './DeletedState';\nexport { ResultStatus } from './ResultStatus';\nexport { JobShareVisibility } from './JobShareVisibility';\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OrganisationProxy from '../proxy/OrganisationProxy';\nimport Trait from './Trait';\n\n/**\n * Provides a {@link ResourceBase} with functions for dealing with being ownable by an organisation\n * @mixin\n */\nexport default class OwnableResource extends Trait {\n /**\n * Get the list of associated organisations\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get organisations () {\n return new OrganisationProxy(this.api, this);\n }\n\n /**\n * If the resource can be owned by an organisation\n * @returns {boolean} - Can be owned by an organisation\n */\n get ownable () {\n return true;\n }\n}\n","module.exports = require(\"@babel/runtime/helpers/defineProperty\");","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Thrown by abstract methods and classes\n */\nexport class AbstractError extends Error {\n /**\n * AbstractError constructor\n * @param {?String} message - Error message\n */\n constructor (message = 'Unimplemented') {\n super(message);\n }\n}\n\n/**\n * Thrown upon invocation of an abstract class\n * @example\n * class FooBar {\n * constructor() {\n * if (this.constructor === FooBar) {\n * throw new AbstractClassError();\n * }\n * }\n * }\n */\nexport class AbstractClassError extends AbstractError {\n constructor () {\n super('Can not make an instance of an abstract class');\n }\n}\n\n/**\n * Thrown upon invocation of an abstract method\n */\nexport class AbstractMethodError extends AbstractError {\n constructor () {\n super('Can not call an abstract method');\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport SimpleResourceProxy from './SimpleResourceProxy';\nimport { makeCancelable } from '../utils/helpers';\n\n/**\n * Used for proxying resource => organisation\n */\nexport default class OwnedResourceProxy extends SimpleResourceProxy {\n /**\n * OwnedResourceProxy Constructor\n * @param {Mapcreator} api - Api instance\n * @param {ResourceBase} parent - Parent instance\n * @param {Class<ResourceBase>} Target - Target constructor\n */\n constructor (api, parent, Target) {\n const resource = Target.resourceName.replace(/s+$/, '');\n const url = `${parent.url}/${resource}s`;\n\n super(api, Target, url);\n }\n\n /**\n * Sync items to the organisation\n * @param {Array<ResourceBase>|Array<number>|ResourceBase|number} items - List of items to sync\n * @throws {TypeError}\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n sync (items) {\n return this._modifyResourceLink(items, 'PATCH');\n }\n\n /**\n * Attach items to the organisation\n * @param {Array<ResourceBase>|Array<number>|ResourceBase|number} items - List of items to attach\n * @throws {TypeError}\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n attach (items) {\n return this._modifyResourceLink(items, 'POST');\n }\n\n /**\n * Detach items from the organisation\n * @param {Array<ResourceBase>|Array<number>|ResourceBase|number} items - List of items to unlink\n * @throws {TypeError}\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n detach (items) {\n return this._modifyResourceLink(items, 'DELETE');\n }\n\n /**\n * Attach parent resource to all organisations\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n attachAll () {\n return makeCancelable(async signal => {\n await this.api.ky.post(`${this.baseUrl}/all`, { signal });\n });\n }\n\n /**\n * Detach parent resource to all organisations\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n detachAll () {\n return makeCancelable(async signal => {\n await this.api.ky.delete(`${this.baseUrl}/all`, { signal });\n });\n }\n\n /**\n * @param {Array<ResourceBase>|Array<number>|ResourceBase|number} items - List of items to sync, attach or detach\n * @param {string} method - http method\n * @throws {ApiError} - If the api returns errors\n * @throws {TypeError}\n * @returns {CancelablePromise}\n * @private\n */\n _modifyResourceLink (items, method) {\n if (!Array.isArray(items)) {\n items = [items];\n }\n\n const keys = items\n .map(x => OwnedResourceProxy._getKeyValue(x))\n .map(Number)\n .filter(x => !Number.isNaN(x));\n\n return makeCancelable(async signal => {\n await this.api.ky(this.baseUrl, {\n method,\n signal,\n json: { keys },\n });\n });\n }\n\n static _getKeyValue (item) {\n if (['number', 'string'].includes(typeof item)) {\n return item;\n }\n\n const key = item.constructor.resourceUrlKey || 'id';\n\n if (typeof item[key] !== 'undefined') {\n return item[key];\n }\n\n throw new TypeError('Expected items to be of type Array<ResourceBase>, Array<number>, ResourceBase or number}');\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Test if the application is running under nodejs\n * @returns {boolean} - Is the application running under node?\n * @see https://nodejs.org\n * @private\n */\nexport function isNode () {\n try {\n return Object.prototype.toString.call(typeof process === 'undefined' ? 0 : process) === '[object process]';\n } catch (_) {\n return false;\n }\n}\n\n/**\n * Quickly check if the window contains a variable\n * @param {string} str - target variable\n * @returns {boolean} - If the window contains the variable\n * @private\n */\nexport function windowTest (str) {\n return typeof window !== 'undefined' && typeof window[str] !== 'undefined';\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { AbstractClassError } from '../../errors/AbstractError';\nimport CrudBase from './CrudBase';\nimport { camel as camelCase } from 'case';\n\n/**\n * Items that are part of a set\n * @abstract\n */\nexport default class CrudSetItemBase extends CrudBase {\n /**\n * @param {Mapcreator} api - Api instance\n * @param {Object<String, *>} data - Item data\n */\n constructor (api, data = {}) {\n super(api, data);\n\n if (this.constructor === CrudBase) {\n throw new AbstractClassError();\n }\n }\n\n get hasParent () {\n const parentKey = camelCase(this.constructor.parentKey);\n\n return this.hasOwnProperty(parentKey);\n }\n\n /**\n * Get the parent id\n * @returns {number|undefined} - Parent number\n */\n get parentId () {\n if (this.hasParent) {\n const parentKey = camelCase(this.constructor.parentKey);\n\n return Number(this[parentKey]);\n }\n\n return void 0;\n }\n\n /**\n * Get the parent key\n * @returns {string} - Parent key\n */\n static get parentKey () {\n return this.resourceName.replace(/s$/, '_set_id');\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { encodeQueryString } from '../utils/requests';\nimport SimpleResourceProxy from './SimpleResourceProxy';\nimport { makeCancelable } from '../utils/helpers';\n\n/**\n * Proxy for accessing resource. This will make sure that they\n * are properly wrapped before the promise resolves.\n * @protected\n */\nexport default class ResourceProxy extends SimpleResourceProxy {\n /**\n * Parse selector\n * @param {Number|String|Object} [id=] - The resource id to be requested\n * @returns {Object} - Parsed selector\n * @private\n */\n _parseSelector (id) {\n if (id === '' || id === null) {\n return {};\n }\n\n switch (typeof id) {\n case 'number':\n case 'string':\n return { [this.Target.resourceUrlKey]: id };\n case 'object':\n return id;\n default:\n return {};\n }\n }\n\n /**\n * Get target resource\n * @param {Number|String|Object} [id=] - The resource id to be requested\n * @param {String} [deleted=null] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<ResourceBase>} - Target resource\n * @throws {ApiError} - If the api returns errors\n */\n get (id, deleted = null) {\n return makeCancelable(async signal => {\n const data = { ...this._seedData, ...this._parseSelector(id) };\n let url = this.new(data).url;\n\n if (typeof deleted === 'string') {\n const glue = url.includes('?') ? '&' : '?';\n\n url += glue + encodeQueryString({ deleted });\n }\n\n const { data: result } = await this.api.ky.get(url, { signal }).json();\n\n return this.new(result);\n });\n }\n\n /**\n * Select target resource without obtaining data\n * @param {Number|String} [id=] - Resource id\n * @returns {ResourceBase} - Empty target resource\n * @example\n * api.users.select('me').colors().then(doSomethingCool);\n */\n select (id) {\n const data = { ...this._seedData, ...this._parseSelector(id) };\n\n return this.new(data);\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport StorageManager from '../storage/StorageManager';\nimport { encodeQueryString } from '../utils/requests';\n\n/**\n * Oauth token container\n */\nexport default class OAuthToken {\n /**\n * @param {String} token - OAuth token\n * @param {String} [type=Bearer] - token type\n * @param {Date|Number} [expires=5 days] - expire time in seconds or Date\n * @param {Array<string>} [scopes=[]] - Any scopes\n */\n constructor (token, type = 'Bearer', expires = 432000, scopes = []) {\n this.scopes = scopes;\n this.token = token;\n this.type = type.toLowerCase().replace(/(\\s|^)\\w/g, x => x.toUpperCase());\n\n if (typeof expires === 'number') {\n const ms = expires * 1000;\n\n // Expires is in seconds\n this.expires = new Date(Date.now() + ms);\n } else if (expires instanceof Date) {\n this.expires = expires;\n } else {\n throw new TypeError('Expires not of type Date or Number');\n }\n }\n\n /**\n * String representation of the token, usable in the Authorization header\n * @returns {string} - String representation\n */\n toString () {\n return `${this.type} ${this.token}`;\n }\n\n /**\n * Get equivalent OAuth response object\n * @returns {{access_token: (String|*), token_type: String, expires_in: Number, scope: (Array.<String>|Array|*)}} - Raw response object\n */\n toResponseObject () {\n return {\n 'access_token': this.token,\n 'token_type': this.type.toLowerCase(),\n 'expires_in': this.expires - Date.now(),\n 'scope': this.scopes,\n };\n }\n\n /**\n * Export oauth response query string\n * @returns {string} - OAuth response query\n */\n toQueryString () {\n return encodeQueryString(this.toResponseObject());\n }\n\n /**\n * If the token has expired\n * @returns {Boolean} - expired\n */\n get expired () {\n return new Date() > this.expires;\n }\n\n /**\n * Internal storage key name\n * @returns {String} - storage name\n * @constant\n */\n static get storageName () {\n return 'api_token';\n }\n\n /**\n * Build instance from response object\n * @param {String|Object} data - object or JSON string\n * @returns {OAuthToken} - New OAuthToken instance\n */\n static fromResponseObject (data) {\n if (typeof data === 'string') {\n data = JSON.parse(data);\n }\n\n // Default expires = 5 days\n let expires = 432000;\n\n if (typeof data['exipires_in'] !== 'undefined') {\n expires = Number(data['expires_in']);\n } else if (typeof data.expires === 'string') {\n expires = new Date(data.expires);\n }\n\n return new OAuthToken(\n data['access_token'],\n data['token_type'],\n expires,\n data.scope || [],\n );\n }\n\n /**\n * Store the token for later recovery. Token will be stored in HTTPS cookie if possible.\n * @param {String} name - db key name\n * @throws {OAuthToken#recover}\n */\n save (name = OAuthToken.storageName) {\n const data = {\n token: this.token,\n type: this.type,\n expires: this.expires.toUTCString(),\n scopes: this.scopes,\n };\n\n // Third parameter is only used when we're using cookies\n StorageManager.secure.set(name, JSON.stringify(data), this.expires);\n }\n\n /**\n * Recover a token by looking through the HTTPS cookies and localStorage\n * @param {String} name - Storage key name\n * @returns {OAuthToken|null} - null if none could be recovered\n * @throws {OAuthToken#save}\n */\n static recover (name = OAuthToken.storageName) {\n const data = StorageManager.secure.get(name);\n\n if (!data) {\n return null;\n }\n\n const obj = JSON.parse(data);\n const instance = new OAuthToken(obj.token, obj.type, new Date(obj.expires), obj.scopes || []);\n\n if (instance.expired) {\n return null;\n }\n\n return instance;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { AbstractError } from '../../errors/AbstractError';\nimport CrudBase from './CrudBase';\nimport { camel as camelCase } from 'case';\n\n/**\n * Crud base for resource sets\n * @abstract\n */\nexport default class CrudSetBase extends CrudBase {\n\n /**\n * Get items associated with the set\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get items () {\n const url = `${this.url}/items`;\n const data = {};\n\n data[this.constructor.foreignKeyName] = this.id;\n\n return this._proxyResourceList(this._Child, url, data);\n }\n\n /**\n * Child constructor\n * @returns {Class<ResourceBase>} - Child constructor\n * @abstract\n * @protected\n */\n get _Child () {\n throw new AbstractError();\n }\n\n /**\n * Get the foreign key name\n * @returns {string} - Foreign key name\n * @example\n * api.fontFamilies.select(1).constructor.foreignKeyName === 'fontFamilyId'\n */\n static get foreignKeyName () {\n if (!this._fk) {\n let key = this.name; // ex: FontFamily\n\n key = camelCase(key); // ex: fontFamily\n\n this._fk = `${key}Id`;\n }\n\n return this._fk;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Mapcreator from './Mapcreator';\nimport RequestParameters from './RequestParameters';\nimport { isParentOf } from './utils/reflection';\nimport { makeCancelable } from './utils/helpers';\n\n/**\n * Proxy for accessing paginated resources\n */\nexport default class PaginatedResourceListing {\n /**\n * @param {Mapcreator} api - Instance of the api\n * @param {String} route - Resource route\n * @param {Class<ResourceBase>} Target - Wrapper target\n * @param {RequestParameters} parameters - Request parameters\n * @param {Number} pageCount - Resolved page count\n * @param {Number} rowCount - Resolved rowCount\n * @param {Array<ResourceBase>} data - Resolved data\n * @private\n */\n constructor (api, route, Target, parameters, pageCount = null, rowCount = 0, data = []) {\n if (!isParentOf(Mapcreator, api)) {\n throw new TypeError('Expected api to be of type Mapcreator');\n }\n\n if (!isParentOf(RequestParameters, parameters)) {\n parameters = new RequestParameters(parameters);\n }\n\n this._api = api;\n\n this.route = route;\n this._Target = Target;\n this._parameters = parameters;\n this._pageCount = pageCount;\n this._rows = rowCount;\n this._data = data;\n }\n\n /**\n * Get api instance\n * @returns {Mapcreator} - Api instance\n */\n get api () {\n return this._api;\n }\n\n /**\n * Target route\n * @returns {String} - Url\n */\n get route () {\n return this._route;\n }\n\n /**\n * Override the target route\n * @param {String} value - route\n */\n set route (value) {\n if (!value.startsWith('https://') && !value.startsWith('http://')) {\n if (!value.startsWith('/')) {\n value = `/${value}`;\n }\n\n value = `${this._api.url}${value}`;\n }\n\n this._route = value;\n }\n\n /**\n * Target to wrap results in\n * @returns {Class<ResourceBase>} - Target constructor\n */\n get Target () {\n return this._Target;\n }\n\n /**\n * Request parameters\n * @returns {RequestParameters} - Request parameters\n */\n get parameters () {\n return this._parameters;\n }\n\n /**\n * Request parameters\n * @param {RequestParameters} value - Request parameters\n */\n set parameters (value) {\n this._parameters = value;\n }\n\n /**\n * Current page number\n * @returns {Number} - Current page\n */\n get page () {\n return this.parameters.page;\n }\n\n /**\n * Maximum amount of items per page\n * @returns {Number} - Amount of items\n */\n get perPage () {\n return this.parameters.perPage;\n }\n\n /**\n * Set sort direction\n * @returns {Array<String>} - Sort\n * @example\n * const sort = ['-name', 'id']\n */\n get sort () {\n return this.parameters.sort;\n }\n\n /**\n * Current sorting value\n * @param {Array<String>} value - Sort\n */\n set sort (value) {\n this.parameters.sort = value;\n }\n\n /**\n * Deleted items filter state\n * @returns {String} value - Deleted items filter state\n * @see {@link DeletedState}\n */\n get deleted () {\n return this.parameters.deleted;\n }\n\n /**\n * Deleted items filter state\n * @param {String} value - Deleted items filter state\n * @see {@link DeletedState}\n */\n set deleted (value) {\n this.parameters.deleted = value;\n }\n\n /**\n * Amount of pages available\n * @returns {Number} - Page count\n */\n get pageCount () {\n return this._pageCount;\n }\n\n /**\n * Page data\n * @returns {Array<ResourceBase>} - Wrapped data\n */\n get data () {\n return this._data;\n }\n\n /**\n * Row count\n * @returns {Number} - Row count\n */\n get rows () {\n return this._rows;\n }\n\n /**\n * Optional search query\n * @default {}\n * @return {Object<String, String|Array<String>>} - Query\n */\n get query () {\n return this.parameters.search;\n }\n\n /**\n * Optional search query\n * @param {Object<String, String|Array<String>>} value - Query\n * @throws {TypeError}\n * @default {}\n * @see {@link ResourceProxy#search}\n */\n set query (value) {\n this.parameters.search = value;\n }\n\n /**\n * Get target page\n * @param {Number} page - Page number\n * @param {Number} perPage - Amount of items per page (max 50)\n * @returns {CancelablePromise<PaginatedResourceListing>} - Target page\n * @throws {ApiError} - If the api returns errors\n */\n getPage (page = this.page, perPage = this.perPage) {\n const query = this.parameters.copy();\n\n query.page = page;\n query.perPage = perPage;\n\n const glue = this.route.includes('?') ? '&' : '?';\n const url = this.route + glue + query.encode();\n\n return makeCancelable(async signal => {\n const response = await this.api.ky.get(url, { signal });\n const { data } = await response.json();\n\n const rowCount = Number(response.headers.get('x-paginate-total') || data.length);\n const totalPages = Number(response.headers.get('x-paginate-pages') || 1);\n const parameters = this.parameters.copy();\n\n parameters.page = page;\n\n return new PaginatedResourceListing(\n this.api, this.route, this.Target,\n parameters, totalPages, rowCount,\n data.map(row => new this.Target(this.api, row)),\n );\n });\n }\n\n /**\n * If there is a next page\n * @returns {boolean} - If there is a next page\n */\n get hasNext () {\n return this.page < this.pageCount;\n }\n\n /**\n * If there is a previous page\n * @returns {boolean} - If there is a previous page\n */\n get hasPrevious () {\n return this.page > 1;\n }\n\n /**\n * Used for caching pages internally\n * @returns {string} - Cache token\n * @see {@link PaginatedResourceWrapper}\n * @see {@link ResourceCache}\n */\n get cacheToken () {\n return this.parameters.token();\n }\n\n /**\n * Get next page\n * @returns {CancelablePromise<PaginatedResourceListing>} - Paginated resource\n * @throws {ApiError} - If the api returns errors\n */\n next () {\n return this.getPage(this.page + 1);\n }\n\n /**\n * Get previous page\n * @returns {CancelablePromise<PaginatedResourceListing>} - Paginated resource\n * @throws {ApiError} - If the api returns errors\n */\n previous () {\n return this.getPage(this.page - 1);\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport PaginatedResourceListing from '../PaginatedResourceListing';\nimport RequestParameters from '../RequestParameters';\nimport ResourceLister from '../ResourceLister';\nimport ResourceBase from '../resources/base/ResourceBase';\nimport { isParentOf } from '../utils/reflection';\n\n/**\n * Proxy for accessing resource. This will make sure that they\n * are properly wrapped before the promise resolves.\n * @protected\n */\nexport default class SimpleResourceProxy {\n /**\n * @param {Mapcreator} api - Instance of the api\n * @param {Class<ResourceBase>} Target - Target to wrap\n * @param {?string} [altUrl=null] - Internal use, Optional alternative url for more complex routing\n * @param {object} seedData - Internal use, used for seeding ::new\n */\n constructor (api, Target, altUrl = null, seedData = {}) {\n if (!isParentOf(ResourceBase, Target)) {\n throw new TypeError('Target is not a child of ResourceBase');\n }\n\n if (typeof Target !== 'function') {\n throw new TypeError('Target must to be a class not an instance');\n }\n\n if (altUrl) {\n this.__baseUrl = altUrl;\n }\n\n this._api = api;\n this._Target = Target;\n this._seedData = seedData;\n }\n\n /**\n * Proxy target url\n * @returns {string} url\n * @example\n * api.layers.select(100).organisations.baseUrl === \"https://maponline-api.dev/v1/layers/100/organisations\"\n */\n get baseUrl () {\n if (!this.__baseUrl) {\n this.__baseUrl = this.new().baseUrl;\n }\n\n return this.__baseUrl;\n }\n\n /**\n * Get api instance\n * @returns {Mapcreator} - Api instance\n */\n get api () {\n return this._api;\n }\n\n /**\n * Target to wrap results in\n * @returns {Class<ResourceBase>} - Target constructor\n */\n get Target () {\n return this._Target;\n }\n\n /**\n * Build a new instance of the target\n * @param {Object<String, *>} data - Data for the object to be populated with\n * @returns {ResourceBase} - Resource with target data\n */\n new (data = {}) {\n // Merge but don't overwrite using seed data\n data = { ...this._seedData, ...data };\n\n return new this.Target(this._api, data);\n }\n\n /**\n * List target resource\n * @param {Number|Object|RequestParameters} [params] - Parameters or the page number to be requested\n * @param {Number} [params.page=1] - The page to be requested\n * @param {Number} [params.perPage=RequestParameters.perPage] - Amount of items per page. This is silently capped by the API\n * @param {String|String[]} [params.sort=''] - Amount of items per page. This is silently capped by the API\n * @param {String} [params.deleted=RequestParameters.deleted] - Show deleted resources, posible values: only, none, all\n * @param {?Object<String, String|Array<String>>} [params.search] - Search parameters\n * @returns {CancelablePromise<PaginatedResourceListing>} - paginated resource\n * @throws {ApiError} - If the api returns errors\n * @example\n * // Find layers with a name that starts with \"test\" and a scale_min between 1 and 10\n * // See Api documentation for search query syntax\n * const search = {\n * name: '^:test',\n * scale_min: ['>:1', '<:10'],\n * };\n *\n * api.layers.list({perPage: 10, search});\n */\n list (params = {}) {\n const resolver = this._buildResolver(params);\n\n return resolver.getPage(resolver.page);\n }\n\n /**\n * Get the resource lister\n *\n * @param {object|RequestParameters} parameters - parameters\n * @param {number} maxRows - Maximum amount of rows\n * @returns {ResourceLister} - Resource lister\n */\n lister (parameters = {}, maxRows = 50) {\n return new ResourceLister(this.api, this.baseUrl, this.Target, parameters, maxRows, this.Target.resourceUrlKey);\n }\n\n // @todo disabled for now due to it promoting bad practices\n // /**\n // * Get all the resources\n // * Please note that you might hit the rate limiter if you use this method. Make sure to cache it's result.\n // *\n // * @param {object|RequestParameters} parameters - parameters\n // * @returns {Promise<ResourceBase[]>} - All the resources\n // * @throws {ApiError} - If the api returns errors\n // */\n // async all(parameters = {}) {\n // const page = await this.list(parameters);\n // const promises = [];\n //\n // for (let i = 2; i <= page.pageCount; i++) {\n // promises.push(page.getPage(i));\n // }\n //\n // const results = await Promise.all(promises);\n //\n // return results.reduce((a, v) => a.concat(v.data), [...page.data]);\n // }\n\n _buildResolver (params = {}) {\n const paramType = typeof params;\n const url = this.baseUrl;\n\n if (!['number', 'object'].includes(paramType)) {\n throw new TypeError(`Expected params to be of type number or object. Got \"${paramType}\"`);\n }\n\n if (paramType === 'number') {\n return this._buildResolver({ page: params });\n }\n\n if (!(params instanceof RequestParameters)) {\n params = new RequestParameters(params);\n }\n\n return new PaginatedResourceListing(this._api, url, this.Target, params);\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * OAuth error\n */\nexport default class OAuthError extends Error {\n /**\n * OAuth error code\n * @type {String}\n */\n error;\n\n /**\n * OAuth error response\n * @param {String} error - OAuth error key\n * @param {String} message - OAuth error message\n */\n constructor (error, message = '') {\n super(message);\n\n this.error = String(error);\n }\n\n /**\n * Displayable error string\n * @returns {String} - error\n */\n toString () {\n let error = this.error;\n\n if (error.includes('_')) {\n error = error.replace('_', ' ').replace(/^./, x => x.toUpperCase());\n }\n\n if (this.message) {\n return `${error}: ${this.message}`;\n }\n\n return error;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { isNode } from '../utils/node';\nimport DataStoreContract from './DataStoreContract';\n\n/**\n * @private\n * @todo fix\n */\nexport default class CookiesDriver extends DataStoreContract {\n constructor (prefix = '_m4n_') {\n super();\n\n this.__prefix = prefix;\n }\n\n /**\n * Cookie name prefix\n * @returns {String} - Prefix\n * @private\n */\n get _prefix () {\n return this.__prefix;\n }\n\n /**\n * @inheritDoc\n */\n static get secure () {\n return window.location.protocol === 'https:';\n }\n\n /**\n * @inheritDoc\n */\n static get available () {\n return !isNode();\n }\n\n /**\n * Store a value in the storage\n * @param {String} name - value name\n * @param {*} value - value\n * @param {Date|String} [expires=2050-01-01] - Expiration date\n */\n set (name, value, expires = new Date('2050-01-01')) {\n name = encodeURIComponent(this._prefix + name);\n value = encodeURIComponent(value);\n\n if (expires instanceof Date) {\n expires = expires.toUTCString();\n }\n\n let cookie = `${name}=${value}; expires=${expires}`;\n\n if (CookiesDriver.secure) {\n cookie += '; secure';\n }\n\n document.cookie = cookie;\n }\n\n /**\n * @inheritDoc\n */\n get (name) {\n name = this._prefix + name;\n\n return this._toObject()[name];\n }\n\n /**\n * @inheritDoc\n */\n remove (name) {\n this.set(name, '', new Date(1970));\n }\n\n /**\n * @inheritDoc\n */\n keys () {\n const regex = new RegExp(`^${this._prefix}`);\n\n return Object.keys(this._toObject()).map(x => x.replace(regex, ''));\n }\n\n /**\n * Extract cookies and turn them into a object\n * @returns {Object} - cookies\n * @private\n */\n _toObject () {\n const cookies = {};\n\n document.cookie\n .split(';')\n .map(x => x.trim().split('=').map(decodeURIComponent))\n .filter(x => x[0].startsWith(this._prefix))\n .forEach(x => {\n cookies[x[0]] = x[1];\n });\n\n return cookies;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { isNode } from '../utils/node';\nimport DataStoreContract from './DataStoreContract';\n\n/**\n * Used for storing data during tests\n * @private\n */\nexport default class DummyDriver extends DataStoreContract {\n static _data = {};\n\n /**\n * @inheritDoc\n */\n static get available () {\n return isNode() && process.env.NODE_ENV === 'test';\n }\n\n /**\n * If the storage is secure\n * @returns {boolean} - Secure storage\n */\n static get secure () {\n return true;\n }\n\n /**\n * Store a value in the storage\n * @param {String} name - value name\n * @param {*} value - value\n */\n set (name, value) {\n this.constructor._data[name] = value;\n }\n\n /**\n * Get a value from the store\n * @param {String} name - value name\n * @returns {*} - value\n */\n get (name) {\n return this.constructor._data[name];\n }\n\n /**\n * Remove a value from the store\n * @param {String} name - value name\n */\n remove (name) {\n delete this.constructor._data[name];\n }\n\n /**\n * Storage keys\n * @returns {Array<String>} - Stored keys\n */\n keys () {\n return Object.keys(this.constructor._data);\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport DataStoreContract from './DataStoreContract';\nimport { isNode } from '../utils/node';\n\n/**\n * @private\n */\nexport default class LocalStorageDriver extends DataStoreContract {\n /**\n * LocalStorage name prefix\n * @returns {String} - Prefix\n * @private\n */\n static get _prefix () {\n return '_m4n_';\n }\n\n /**\n * @inheritDoc\n */\n static get available () {\n return !isNode();\n }\n\n /**\n * Store a value in the storage\n * @param {String} name - value name\n * @param {*} value - value\n */\n set (name, value) {\n name = LocalStorageDriver._prefix + name;\n\n window.localStorage.setItem(name, value);\n }\n\n /**\n * Get a value from the store\n * @param {String} name - value name\n */\n get (name) {\n name = LocalStorageDriver._prefix + name;\n\n return window.localStorage.getItem(name);\n }\n\n /**\n * Remove a value from the store\n * @param {String} name - value name\n */\n remove (name) {\n name = LocalStorageDriver._prefix + name;\n\n window.localStorage.removeItem(name);\n }\n\n /**\n * Storage keys\n * @returns {Array<String>} - Stored keys\n */\n keys () {\n const keys = [];\n const storage = window.localStorage;\n const prefix = LocalStorageDriver._prefix;\n\n for (let i = 0; i < storage.length; i++) {\n let key = storage.key(i);\n\n if (key.startsWith(prefix)) {\n key = key.replace(new RegExp(`^${prefix}`), '');\n\n keys.push(key);\n }\n }\n\n return keys;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport StaticClass from '../utils/StaticClass';\nimport CookiesDriver from './CookiesDriver';\nimport DummyDriver from './DummyDriver';\nimport FileDriver from './FileDriver';\nimport LocalStorageDriver from './LocalStorageDriver';\n\n/**\n * @private\n */\nexport default class StorageManager extends StaticClass {\n /**\n * Available storage drivers\n * @returns {Array.<function>} - Available storage drivers\n */\n static get available () {\n return [\n DummyDriver,\n LocalStorageDriver,\n // CookiesDriver,\n FileDriver,\n ].filter(x => x.available);\n }\n\n /**\n * Get LocalStorageDriver instance\n * @returns {LocalStorageDriver} - Instance\n */\n static get localStorage () {\n return new LocalStorageDriver();\n }\n\n /**\n * Get CookiesDriver instance\n * @returns {CookiesDriver} - Instance\n */\n static get cookies () {\n return new CookiesDriver();\n }\n\n /**\n * Get FileDriver instance\n * @returns {FileDriver} - Instance\n */\n static get file () {\n return new FileDriver();\n }\n\n /**\n * Get DummyDriver instance\n * @returns {DummyDriver} - Instance\n */\n static get dummy () {\n return new DummyDriver();\n }\n\n /**\n * Returns the best available storage driver. For a secure driver use {@link StorageManager#secure}\n * @returns {DataStoreContract} - Best available storage driver\n */\n static get best () {\n return new this.available[0]();\n }\n\n /**\n * Returns the a secure storage driver\n * @returns {DataStoreContract} - Secure storage driver\n */\n static get secure () {\n const C = this.available.filter(x => x.secure)[0];\n\n if (typeof C === 'undefined') {\n return StorageManager.best;\n }\n\n return new C();\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { JobShareVisibility } from '../enums';\nimport CrudBase from './base/CrudBase';\n\nexport default class JobShare extends CrudBase {\n /**\n * Unsupported method implemented due to CrudBase abstraction\n * @throws {Error}\n * @private\n */\n save () {\n throw new Error('Unsupported method JobShare::save');\n }\n\n /**\n * Accessor for {@link JobShareVisibility} enum\n * @returns {Enum<JobShareVisibility>} - Accessor for enum\n */\n static get visibility () {\n return JobShareVisibility;\n }\n\n static get resourcePath () {\n return '/jobs/shares/{id}';\n }\n\n static get resourceName () {\n return 'shares';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport HandlesImages from '../traits/HandlesImages';\nimport OwnableResource from '../traits/OwnableResource';\nimport { mix } from '../utils/reflection';\nimport CrudBase from './base/CrudBase';\n\n/**\n * Layer\n * @extends CrudBase\n * @mixes OwnableResource\n * @mixes HandlesImages\n */\nexport default class Layer extends mix(CrudBase, OwnableResource, HandlesImages) {\n static get resourceName () {\n return 'layers';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Base64 encode data\n *\n * @param {Buffer|ArrayBuffer} buffer - input buffer\n * @author Jon Leighton\n * @license MIT\n * @see https://gist.github.com/jonleighton/958841\n * @returns {string} - base 64 encoded data\n * @private\n */\nexport function base64Encode (buffer) {\n let base64 = '';\n const encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n const bytes = new Uint8Array(buffer);\n const byteLength = bytes.byteLength;\n const byteRemainder = byteLength % 3;\n const mainLength = byteLength - byteRemainder;\n\n let a, b, c, d;\n let chunk;\n\n // Main loop deals with bytes in chunks of 3\n for (let i = 0; i < mainLength; i += 3) {\n // Combine the three bytes into a single integer\n chunk = bytes[i] * 65536 | bytes[i + 1] * 256 | bytes[i + 2];\n\n // Use bitmasks to extract 6-bit segments from the triplet\n a = (chunk & 16515072) >> 18; // 16515072 = (2^6 - 1) << 18\n b = (chunk & 258048) >> 12; // 258048 = (2^6 - 1) << 12\n c = (chunk & 4032) >> 6; // 4032 = (2^6 - 1) << 6\n d = chunk & 63; // 63 = 2^6 - 1\n\n // Convert the raw binary segments to the appropriate ASCII encoding\n base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d];\n }\n\n // Deal with the remaining bytes and padding\n if (byteRemainder === 1) {\n chunk = bytes[mainLength];\n\n a = (chunk & 252) >> 2; // 252 = (2^6 - 1) << 2\n\n // Set the 4 least significant bits to zero\n b = (chunk & 3) << 4; // 3 = 2^2 - 1\n\n base64 += `${encodings[a] + encodings[b]}==`;\n } else if (byteRemainder === 2) {\n chunk = bytes[mainLength] * 256 | bytes[mainLength + 1];\n\n a = (chunk & 64512) >> 10; // 64512 = (2^6 - 1) << 10\n b = (chunk & 1008) >> 4; // 1008 = (2^6 - 1) << 4\n\n // Set the 2 least significant bits to zero\n c = (chunk & 15) << 2; // 15 = 2^4 - 1\n\n base64 += `${encodings[a] + encodings[b] + encodings[c]}=`;\n }\n\n return base64;\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { base64Encode } from '../../utils/base64';\nimport { isNode } from '../../utils/node';\n\n/**\n * Downloaded resource from the api\n */\nexport default class DownloadedResource {\n /**\n *\n * @param {ArrayBuffer|Buffer} data - Data\n * @param {string} [type=application/octet-stream] - Mime-type\n * @param {string} [fileName=Untitled] - File name\n */\n constructor (data, type = 'application/octet-stream', fileName = 'Untitled') {\n this._data = data;\n this._type = type;\n this._fileName = fileName;\n }\n\n /**\n * Build instance from response\n * @param {Response} response - Response\n * @returns {DownloadedResource} - Instance\n */\n static async fromResponse (response) {\n // Get data\n const data = await response.arrayBuffer();\n\n // Find mimeType\n let mimeType;\n const contentType = response.headers.get('content-type');\n\n if (contentType) {\n mimeType = contentType.split(';')[0].trim();\n }\n\n // Extract file name\n let fileName;\n const contentDisposition = response.headers.get('content-disposition');\n\n if (contentDisposition) {\n const regex = /filename[^;=\\n]*=((['\"])(.*?)\\2|([^;\\s]*))/i;\n const matches = regex.exec(contentDisposition);\n\n if (matches) {\n fileName = matches[3] || matches[4];\n }\n }\n\n return new DownloadedResource(data, mimeType, fileName);\n }\n\n /**\n * In Nodejs it will return a {@link Buffer} and in the browser it will respond with a {@link ArrayBuffer}\n * @returns {ArrayBuffer|Buffer} - Resource data\n */\n get data () {\n return this._data;\n }\n\n /**\n * Resource mime-type\n * @return {string} - Mime-type\n */\n get type () {\n return this._type;\n }\n\n /**\n * Resource file name, if available\n * @return {string} - File name\n */\n get fileName () {\n return this._fileName;\n }\n\n /**\n * Get the size of the data\n * @return {Number} - Size in bytes\n */\n get size () {\n return this.data.length;\n }\n\n /**\n * Create a object url\n * The URL lifetime is tied to the document in the window on which it\n * was created. The new object URL represents the resource.\n * *Do not forget* to release the object urls once used.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n * @see https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL#Memory_management\n * @return {string} - Object url\n */\n createObjectUrl () {\n if (isNode()) {\n throw new Error('Object urls are not supported by Node');\n }\n\n return URL.createObjectURL(this.createBlob());\n }\n\n /**\n * Create a blob from the resource\n * @returns {Blob}\n */\n createBlob () {\n return new Blob([this.data], { type: this.type });\n }\n\n /**\n * Get base64-encoded data uri\n * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n * @returns {string} - Data uri\n */\n toDataUri () {\n return `data:${this.type};base64,${this.toBase64()}`;\n }\n\n /**\n * Base64 encode data\n * @returns {string} - Base64 encoded data\n */\n toBase64 () {\n return base64Encode(this.data);\n }\n\n /**\n * @inheritDoc\n */\n toString () {\n return this.data.toString();\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Makes an object and it's children unobservable by frameworks like Vuejs\n * @protected\n */\nexport default class Unobservable {\n /**\n * Overrides the `Object.prototype.toString.call(obj)` result\n * @returns {string} - type name\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag\n */\n get [Symbol.toStringTag] () {\n // Anything can go here really as long as it's not 'Object'\n return this.constructor.name;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { constant as constantCase } from 'case';\nimport { getTypeName } from '../utils/reflection';\nimport Unobservable from '../utils/Unobservable';\n\n\n/**\n * Base enum class\n * @example\n * const Colors = new Enum(['RED', 'BLACK', 'GREEN', 'WHITE', 'BLUE']);\n *\n * const Answers = new Enum({\n * YES: true,\n * NO: false,\n * // Passing functions as values will turn them into getters\n * // Getter results will appear in ::values\n * MAYBE: () => Math.random() >= 0.5,\n * });\n *\n * const FontStyles = new Enum(['italic', 'bold', 'underline', 'regular'], true);\n * FontStyles.ITALIC === 'italic'\n * FontStyles.BOLD === 'bold'\n *\n * // etc...\n */\nexport default class Enum extends Unobservable {\n /**\n * @param {Object<String, *>|Array<String>} enums - Data to build the enum from\n * @param {boolean} auto - Auto generate enum from data making assumptions about\n * the data, requires enums to be of type array.\n */\n constructor (enums, auto = false) {\n super();\n\n const isArray = Array.isArray(enums);\n\n if (auto && !isArray) {\n throw new TypeError(`Expected enums to be of type \"Array\" got \"${getTypeName(enums)}\"`);\n }\n\n if (isArray && auto) {\n for (const row of enums) {\n const key = constantCase(row);\n\n Object.defineProperty(this, key, {\n enumerable: true,\n value: row,\n });\n }\n } else if (isArray) {\n for (const key of enums) {\n Object.defineProperty(this, key, {\n enumerable: true,\n value: Enum._iota,\n });\n }\n } else {\n for (const key of Object.keys(enums)) {\n const init = { enumerable: true };\n\n if (typeof enums[key] === 'function') {\n init.get = enums[key];\n } else {\n init.value = enums[key];\n }\n\n Object.defineProperty(this, key, init);\n }\n }\n\n Object.freeze(this);\n }\n\n /**\n * List enum keys\n * @returns {Array} - Enum keys\n */\n keys () {\n return Object.keys(this);\n }\n\n /**\n * List enum values\n * @returns {Array<*>} - Enum values\n */\n values () {\n return this.keys()\n .map(key => this[key])\n .filter((v, i, s) => s.indexOf(v) === i);\n }\n\n static get _iota () {\n if (!Enum.__iota) {\n Enum.__iota = 0;\n }\n\n return Enum.__iota++;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ky from 'ky-universal';\nimport { AbstractClassError, AbstractMethodError } from '../errors/AbstractError';\nimport StorageManager from '../storage/StorageManager';\nimport OAuthToken from './OAuthToken';\nimport StateContainer from './StateContainer';\nimport { makeCancelable } from '../utils/helpers';\n\n/**\n * OAuth base class\n * @abstract\n */\nexport default class OAuth {\n token = null;\n path = '/';\n host = process.env.HOST;\n\n /**\n * @param {String} clientId - OAuth client id\n * @param {Array<String>} scopes - A list of required scopes\n */\n constructor (clientId, scopes = ['*']) {\n if (this.constructor === OAuth) {\n throw new AbstractClassError();\n }\n\n this.clientId = String(clientId);\n this.scopes = scopes;\n\n if (this.clientId) {\n this.token = OAuthToken.recover();\n }\n }\n\n /**\n * If the current instance has a valid token\n * @returns {Boolean} - If a valid token is available\n */\n get authenticated () {\n return this.token !== null && !this.token.expired;\n }\n\n /**\n * Authenticate\n * @returns {Promise<OAuthToken>} - Authentication token\n * @throws {OAuthError}\n * @abstract\n */\n authenticate () {\n throw new AbstractMethodError();\n }\n\n /**\n * Forget the current session\n * Empty the session token store and forget the api token\n */\n forget () {\n StateContainer.clean();\n StorageManager.secure.remove(OAuthToken.storageName);\n\n this.token = null;\n }\n\n /**\n * Invalidates the session token\n * @throws {OAuthError} - If de-authentication fails\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n logout () {\n if (!this.token) {\n return makeCancelable(() => {});\n }\n\n const url = `${this.host}/oauth/logout`;\n\n return makeCancelable(async signal => {\n await ky.post(url, {\n headers: {\n Accept: 'application/json',\n Authorization: this.token.toString(),\n },\n signal,\n });\n\n this.forget();\n });\n }\n\n /**\n * Manually import OAuthToken, usefull for debugging\n * @param {String} token - OAuth token\n * @param {String} [type=Bearer] - token type\n * @param {Date|Number} [expires=5 days] - expire time in seconds or Date\n * @param {Array<string>} [scopes=[]] - Any scopes\n */\n importToken (token, type = 'Bearer', expires = 432000, scopes = []) {\n this.token = new OAuthToken(token, type, expires, scopes);\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Simple logger implementation\n */\nexport default class Logger {\n /**\n * Create a Logger instance\n * @param {string} [logLevel=warn] - Log level\n */\n constructor (logLevel = 'warn') {\n this.logLevel = logLevel;\n }\n\n /**\n * Get available log levels\n * @returns {Array<string>} - Log levels\n */\n getLogLevels () {\n return [\n 'debug',\n 'info',\n 'warn',\n 'error',\n 'none',\n ];\n }\n\n /**\n * Log a message\n * @param {string} message - Message to be logged\n * @param {string} level - Log level\n */\n log (message, level = 'info') {\n if (level === 'none') {\n return;\n }\n\n if (this._shouldLog(level)) {\n // eslint-disable-next-line no-console\n console[level](message);\n }\n }\n\n /**\n * Log a debug message\n * @param {string} message - Message to be logged\n */\n debug (message) {\n this.log(message, 'debug');\n }\n\n /**\n * Log an informative message\n * @param {string} message - Message to be logged\n */\n info (message) {\n this.log(message, 'info');\n }\n\n /**\n * Log a warning message\n * @param {string} message - Message to be logged\n */\n warn (message) {\n this.log(message, 'warn');\n }\n\n /**\n * Log an error message\n * @param {string} message - Message to be logged\n */\n error (message) {\n this.log(message, 'error');\n }\n\n /**\n * Get the current log level\n * @returns {string} - log level\n */\n get logLevel () {\n return this._logLevel;\n }\n\n /**\n * Set the current log level\n * @param {string} value - log level\n * @throws {Logger#getLogLevels}\n */\n set logLevel (value) {\n value = value.toLowerCase();\n\n if (!this.getLogLevels().includes(value)) {\n throw new TypeError(`Expected one of ${this.getLogLevels().join(', ')}. Got ${value}`);\n }\n\n this._logLevel = value;\n }\n\n _shouldLog (level) {\n const logLevels = this.getLogLevels();\n const targetLevel = logLevels.findIndex(x => x === level);\n const currentLevel = logLevels.findIndex(x => x === this.logLevel);\n\n return targetLevel >= currentLevel;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ky from 'ky-universal';\n\nimport { Enum } from './enums';\nimport DummyFlow from './oauth/DummyFlow';\nimport OAuth from './oauth/OAuth';\nimport OAuthToken from './oauth/OAuthToken';\nimport GeoResourceProxy from './proxy/GeoResourceProxy';\nimport ResourceProxy from './proxy/ResourceProxy';\nimport SimpleResourceProxy from './proxy/SimpleResourceProxy';\nimport {\n Choropleth,\n Color,\n Contract,\n Dimension,\n DimensionSet,\n Faq,\n Feature,\n Font,\n FontFamily,\n Highlight,\n InsetMap,\n Job,\n JobShare,\n JobType,\n Language,\n Layer,\n Mapstyle,\n MapstyleSet,\n Message,\n Notification,\n Organisation,\n Permission,\n Role,\n Svg,\n SvgSet,\n Tag,\n TagType,\n User,\n VectorHighlight,\n VectorChoropleth,\n ProductTour,\n ProductTourStep,\n LayerFaq,\n} from './resources';\nimport ResourceBase from './resources/base/ResourceBase';\nimport Injectable from './traits/Injectable';\nimport { fnv32b } from './utils/hash';\nimport Logger from './utils/Logger';\nimport { isParentOf, mix } from './utils/reflection';\nimport { delay, makeCancelable, wrapKyCancelable } from './utils/helpers';\nimport ValidationError from './errors/ValidationError';\nimport ApiError from './errors/ApiError';\nimport { wrapKyPrefixUrl } from './utils/requests';\nimport EventEmitter from 'events';\nimport LayerGroup from './resources/LayerGroup';\n\n/**\n * Base API class\n *\n * @mixes Injectable\n * @extends EventEmitter\n * @fires Mapcreator#error\n */\nexport default class Mapcreator extends mix(EventEmitter, Injectable) {\n /**\n * @param {OAuth|string} auth - Authentication flow\n * @param {string} host - Remote API host\n */\n constructor (auth = new DummyFlow(), host = process.env.HOST) {\n super();\n\n if (typeof auth === 'string') {\n const token = auth;\n\n auth = new DummyFlow();\n\n auth.token = new OAuthToken(token, 'Bearer', new Date('2100-01-01T01:00:00'), ['*']);\n }\n\n this.auth = auth;\n this.host = host;\n\n this._logger = new Logger(process.env.LOG_LEVEL);\n\n this.wrapKy(wrapKyCancelable);\n this.wrapKy(wrapKyPrefixUrl, `${this.host}/${this.version}`);\n }\n\n /**\n * Get api version\n * @returns {string} - Api version\n * @constant\n */\n get version () {\n return 'v1';\n }\n\n /**\n * Get authentication provider instance\n * @returns {OAuth} - OAuth instance\n */\n get auth () {\n return this._auth;\n }\n\n /**\n * Get logger instance\n * @returns {Logger} - Logger instance\n */\n get logger () {\n return this._logger;\n }\n\n /**\n * Set authentication provider instance\n * @param {OAuth} value -- OAuth instance\n */\n set auth (value) {\n if (!isParentOf(OAuth, value)) {\n throw new TypeError('auth must be an instance of OAuth');\n }\n\n this._auth = value;\n }\n\n /**\n * Test if the client is authenticated with the api and has a valid token\n * @returns {boolean} - If the client is authenticated with the api\n */\n get authenticated () {\n return this.auth.authenticated;\n }\n\n /**\n * The current host\n * @returns {string} - The current host\n */\n get host () {\n return this._host;\n }\n\n /**\n * The remote host\n * @param {string} value - A valid url\n */\n set host (value) {\n value = value.replace(/\\/+$/, '');\n this._host = value;\n this.auth.host = value;\n }\n\n get url () {\n return `${this.host}/${this.version}`;\n }\n\n /**\n * Saves the session token so that it can be recovered at a later time. The wrapper can\n * find the token most of the time if the name parameter is left blank.\n * @param {string?} name - name of the token\n */\n saveToken (name) {\n this.auth.token.save(name);\n }\n\n /**\n * Authenticate with the api using the authentication method provided.\n * @returns {Promise<Mapcreator>} - Current instance\n * @throws {OAuthError}\n * @throws {ApiError} - If the api returns errors\n */\n async authenticate () {\n await this.auth.authenticate();\n\n return this;\n }\n\n /**\n * Mapcreator ky instance\n * This ky instance takes care of the API communication. It has the following responsibilities:\n * - Send authenticated requests to the API\n * - Transform errors returned from the API into ApiError and ValidationError if possible\n * - Wait when the rate limiter responds with a 429 and retry later\n * - Prefix urls with the api domain if needed\n * @returns {function}\n * @see {@link https://github.com/sindresorhus/ky}\n */\n get ky () {\n if (this._ky) {\n return this._ky;\n }\n\n const hooks = {\n beforeRequest: [\n request => {\n if (this.authenticated) {\n request.headers.set('Authorization', this.auth.token.toString());\n }\n },\n ],\n afterResponse: [\n // 429 response\n async (request, _options, response) => {\n if (response.status !== 429) {\n return response;\n }\n\n const resetDelay = (response.headers.get('x-ratelimit-reset') * 1000) || 500;\n\n await delay(resetDelay);\n\n return this._ky(request);\n },\n // transform errors\n async (request, options, response) => {\n if (response.status < 400 || response.status >= 600) {\n return response;\n }\n\n const data = await response.json();\n const params = { data, request, options, response };\n\n if (data.error['validation_errors']) {\n throw new ValidationError(params);\n }\n\n const error = new ApiError(params);\n\n if (error.type === 'AuthenticationException') {\n /**\n * Critical api errors (AuthenticationException)\n *\n * @event Mapcreator#error\n * @type {ApiError}\n */\n this.emit('error', error);\n }\n\n throw error;\n },\n ],\n };\n\n this._ky = ky.create({\n timeout: 30000, // 30 seconds\n // throwHttpErrors: false, // This is done through a custom hook\n // redirect: 'error',\n retry: 0,\n headers: {\n 'Accept': 'application/json',\n 'X-No-CDN-Redirect': 'true',\n },\n hooks,\n });\n\n return this._ky;\n }\n\n wrapKy (wrapper, ...args) {\n this._ky = wrapper(this.ky, ...args);\n\n const requestMethods = [\n 'get', 'post', 'put',\n 'patch', 'head', 'delete',\n ];\n\n for (const method of requestMethods) {\n this._ky[method] = (input, options) => this._ky(input, { ...options, method });\n }\n }\n\n /**\n * Static proxy generation\n * @param {string|Class} Target - Constructor or url\n * @param {Class?} Constructor - Constructor for a resource that the results should be cast to\n * @returns {ResourceProxy} - A proxy for accessing the resource\n * @example\n * api.static('/custom/resource/path/{id}/').get(123);\n *\n * @example\n * class FooBar extends ResourceBase {\n * static get resourceName() {\n * return 'custom';\n * }\n * }\n *\n * api.static(FooBar)\n * .get(1)\n * .then(console.log);\n *\n * api.static('/foo-bar-custom', FooBar).lister();\n */\n static (Target, Constructor = ResourceBase) {\n if (typeof Target === 'string') {\n const path = Target;\n const name = Constructor.name || 'AnonymousResource';\n\n Target = class AnonymousResource extends Constructor {\n static get resourceName () {\n return Object.getPrototypeOf(this).resourceName || 'anonymous';\n }\n\n static get resourcePath () {\n return path;\n }\n };\n\n Object.defineProperty(Target, 'name', {\n value: `${name}_${fnv32b(path)}`,\n });\n }\n\n if (isParentOf(ResourceBase, Target)) {\n return new ResourceProxy(this, Target);\n }\n\n throw new TypeError('Expected Target to be of type string and Constructor to be a ResourceBase constructor');\n }\n\n /**\n * Choropleth accessor\n * @see {@link Choropleth}\n * @returns {GeoResourceProxy} - A proxy for accessing the resource\n */\n get choropleths () {\n return new GeoResourceProxy(this, Choropleth);\n }\n\n /**\n * VectorChoropleth accessor\n * @see {@link VectorChoropleth}\n * @returns {GeoResourceProxy} - A proxy for accessing the resource\n */\n get vectorChoropleths () {\n return new GeoResourceProxy(this, VectorChoropleth);\n }\n\n /**\n * Color accessor\n * @see {@link Color}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get colors () {\n return this.static(Color);\n }\n\n /**\n * Tag accessor\n * @see {@link Tag}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get tags () {\n return this.static(Tag);\n }\n\n /**\n * Tag accessor\n * @see {@link Tag}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get tagTypes () {\n return this.static(TagType);\n }\n\n /**\n * Contract accessor\n * @see {@link Contract}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get contracts () {\n return this.static(Contract);\n }\n\n /**\n * Dimension accessor\n * @see {@link Dimension}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get dimensions () {\n return this.static(Dimension);\n }\n\n /**\n * Dimension set accessor\n * @see {@link DimensionSet}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get dimensionSets () {\n return this.static(DimensionSet);\n }\n\n /**\n * Faq accessor\n * @see {@link Faq}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get faqs () {\n return this.static(Faq);\n }\n\n /**\n * Feature accessor\n * @see {@link Feature}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get features () {\n return this.static(Feature);\n }\n\n /**\n * Featured jobs accessor\n * @see {@link Job}\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get featuredMaps () {\n return new SimpleResourceProxy(this, Job, '/jobs/featured');\n }\n\n /**\n * Font accessor\n * @see {@link Font}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get fonts () {\n return this.static(Font);\n }\n\n /**\n * FontFamily accessor\n * @see {@link FontFamily}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get fontFamilies () {\n return this.static(FontFamily);\n }\n\n /**\n * Highlight accessor\n * @see {@link Highlight}\n * @returns {GeoResourceProxy} - A proxy for accessing the resource\n */\n get highlights () {\n return new GeoResourceProxy(this, Highlight);\n }\n\n /**\n * VectorHighlight accessor\n * @see {@link VectorHighlight}\n * @returns {GeoResourceProxy} - A proxy for accessing the resource\n */\n get vectorHighlights () {\n return new GeoResourceProxy(this, VectorHighlight);\n }\n\n /**\n * InsetMap accessor\n * @see {@link InsetMap}\n * @returns {GeoResourceProxy} - A proxy for accessing the resource\n */\n get insetMaps () {\n return new GeoResourceProxy(this, InsetMap);\n }\n\n /**\n * Job accessor\n * @see {@link Job}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get jobs () {\n return this.static(Job);\n }\n\n /**\n * JobShare accessor\n * @see {@link JobShare}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get jobShares () {\n return this.static(JobShare);\n }\n\n /**\n * JobType accessor\n * @see {@link JobType}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get jobTypes () {\n return this.static(JobType);\n }\n\n /**\n * Language accessor\n * @see {@link Language}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get languages () {\n return this.static(Language);\n }\n\n /**\n * Layer accessor\n * @see {@link Layer}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get layers () {\n return this.static(Layer);\n }\n\n /**\n * LayerFaq accessor\n * @see {@link LayerFaq}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get layerFaqs () {\n return this.static(LayerFaq);\n }\n\n /**\n * Layer group accessor\n * @see {@link LayerGroup}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get layerGroups () {\n return this.static(LayerGroup);\n }\n\n /**\n * Mapstyle accessor\n * @see {@link Mapstyle}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get mapstyles () {\n return this.static(Mapstyle);\n }\n\n /**\n * MapstyleSet accessor\n * @see {@link MapstyleSet}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get mapstyleSets () {\n return this.static(MapstyleSet);\n }\n\n /**\n * Notification accessor\n * @see {@link Notification}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get notifications () {\n return this.static(Notification);\n }\n\n /**\n * Message accessor\n * @see {@link Message}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get messages () {\n return this.static(Message);\n }\n\n /**\n * Organisation accessor\n * @see {@link Organisation}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get organisations () {\n return this.static(Organisation);\n }\n\n /**\n * Permission accessor\n * @see {@link Permission}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get permissions () {\n return this.static(Permission);\n }\n\n get productTours () {\n return this.static(ProductTour);\n }\n\n get productTourSteps () {\n return this.static(ProductTourStep);\n }\n\n /**\n * Role accessor\n * @see {@link Role}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get roles () {\n return this.static(Role);\n }\n\n /**\n * Svg accessor\n * @see {@link Svg}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get svgs () {\n return this.static(Svg);\n }\n\n /**\n * SvgSet accessor\n * @see {@link SvgSet}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get svgSets () {\n return this.static(SvgSet);\n }\n\n /**\n * User accessor\n * @see {@link User}\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get users () {\n return this.static(User);\n }\n\n /**\n * Get SVG set types\n * @see {@link SvgSet}\n * @returns {CancelablePromise<Enum>} - Contains all the possible SVG set types\n * @throws {ApiError} - If the api returns errors\n */\n getSvgSetTypes () {\n return makeCancelable(async signal => {\n const { data } = await this.ky.get('svgs/sets/types', { signal }).json();\n\n return new Enum(data, true);\n });\n }\n\n /**\n * Get font styles\n * @see {@link Font}\n * @returns {CancelablePromise<Enum>} - Contains all the possible font styles\n * @throws {ApiError} - If the api returns errors\n */\n getFontStyles () {\n return makeCancelable(async signal => {\n const { data } = await this.ky.get('fonts/styles', { signal }).json();\n\n return new Enum(data, true);\n });\n }\n\n /**\n * Forget the current session\n * This will clean up any stored OAuth states stored using {@link StateContainer} and any OAuth tokens stored\n * @returns {CancelablePromise}\n * @throws {ApiError} - If the api returns errors\n */\n logout () {\n return this.auth.logout();\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Errors generated by the API\n */\nexport default class ApiError extends Error {\n\n /**\n * Get the request options\n * @type {Object}\n */\n options;\n\n /**\n * Get the response\n * @type {Response}\n */\n response;\n\n /**\n * Get the request\n * @type {Request}\n */\n request;\n\n /**\n * Error type\n * @type {String}\n */\n type;\n\n /**\n * Http error code\n * @type {Number}\n */\n status;\n\n /**\n * Get the parsed stacktrace from the error\n * @returns {Array<{line: Number, file: String, code: String}>} - Stacktrace\n */\n trace;\n\n /**\n * @param {Object} params\n * @param {Object} params.options - Request options\n * @param {Object} params.data - Response data\n * @param {Request} params.request - Request\n * @param {Response} params.response - Response\n */\n constructor ({ options, request, response, data }) {\n const { type, message, trace } = data.error;\n\n super(message);\n\n this.options = options;\n this.response = response;\n this.request = request;\n\n this.type = type;\n this.trace = [];\n\n // Only available when the api is in debug mode\n if (typeof trace === 'string') {\n this._trace = ApiError._parseTrace(trace);\n }\n }\n\n /**\n * Returns if the error contained a stacktrace that has been parsed\n * This should only be true if the API is in debug mode.\n * @returns {boolean} - If the Error contains a stacktrace\n */\n get hasTrace () {\n return this.trace.length > 0;\n }\n\n /**\n * Display-able string\n * @returns {string} - Displayable error string\n */\n toString () {\n return `[${this.status}] ${this.type}: ${this.message}`;\n }\n\n static _parseTrace (input) {\n // https://regex101.com/r/64cAbt/1\n const regex = /^#(\\d+)\\s(?:(.*?)\\((\\d+)\\)|(.*?)):\\s(.*?)$/gm;\n const output = [];\n\n let match;\n\n // eslint-disable-next-line no-cond-assign\n while ((match = regex.exec(input)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (match.index === regex.lastIndex) {\n regex.lastIndex++;\n }\n\n output.push({\n line: match[3],\n file: match[2] || match[4],\n code: match[5],\n });\n }\n\n return output;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Trait interface\n * @interface\n * @mixin\n */\nexport default class Trait {\n /**\n * Optional initialization method\n */\n initializer () { }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport stringify from 'json-stable-stringify';\n\nconst FNV1_32A_INIT = 0x811c9dc5;\n\n/**\n * Fast hash function for non-cryptographic use\n * @param {string} str - Input to be hashed\n * @returns {string} - String representation of the hash\n * @private\n */\nexport function fnv32b (str) {\n let hash = str\n .split('')\n .map(x => x.charCodeAt(0))\n .reduce((sum, val) => {\n sum ^= val;\n\n return sum + (sum << 1) + (sum << 4) + (sum << 7) + (sum << 8) + (sum << 24);\n }, FNV1_32A_INIT);\n\n // Avalanche\n hash ^= hash << 3;\n hash += hash >> 5;\n hash ^= hash << 4;\n hash += hash >> 17;\n hash ^= hash << 25;\n hash += hash >> 6;\n\n return `0000000${(hash >>> 0).toString(16)}`.substr(-8);\n}\n\n/**\n * Fast object hashing for non-cryptographic use\n * @param {object} data - input data\n * @returns {string} - String reprisentation of the hash\n * @private\n */\nexport function hashObject (data) {\n return fnv32b(stringify(data));\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* eslint-disable no-unused-vars */\n\nimport { AbstractClassError, AbstractMethodError } from '../errors/AbstractError';\n\n/**\n * @private\n */\nexport default class DataStoreContract {\n constructor () {\n if (this.constructor === DataStoreContract) {\n throw new AbstractClassError();\n }\n\n if (!this.constructor.available) {\n throw new Error(`${this.constructor.name} is unavailable`);\n }\n }\n\n /**\n * If the driver is currently available\n * @returns {boolean} - Driver availability\n */\n static get available () {\n return false;\n }\n\n /**\n * If the storage is secure\n * @returns {boolean} - Secure storage\n */\n static get secure () {\n return false;\n }\n\n /**\n * Store a value in the storage\n * @param {String} name - value name\n * @param {*} value - value\n * @abstract\n */\n set (name, value) {\n throw new AbstractMethodError();\n }\n\n /**\n * Get a value from the store\n * @param {String} name - value name\n * @returns {String} - value\n * @abstract\n */\n get (name) {\n throw new AbstractMethodError();\n }\n\n /**\n * Remove a value from the store\n * @param {String} name - value name\n * @abstract\n */\n remove (name) {\n throw new AbstractMethodError();\n }\n\n /**\n * Clear storage\n */\n clear () {\n this.keys().map(key => this.remove(key));\n }\n\n /**\n * Storage keys\n * @returns {Array<String>} - Stored keys\n * @abstract\n */\n keys () {\n throw new AbstractMethodError();\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Thrown when an error occurs during geo processing\n */\nexport default class GeoError extends Error {}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport GeoError from '../errors/GeoError';\nimport RequestParameters from '../RequestParameters';\nimport { GeoBoundary, GeoPoint } from '../utils/geo';\nimport ResourceProxy from './ResourceProxy';\nimport { makeCancelable } from '../utils/helpers';\n\nexport default class GeoResourceProxy extends ResourceProxy {\n /**\n * @param {Mapcreator} api - Instance of the api\n * @param {ResourceBase} Target - Target to wrap\n * @param {?string} [altUrl=null] - Internal use, Optional alternative url for more complex routing\n * @param {object} seedData - Internal use, used for seeding ::new\n * @param {object} options - instance options\n * @param {boolean} [options.hasForPoint=true] - If the endpoint supports for-point\n * @param {boolean} [options.hasForBoundary=true] - If the endpoint supports for-boundary\n */\n constructor (api, Target, altUrl = null, seedData = {}, { hasForPoint = true, hasForBoundary = true } = {}) {\n super(api, Target, altUrl, seedData);\n this._hasForPoint = hasForPoint;\n this._hasForBoundary = hasForBoundary;\n }\n\n /**\n * If the proxy supports for-point operations\n * @returns {boolean} - If it supports the operations\n */\n get hasForPoint () {\n return this._hasForPoint;\n }\n\n /**\n * If the proxy supports for-point operations\n * @returns {boolean} - If it supports the operations\n */\n get hasForBoundary () {\n return this._hasForBoundary;\n }\n\n // noinspection JSCommentMatchesSignature\n /**\n * Get an array of results for boundary\n * @param {Object} boundary - boundary to search within\n * @param {Object} boundary.topLeft - top left corner of the boundary\n * @param {Number} boundary.topLeft.lat - top left corner latitude\n * @param {Number} boundary.topLeft.lng - top left corner longitude\n * @param {Object} boundary.bottomRight - bottom right corner of the boundary\n * @param {Number} boundary.bottomRight.lat - bottom right corner latitude\n * @param {Number} boundary.bottomRight.lng - bottom right corner longitude\n * @param {Number} limit - maximum amount of results, can't be larger then RequestParameters.maxPerPage\n * @returns {CancelablePromise<ResourceBase[]>} - target resource for boundary\n * @throws {ApiError} - If the api returns errors\n * @throws TypeError\n * @throws GeoError\n */\n forBoundary ({ topLeft, bottomRight }, limit = RequestParameters.perPage) {\n if (!this.hasForBoundary) {\n throw new GeoError(`${this.Target.name} does not support the operation forBoundary`);\n }\n\n const boundary = new GeoBoundary(topLeft, bottomRight);\n\n if (limit > RequestParameters.maxPerPage) {\n throw new TypeError(`Invalid resource limit ${limit}, maximum allowed is ${RequestParameters.maxPerPage}`);\n }\n\n const url = `${this.new().baseUrl}/for-boundary?per_page=${limit}`;\n\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.post(url, { json: { boundary }, signal }).json();\n\n return data.map(r => this.new(r));\n });\n }\n\n /**\n * Get an array of results for point\n * @param {Object} point - point to search at\n * @param {Number} point.lat - top left corner latitude\n * @param {Number} point.lng - top left corner longitude\n * @param {Number} limit - maximum amount of results, can't be larger then RequestParameters.maxPerPage\n * @returns {CancelablePromise<ResourceBase[]>} - target resource for boundary\n * @throws {ApiError} - If the api returns errors\n * @throws TypeError\n * @throws GeoError\n */\n forPoint ({ lat, lng }, limit = RequestParameters.perPage) {\n if (!this.hasForPoint) {\n throw new GeoError(`${this.Target.name} does not support the operation forPoint`);\n }\n\n const point = new GeoPoint(lat, lng);\n\n if (limit > RequestParameters.maxPerPage) {\n throw new TypeError(`Invalid resource limit ${limit}, maximum allowed is ${RequestParameters.maxPerPage}`);\n }\n\n const url = `${this.new().baseUrl}/for-point`;\n\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.post(url, { json: { limit, point }, signal }).json();\n\n return data.map(r => this.new(r));\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport DownloadedResource from './base/DownloadedResource';\nimport ResourceBase from './base/ResourceBase';\nimport RequestParameters from '../RequestParameters';\nimport { encodeQueryString } from '../utils/requests';\nimport { DeletedState } from '../enums';\nimport { makeCancelable } from '../utils/helpers';\n\nexport default class JobResult extends ResourceBase {\n static get resourcePath () {\n return '/jobs/{job_id}/revisions/{revision}/result';\n }\n\n static get resourceName () {\n return 'job-result';\n }\n\n /**\n * Get the related job\n * @returns {CancelablePromise<Job>} - The job related to this row\n * @throws {ApiError} - If the api returns errors\n */\n get job () {\n return this.api.jobs.get(this.jobId);\n }\n\n /**\n * Get the related job revision\n * @returns {CancelablePromise<JobRevision>} - The job revision related to this row\n * @throws {ApiError} - If the api returns errors\n */\n get jobRevision () {\n return this.api.jobs.select(this.jobId).revisions.get(this.id);\n }\n\n /**\n * Job result archive url\n * @returns {string} - Archive url\n */\n get outputUrl () {\n return `${this.url}/output`;\n }\n\n /**\n * Get archive blob url\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<DownloadedResource>} - Job result output\n * @throws {ApiError} - If the api returns errors\n */\n downloadOutput (deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.outputUrl}?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const response = await this.api.ky.get(url, { signal });\n\n return DownloadedResource.fromResponse(response);\n });\n }\n\n /**\n * Get the output url url\n * @returns {string} - Output url url\n */\n get outputUrlUrl () {\n return `${this.url}/output-url`;\n }\n\n /**\n * Get the remote output url\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<string>} - The url to the output\n * @throws {ApiError} - If the api returns errors\n */\n getOutputUrl (deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.outputUrlUrl}?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.get(url, { signal }).json();\n\n return data.url;\n });\n }\n\n /**\n * Job result log url\n * @returns {string} - log url\n */\n get logUrl () {\n return `${this.url}/log`;\n }\n\n /**\n * Download the job result log\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<DownloadedResource>} - job result log\n * @throws {ApiError} - If the api returns errors\n */\n downloadLog (deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.logUrl}?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const response = await this.api.ky.get(url, { signal });\n\n return DownloadedResource.fromResponse(response);\n });\n }\n\n /**\n * Job result preview url, usable in an `<img>` tag\n * @returns {string} - Preview url\n */\n get previewUrl () {\n return `${this.url}/preview`;\n }\n\n /**\n * Download the job preview\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<DownloadedResource>} - Job result preview\n * @throws {ApiError} - If the api returns errors\n */\n downloadPreview (deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.previewUrl}?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const response = await this.api.ky.get(url, { signal });\n\n return DownloadedResource.fromResponse(response);\n });\n }\n\n /**\n * Mark a job as dealt with\n * This method is for internal use for our support team.\n *\n * @param {boolean} [value=true] - What to set the dealt-with value to\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise}\n * @throws {ApiError} - If the api returns errors\n */\n dealWith (value = true, deleted = RequestParameters.deleted || DeletedState.NONE) {\n value = Boolean(value);\n\n const method = value ? 'POST' : 'DELETE';\n const url = `${this.url}/deal-with?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n await this.api.ky(url, { method, signal });\n\n this.dealtWith = value;\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Thrown upon invocation of a static class\n * @see {@link StaticClass}\n */\nexport default class StaticClassError extends Error {}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ApiError from './ApiError';\n\n/**\n * Contains schema errors.\n * Normally thrown when a job object is invalid.\n *\n * @typedef {Object} SchemaError\n * @property {string} property - json property\n * @property {string} pointer - json pointer\n * @property {string} message - error message\n * @property {number} context -\n * @property {Object} constraint -\n * @property {Object<string, string>} constraint.params -\n * @property {string} constraint.name -\n * @see https://github.com/justinrainbow/json-schema\n * @example\n * {\n * property: \"data.meta\",\n * pointer: \"/data/meta\",\n * message: \"The property meta is required\",\n * constraint: {\n * name: \"required\",\n * params: {\n * property: \"meta\"\n * }\n * },\n * context: 1\n * }\n */\n\n/**\n * Extension of {@link ApiError} containing an extra field for validation errors\n */\nexport default class ValidationError extends ApiError {\n\n /**\n * Any validation errors\n * @type {Object.<String, Array<String>>} - Object containing arrays of validation errors where the field is stored in the key\n */\n validationErrors;\n\n /**\n * Get the schema errors if available\n * @type {SchemaError[]} - Array containing schema errors\n * @see {@link hasSchemaErrors}\n * @example\n * [\n * {\n * \"property\": \"data.meta\",\n * \"pointer\": \"/data/meta\",\n * \"message\": \"The property meta is required\",\n * \"constraint\": {\n * \"name\": \"required\",\n * \"params\": {\n * \"property\": \"meta\"\n * }\n * },\n * \"context\": 1\n * },\n * {\n * \"property\": \"data.paper\",\n * \"pointer\": \"/data/paper\",\n * \"message\": \"The property paper is required\",\n * \"constraint\": {\n * \"name\": \"required\",\n * \"params\": {\n * \"property\": \"paper\"\n * }\n * },\n * \"context\": 1\n * },\n * {\n * \"property\": \"data.scaleDefinition\",\n * \"pointer\": \"/data/scaleDefinition\",\n * \"message\": \"The property scaleDefinition is required\",\n * \"constraint\": {\n * \"name\": \"required\",\n * \"params\": {\n * \"property\": \"scaleDefinition\"\n * }\n * },\n * \"context\": 1\n * }\n * ]\n */\n schemaErrors;\n\n /**\n * @param {Object} params\n * @param {Object} params.options - Request options\n * @param {Object} params.data - Response data\n * @param {Request} params.request - Request\n * @param {Response} params.response - Response\n */\n constructor ({ options, request, response, data }) {\n super({ options, request, response, data });\n\n const schemaErrors = data.error['schema_errors'];\n\n this.validationErrors = data.error['validation_errors'];\n this.schemaErrors = Array.isArray(schemaErrors) ? schemaErrors : [];\n }\n\n /**\n * True if the error contains schema errors\n * @return {boolean} - Has schema errors\n */\n get hasSchemaErrors () {\n return this.schemaErrors.length > 0;\n }\n\n /**\n * Get validation error messages\n * @returns {Array<String>} - All validation messages\n */\n get messages () {\n const out = [];\n\n for (const key of Object.keys(this.validationErrors)) {\n out.push(...this.validationErrors[key]);\n }\n\n return out;\n }\n\n /**\n * @inheritDoc\n */\n toString () {\n return `There were some validation errors: ${this.messages.join(', ')}`;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudBase from './base/CrudBase';\nimport OwnableResource from '../traits/OwnableResource';\nimport { mix } from '../utils/reflection';\n\n/**\n * Color resource\n * @extends CrudBase\n * @mixes OwnableResource\n */\nexport default class Color extends mix(CrudBase, OwnableResource) {\n static get resourceName () {\n return 'colors';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudSetBase from './base/CrudSetBase';\nimport Dimension from './Dimension';\nimport OwnableResource from '../traits/OwnableResource';\nimport { mix } from '../utils/reflection';\n\n\n/**\n * Dimension sets\n * @extends CrudSetBase\n * @mixes OwnableResource\n */\nexport default class DimensionSet extends mix(CrudSetBase, OwnableResource) {\n static get resourcePath () {\n return '/dimensions/sets/{id}';\n }\n\n static get resourceName () {\n return 'dimension-sets';\n }\n\n get _Child () {\n return Dimension;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudSetItemBase from './base/CrudSetItemBase';\n\n/**\n * Dimension resource\n */\nexport default class Dimension extends CrudSetItemBase {\n static get resourceName () {\n return 'dimensions';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudBase from './base/CrudBase';\nimport OwnableResource from '../traits/OwnableResource';\nimport { mix } from '../utils/reflection';\n\n\n/**\n * Feature\n * @extends CrudBase\n * @mixes OwnableResource\n */\nexport default class Feature extends mix(CrudBase, OwnableResource) {\n static get resourceName () {\n return 'features';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OwnableResource from '../traits/OwnableResource';\nimport { mix } from '../utils/reflection';\nimport CrudSetBase from './base/CrudSetBase';\nimport Font from './Font';\n\n/**\n * Font family\n * @extends CrudSetBase\n * @mixes OwnableResource\n */\nexport default class FontFamily extends mix(CrudSetBase, OwnableResource) {\n static get resourcePath () {\n return '/fonts/families/{id}';\n }\n\n static get resourceName () {\n return 'font-families';\n }\n\n get _Child () {\n return Font;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudSetItemBase from './base/CrudSetItemBase';\n\nexport default class Font extends CrudSetItemBase {\n static get resourceName () {\n return 'fonts';\n }\n\n static get parentKey () {\n return 'font_family_id';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ResourceProxy from '../proxy/ResourceProxy';\nimport DownloadedResource from './base/DownloadedResource';\nimport CrudBase from './base/CrudBase';\nimport JobResult from './JobResult';\nimport JobRevision from './JobRevision';\nimport RequestParameters from '../RequestParameters';\nimport { encodeQueryString } from '../utils/requests';\nimport { DeletedState } from '../enums';\nimport { makeCancelable } from '../utils/helpers';\nimport JobShare from './JobShare';\n\nexport default class Job extends CrudBase {\n /**\n * Get the list of associated job results\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get results () {\n return this._proxyResourceList(JobResult, `${this.url}/results`);\n }\n\n /**\n * Get the list job revisions\n * @returns {ResourceProxy} - A proxy for accessing the resource\n */\n get revisions () {\n const data = {\n jobId: this.id,\n };\n\n return new ResourceProxy(this.api, JobRevision, null, data);\n }\n\n /**\n * Resource name\n * @returns {String} - Resource name\n * @abstract\n */\n static get resourceName () {\n return 'jobs';\n }\n\n /**\n * Get the most up to date preview url\n * @returns {string} - Preview url\n */\n get previewUrl () {\n return `${this.url}/preview`;\n }\n\n /**\n * Get the most up to date archive url\n * @returns {string} - Last archive url\n */\n get lastArchiveUrl () {\n return `${this.url}/output`;\n }\n\n /**\n * Download the job preview\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<DownloadedResource>} - Job result preview\n * @throws {ApiError} - If the api returns errors\n */\n downloadPreview (deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.previewUrl}?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const response = await this.api.ky.get(url, { signal });\n\n return DownloadedResource.fromResponse(response);\n });\n }\n\n /**\n * Get archive blob url\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<DownloadedResource>} - Job result output\n * @throws {ApiError} - If the api returns errors\n */\n downloadOutput (deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.lastArchiveUrl}?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const response = await this.api.ky.get(url, { signal });\n\n return DownloadedResource.fromResponse(response);\n });\n }\n\n /**\n * Get the remote output url\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<string>} - The url to the output\n * @throws {ApiError} - If the api returns errors\n */\n getOutputUrl (deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.url}/output-url?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.get(url, { signal }).json();\n\n return data.url;\n });\n }\n\n /**\n * Share the job\n * @param {String} visibility - See {@link JobShareVisibility}, either `private`, `public` or `organisation`\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<JobShare>} - Object containing share links\n * @throws {ApiError} - If the api returns errors\n */\n share (visibility = JobShare.visibility.PRIVATE, deleted = RequestParameters.deleted || DeletedState.NONE) {\n visibility = visibility.toLowerCase();\n\n if (!JobShare.visibility.values().includes(visibility)) {\n throw new Error(`Unknown visibility '${visibility}'`);\n }\n\n const url = `${this.url}/share?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.post(url, { json: { visibility }, signal }).json();\n\n return new JobShare(this._api, data);\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudBase from './base/CrudBase';\nimport OwnableResource from '../traits/OwnableResource';\nimport { mix } from '../utils/reflection';\n\n/**\n * Job type\n * @extends CrudBase\n * @mixes OwnableResource\n */\nexport default class JobType extends mix(CrudBase, OwnableResource) {\n static get resourcePath () {\n return '/jobs/types/{id}';\n }\n\n static get resourceName () {\n return 'job-types';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport HandlesImages from '../traits/HandlesImages';\nimport { mix } from '../utils/reflection';\nimport CrudSetItemBase from './base/CrudSetItemBase';\n\n/**\n * @extends CrudSetItemBase\n * @mixes HandlesImages\n */\nexport default class Mapstyle extends mix(CrudSetItemBase, HandlesImages) {\n static get resourceName () {\n return 'mapstyles';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OwnableResource from '../traits/OwnableResource';\nimport CrudSetBase from './base/CrudSetBase';\nimport Svg from './Svg';\nimport { mix } from '../utils/reflection';\n\n/**\n * Svg set\n * @extends CrudSetBase\n * @mixes OwnableResource\n */\nexport default class SvgSet extends mix(CrudSetBase, OwnableResource) {\n static get resourcePath () {\n return '/svgs/sets/{id}';\n }\n\n static get resourceName () {\n return 'svg-sets';\n }\n\n get _Child () {\n return Svg;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudSetItemBase from './base/CrudSetItemBase';\n\nexport default class Svg extends CrudSetItemBase {\n static get resourceName () {\n return 'svgs';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OwnableResource from '../traits/OwnableResource';\nimport { mix } from '../utils/reflection';\nimport CrudSetItemBase from './base/CrudSetItemBase';\n\n/**\n * Tag resource\n * @extends CrudSetItemBase\n * @mixes OwnableResource\n */\nexport default class Tag extends mix(CrudSetItemBase, OwnableResource) {\n static get resourceName () {\n return 'tags';\n }\n\n static get parentKey () {\n return 'tag_type_id';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OwnedResourceProxy from '../proxy/OwnedResourceProxy';\nimport ResourceProxy from '../proxy/ResourceProxy';\nimport CrudBase from './base/CrudBase';\nimport Color from './Color';\nimport Dimension from './Dimension';\nimport DimensionSet from './DimensionSet';\nimport Feature from './Feature';\nimport Font from './Font';\nimport FontFamily from './FontFamily';\nimport Job from './Job';\nimport JobShare from './JobShare';\nimport JobType from './JobType';\nimport Language from './Language';\nimport Layer from './Layer';\nimport Mapstyle from './Mapstyle';\nimport MapstyleSet from './MapstyleSet';\nimport Message from './Message';\nimport Notification from './Notification';\nimport Organisation from './Organisation';\nimport Permission from './Permission';\nimport Role from './Role';\nimport Svg from './Svg';\nimport SvgSet from './SvgSet';\nimport { makeCancelable } from '../utils/helpers';\n\nexport default class User extends CrudBase {\n static get resourceName () {\n return 'users';\n }\n\n /**\n * Get all known ips\n * @returns {CancelablePromise<string[]>} - List of ip addresses\n * @throws {ApiError} - If the api returns errors\n */\n ips () {\n const url = `${this.url}/ips`;\n\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.get(url, { signal }).json();\n\n return data.map(row => row['ip_address']);\n });\n }\n\n /**\n * Get the user's organisation\n * @returns {CancelablePromise<Organisation>} - User's organisation\n * @throws {ApiError} - If the api returns errors\n */\n organisation () {\n return new ResourceProxy(this.api, Organisation).get(this.organisationId);\n }\n\n /**\n * Get the user's language\n * @returns {CancelablePromise<Language>} - User's language\n * @throws {ApiError} - If the api returns errors\n */\n language () {\n return new ResourceProxy(this.api, Language).get(this.languageCode);\n }\n\n // region Resource listing\n /**\n * Get the list notifications linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get notifications () {\n return this._proxyResourceList(Notification);\n }\n\n /**\n * Get a list of read/unread messages for the user\n * @returns {CancelablePromise<{read: Message[], unread: Message[]}>} - Read and unread messages\n */\n messages () {\n const url = `${this.url}/messages`;\n\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.get(url, { signal }).json();\n\n return {\n read: data.read.map(o => new Message(this.api, o)),\n unread: data.unread.map(o => new Message(this.api, o)),\n };\n });\n }\n\n /**\n * Get the list mapstyle sets linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get mapstyleSets () {\n return this._proxyResourceList(MapstyleSet);\n }\n\n /**\n * Get the list mapstyles linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get mapstyles () {\n return this._proxyResourceList(Mapstyle);\n }\n\n /**\n * Get the list dimension sets linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get dimensionSets () {\n return this._proxyResourceList(DimensionSet);\n }\n\n /**\n * Get the list dimensions linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get dimensions () {\n return this._proxyResourceList(Dimension);\n }\n\n /**\n * Get the list font families linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get fontFamilies () {\n return this._proxyResourceList(FontFamily);\n }\n\n /**\n * Get the list fonts linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get fonts () {\n return this._proxyResourceList(Font);\n }\n\n /**\n * Get the list svg sets linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get svgSets () {\n return this._proxyResourceList(SvgSet);\n }\n\n /**\n * Get the list svgs linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get svgs () {\n return this._proxyResourceList(Svg);\n }\n\n /**\n * Get the list colors linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get colors () {\n return this._proxyResourceList(Color);\n }\n\n /**\n * Get the list jobs linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get jobs () {\n return this._proxyResourceList(Job);\n }\n\n /**\n * Get the list features linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get features () {\n return this._proxyResourceList(Feature);\n }\n\n /**\n * Get the list layers linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get layers () {\n return this._proxyResourceList(Layer);\n }\n\n /**\n * Get the list job types linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get jobTypes () {\n return this._proxyResourceList(JobType);\n }\n\n /**\n * Get the list job shares linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get jobShares () {\n return this._proxyResourceList(JobShare);\n }\n\n /**\n * Get the list permissions linked to the user\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get permissions () {\n return this._proxyResourceList(Permission);\n }\n\n /**\n * Get the list roles linked to the user\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get roles () {\n return new OwnedResourceProxy(this.api, this, Role);\n }\n\n // endregion\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ResourceBase from './base/ResourceBase';\n\nexport default class Permission extends ResourceBase {\n static get resourceName () {\n return 'permissions';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudSetItemBase from './base/CrudSetItemBase';\n\n/**\n * Mapstyle set color\n * @extends CrudSetItemBase\n */\nexport default class MapstyleSetColor extends CrudSetItemBase {\n static get resourcePath () {\n return '/mapstyles/sets/{mapstyle_set_id}/colors/{id}';\n }\n\n static get resourceName () {\n return 'mapstyle-set-colors';\n }\n\n get baseUrl () {\n return `${this._api.url}/mapstyles/sets/${this.mapstyleSetId}/colors`;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OwnableResource from '../traits/OwnableResource';\nimport { mix } from '../utils/reflection';\nimport CrudSetBase from './base/CrudSetBase';\nimport Mapstyle from './Mapstyle';\nimport ResourceProxy from '../proxy/ResourceProxy';\nimport MapstyleSetColor from './MapstyleSetColor';\n\n/**\n * Mapstyle set\n * @extends CrudSetBase\n * @mixes OwnableResource\n */\nexport default class MapstyleSet extends mix(CrudSetBase, OwnableResource) {\n static get resourcePath () {\n return '/mapstyles/sets/{id}';\n }\n\n static get resourceName () {\n return 'mapstyle-sets';\n }\n\n get _Child () {\n return Mapstyle;\n }\n\n get colors () {\n const data = {\n mapstyleSetId: this.id,\n };\n\n return new ResourceProxy(this.api, MapstyleSetColor, null, data);\n }\n}\n","module.exports = require(\"ky-universal\");","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport StaticClassError from '../errors/StaticClassError';\n\n/**\n * Disables the constructor and throws a {@link StaticClassError} when an instance is created.\n * @protected\n */\nexport default class StaticClass {\n constructor () {\n throw new StaticClassError();\n }\n}\n","module.exports = require(\"events\");","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OwnedResourceProxy from '../proxy/OwnedResourceProxy';\nimport CrudBase from './base/CrudBase';\nimport Color from './Color';\nimport Contract from './Contract';\nimport DimensionSet from './DimensionSet';\nimport Domain from './Domain';\nimport Feature from './Feature';\nimport FontFamily from './FontFamily';\nimport Job from './Job';\nimport JobShare from './JobShare';\nimport JobType from './JobType';\nimport Layer from './Layer';\nimport MapstyleSet from './MapstyleSet';\nimport SvgSet from './SvgSet';\nimport Tag from './Tag';\nimport User from './User';\nimport { makeCancelable } from '../utils/helpers';\nimport { encodeQueryString } from '../utils/requests';\nimport LayerGroup from './LayerGroup';\n\n\nexport default class Organisation extends CrudBase {\n static get resourceName () {\n return 'organisations';\n }\n\n // Resource listing\n /**\n * Get a proxy for font families linked to the organisation\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get fontFamilies () {\n return new OwnedResourceProxy(this.api, this, FontFamily);\n }\n\n /**\n * Get a proxy for dimension sets linked to the organisation\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get dimensionSets () {\n return new OwnedResourceProxy(this.api, this, DimensionSet);\n }\n\n /**\n * Get a proxy for mapstyle sets linked to the organisation\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get mapstyleSets () {\n return new OwnedResourceProxy(this.api, this, MapstyleSet);\n }\n\n /**\n * Get a proxy for svg sets linked to the organisation\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get svgSets () {\n return new OwnedResourceProxy(this.api, this, SvgSet);\n }\n\n /**\n * Get a proxy for colors linked to the organisation\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get colors () {\n return new OwnedResourceProxy(this.api, this, Color);\n }\n\n /**\n * Get a proxy for tags linked to the organisation\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get tags () {\n return new OwnedResourceProxy(this.api, this, Tag);\n }\n\n /**\n * Get a proxy for features linked to the organisation\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get features () {\n return new OwnedResourceProxy(this.api, this, Feature);\n }\n\n /**\n * Get a proxy for layers linked to the organisation\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get layers () {\n return new OwnedResourceProxy(this.api, this, Layer);\n }\n\n /**\n * Get a proxy for layer groups linked to the organisation\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get layerGroups () {\n return new OwnedResourceProxy(this.api, this, LayerGroup);\n }\n\n /**\n * Get a proxy for jobs linked to the organisation, also known as company maps\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get jobs () {\n return this._proxyResourceList(Job);\n }\n\n /**\n * Get a proxy for job types linked to the organisation\n * @returns {OwnedResourceProxy} - A proxy for accessing the resource\n */\n get jobTypes () {\n return new OwnedResourceProxy(this.api, this, JobType);\n }\n\n /**\n * Get a proxy for job shares linked to the organisation\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get jobShares () {\n return this._proxyResourceList(JobShare);\n }\n\n /**\n * Get a proxy for users linked to the organisation\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get users () {\n return this._proxyResourceList(User);\n }\n\n /**\n * Get a proxy for contracts linked to the organisation\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get contracts () {\n return this._proxyResourceList(Contract);\n }\n\n /**\n * Get a proxy for contracts linked to the organisation\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get domains () {\n return this._proxyResourceList(Domain);\n }\n\n /**\n * Get a tree representation of the organisation's relationships\n * @returns {CancelablePromise<Array<Organisation>>} - List of organisation root nodes. Organisations contain an extra property called \"children\"\n * @throws {ApiError} - If the api returns errors\n * @example\n * function printTree(nodes, prefix = '-') {\n * for (const node of nodes) {\n * console.log(`${prefix} ${node.name}`);\n *\n * printTree(node.children, prefix + '-');\n * }\n * }\n *\n * organisation.getTree().then(printTree)\n */\n getTree (deleted = null) {\n return makeCancelable(async signal => {\n let url = `${this.url}/tree`;\n\n if (typeof deleted === 'string') {\n const glue = url.includes('?') ? '&' : '?';\n\n url += glue + encodeQueryString({ deleted });\n }\n\n const { data } = await this.api.ky.get(url, { signal }).json();\n\n return data.map(root => this._parseTree(root));\n });\n }\n\n _parseTree (rawNode) {\n const node = new this.constructor(this._api, rawNode);\n\n node.children = node.children.map(child => this._parseTree(child));\n\n return node;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OAuthError from '../errors/OAuthError';\nimport OAuth from './OAuth';\n\n/**\n * Dummy flow for when the token should be available in the\n * cache and no attempt at authentication should be made.\n */\nexport default class DummyFlow extends OAuth {\n /**\n * @param {String} [clientId=] - OAuth client id\n * @param {Array<String>} scopes - A list of required scopes\n */\n constructor (clientId = '', scopes = ['*']) {\n super(clientId, scopes);\n }\n\n /**\n * Authenticate\n * @returns {Promise<OAuthToken>} - token\n * @throws {OAuthError}\n */\n authenticate () {\n return new Promise((resolve, reject) => {\n if (this.authenticated) {\n resolve(this.token);\n } else {\n reject(new OAuthError('dummy_error', 'Attempted authentication using a dummy authenticator'));\n }\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n\nimport GeoError from '../errors/GeoError';\n\n/**\n * A geographical point\n */\nexport class GeoPoint {\n /**\n * Geographical point\n * @param {Number} lat - latitude\n * @param {Number} lng - longitude\n */\n constructor (lat, lng) {\n this.lat = lat;\n this.lng = lng;\n }\n\n /**\n * Get latitude\n * @returns {Number} - latitude\n */\n get lat () {\n return this._lat;\n }\n\n /**\n * Set latitude\n * @param {Number} value - latitude\n */\n set lat (value) {\n value = Number(value);\n\n if (!Number.isFinite(value)) {\n throw new GeoError(`Invalid latitude: ${value}`);\n }\n\n this._lat = Math.min(90, Math.max(-90, value));\n }\n\n /**\n * Get longitude\n * @returns {Number} - longitude\n */\n get lng () {\n return this._lng;\n }\n\n /**\n * Set longitude\n * @param {Number} value - longitude\n */\n set lng (value) {\n value = Number(value);\n\n if (!Number.isFinite(value)) {\n throw new GeoError(`Invalid longitude: ${value}`);\n }\n\n this._lng = value;\n }\n\n /**\n * Get data to be JSON encoded\n * @returns {{lat: Number, lng: Number}} - data\n */\n toJSON () {\n return { lat: this.lat, lng: this.lng };\n }\n}\n\n/**\n * Geometric boundary\n */\nexport class GeoBoundary {\n /**\n * Geometric boundary\n * @param {Object} topLeft - top left corner of the boundary\n * @param {Number} topLeft.lat - top left corner latitude\n * @param {Number} topLeft.lng - top left corner longitude\n * @param {Object} bottomRight - bottom right corner of the boundary\n * @param {Number} bottomRight.lat - bottom right corner latitude\n * @param {Number} bottomRight.lng - bottom right corner longitude\n */\n constructor ({ lat: lat1, lng: lng1 }, { lat: lat2, lng: lng2 }) {\n this.topLeft = new GeoPoint(lat1, lng1);\n this.bottomRight = new GeoPoint(lat2, lng2);\n }\n\n getCenter () {\n const lat = (this.topLeft.lat + this.bottomRight.lat) / 2;\n const lng = (this.topLeft.lng + this.bottomRight.lng) / 2;\n\n return new GeoPoint(lat, lng);\n }\n\n /**\n * Top left coordinate\n * @type {GeoPoint}\n */\n topLeft;\n\n /**\n * Bottom right coordinate\n * @type {GeoPoint}\n */\n bottomRight;\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n\nimport ResourceBase from './base/ResourceBase';\n\nexport default class MessageVariant extends ResourceBase {\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudBase from './base/CrudBase';\nimport MessageVariant from './MessageVariant';\nimport { makeCancelable } from '../utils/helpers';\nimport { camel as camelCase, snake as snakeCase } from 'case';\n\nexport default class Message extends CrudBase {\n static get resourceName () {\n return 'messages';\n }\n\n toObject (camelCaseKeys = false) {\n const superObject = super.toObject(camelCaseKeys);\n\n superObject.variants = superObject.variants.map(variant => {\n if (variant instanceof MessageVariant) {\n return variant.toObject(camelCaseKeys);\n }\n\n const caseFn = camelCaseKeys ? camelCase : snakeCase;\n const res = {};\n const fields = Object.keys(variant);\n\n for (const field of fields) {\n res[caseFn(field)] = variant[field];\n }\n\n return res;\n });\n\n return superObject;\n }\n\n _guessType (name, value) {\n if (name === 'variants') {\n return Array.from(value).map(data => new MessageVariant(this.api, data));\n }\n\n return super._guessType(name, value);\n }\n\n _buildCreateData () {\n return this.toObject();\n }\n\n _update () {\n return makeCancelable(async signal => {\n const json = this.toObject();\n\n await this.api.ky.patch(this.url, { json, signal });\n\n // Reset changes\n Object.assign(this._baseProperties, this._properties);\n this._properties = {};\n\n if ('updated_at' in this._baseProperties) {\n this._baseProperties['updated_at'] = new Date();\n }\n\n return this;\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport StaticClass from './StaticClass';\n\n/**\n * UUID util class\n * @static\n * @private\n */\nexport default class Uuid extends StaticClass {\n /**\n * Generate a UUID4 string\n * @returns {string} - Uuid\n */\n static uuid4 () {\n let d = new Date().getTime();\n\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n d += performance.now(); // use high-precision timer if available\n }\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n const r = (d + (Math.random() * 16)) % 16 | 0;\n\n d = Math.floor(d / 16);\n\n return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n }\n\n /**\n * Empty uuid as per spec\n * @returns {string} - Uuid\n */\n static nil () {\n return '0000000-0000-0000-0000-000000000000';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport StorageManager from '../storage/StorageManager';\nimport StaticClass from '../utils/StaticClass';\nimport Uuid from '../utils/uuid';\n\n/**\n * State container for keeping track of OAuth states (crsf tokens)\n * @static\n * @private\n */\nexport default class StateContainer extends StaticClass {\n /**\n * LocalStorage key prefix\n * @returns {String} - prefix\n * @constant\n */\n static get prefix () {\n return 'oauth_state_';\n }\n\n /**\n * Generate and store a state that can be checked at a later point\n * @returns {string} - state\n */\n static generate () {\n const uuid = Uuid.uuid4();\n const key = StateContainer.prefix + uuid;\n\n StorageManager.best.set(key, Date.now());\n\n return uuid;\n }\n\n /**\n * Validate a state\n * @param {String} state - state to validate\n * @param {Boolean} purge - remove from state db after validation\n * @returns {Boolean} - if the state is valid\n */\n static validate (state, purge = true) {\n const storage = StorageManager.best;\n const key = StateContainer.prefix + state;\n const found = typeof storage.get(key) !== 'undefined';\n\n if (purge && found) {\n storage.remove(key);\n }\n\n return found;\n }\n\n /**\n * Remove all states from the state db\n */\n static clean () {\n const tokens = Object.keys(this.list());\n\n for (const token of tokens) {\n StorageManager.best.remove(StateContainer.prefix + token);\n }\n }\n\n /**\n * Get states with their corresponding state db key\n * @returns {Object<String, String>} - List of stored states\n */\n static list () {\n const storage = StorageManager.best;\n\n return storage\n .keys()\n .filter(x => x.startsWith(StateContainer.prefix))\n .map(x => x.replace(StateContainer.prefix, ''))\n .reduce((out, key) => {\n out[key] = storage.get(key);\n\n return out;\n }, {});\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { snake as snakeCase } from 'case';\nimport { EventEmitter } from 'events';\nimport Mapcreator from './Mapcreator';\nimport RequestParameters from './RequestParameters';\nimport ResourceBase from './resources/base/ResourceBase';\nimport { isParentOf } from './utils/reflection';\nimport { makeCancelable } from './utils/helpers';\n\n/**\n * Paginated resource lister\n *\n * @fires ResourceLister#update\n */\nexport default class ResourceLister extends EventEmitter {\n /**\n * ResourceLister constructor\n *\n * @param {Mapcreator} api - Api instance\n * @param {string} route - Resource url route\n * @param {Class<ResourceBase>} Resource - Resource constructor\n * @param {?RequestParameters} parameters - Request parameters\n * @param {number} [maxRows=50] - Initial max rows\n * @param {string} [key=id] - Key\n */\n constructor (api, route, Resource = ResourceBase, parameters = null, maxRows = 50, key = 'id') {\n super();\n\n if (!isParentOf(Mapcreator, api)) {\n throw new TypeError('Expected api to be of type Mapcreator');\n }\n\n this._api = api;\n this._Resource = Resource;\n this._route = route || new this.Resource(api, {}).baseUrl;\n this._parameters = new RequestParameters(parameters || { perPage: RequestParameters.maxPerPage });\n this._key = snakeCase(key);\n this._waiting = false;\n\n this.autoUpdate = true;\n this.maxRows = maxRows;\n\n this._reset();\n }\n\n /**\n * Get if there are more resources to fetch. It indicates if the maxRows can be increased.\n * @returns {boolean} - if more rows are available\n */\n get hasMore () {\n return typeof this.availableRows === 'undefined' || this.availableRows > this.maxRows;\n }\n\n /**\n * Get if the instance is waiting for data\n * @returns {boolean} - waiting for data\n */\n get waiting () {\n return this._waiting;\n }\n\n /**\n * Get the request parameters\n * @returns {RequestParameters} - parameters\n */\n get parameters () {\n return this._parameters;\n }\n\n /**\n * Set the request parameters\n *\n * If you set {@link ResourceLister#autoUpdate} to true then {@link ResourceLister#update}\n * will automatically be called when the parameters are updated.\n * @throws {ResourceLister#autoUpdate}\n * @param {RequestParameters} object - parameters\n */\n set parameters (object) {\n this.parameters.apply(object);\n }\n\n /**\n * Resource constructor accessor, used for building the resource instance\n * @returns {Class<ResourceBase>} - resource constructor\n */\n get Resource () {\n return this._Resource;\n }\n\n /**\n * Get the route (url)\n * @returns {string} - route\n */\n get route () {\n return this._route;\n }\n\n /**\n * Get the data\n * @returns {Array<ResourceLister.Resource>} - data\n */\n get data () {\n return this._data;\n }\n\n /**\n * Get the api instance\n * @returns {Mapcreator} - Api instance\n */\n get api () {\n return this._api;\n }\n\n /**\n * Get the row count\n *\n * @see {ResourceLister.data}\n * @returns {number} - row count\n */\n get rowCount () {\n return this.data.length;\n }\n\n /**\n * Get the maximum amount of rows allowed\n * @returns {number} - max rows\n */\n get maxRows () {\n return this._maxRows;\n }\n\n /**\n * Set the maximum amount of rows allowed\n * @param {number} value - max rows\n */\n set maxRows (value) {\n value = Number(value);\n\n if (Number.isNaN(value)) {\n throw new TypeError(`Expected maxRows to be numeric got ${typeof raw}`);\n }\n\n this._maxRows = value;\n\n if (this.autoUpdate) {\n // noinspection JSIgnoredPromiseFromCall\n this.update();\n }\n }\n\n /**\n * Get the number of rows the server has available\n * @returns {number} - number of rows\n */\n get availableRows () {\n return this._availableRows;\n }\n\n /**\n * Set if {@link ResourceLister#update} should be called when {@link ResourceLister#parameters} is updated\n *\n * @throws {ResourceLister#update}\n * @throws {ResourceLister#parameters}\n * @param {boolean} value - auto update\n */\n set autoUpdate (value) {\n value = Boolean(value);\n\n if (this.autoUpdate !== value) {\n this._autoUpdate = value;\n\n if (typeof this._boundUpdate === 'undefined') {\n this._boundUpdate = this.update.bind(this);\n }\n\n if (this.autoUpdate) {\n this.parameters.on('change', this._boundUpdate);\n } else {\n this.parameters.off('change', this._boundUpdate);\n }\n }\n }\n\n /**\n * Get if {@link ResourceLister#update} should be called when {@link ResourceLister#parameters} is updated\n *\n * @throws {ResourceLister#update}\n * @throws {ResourceLister#parameters}\n */\n get autoUpdate () {\n return this._autoUpdate;\n }\n\n /**\n * Reset the instance\n *\n * @private\n */\n _reset () {\n this._parameterToken = this.parameters.token();\n\n this._realData = [];\n this._data = [];\n this._keys = [];\n\n delete this._availableRows;\n }\n\n /**\n * Update the server data\n */\n async update () {\n if (this.waiting) {\n return;\n }\n\n this._waiting = true;\n\n try {\n if (this._parameterToken !== this.parameters.token()) {\n this._reset();\n }\n\n if (this._realData.length < this.maxRows) {\n try {\n await this._fetchMore();\n } catch (e) {\n this.autoUpdate = false;\n\n this.emit('error', e);\n\n throw e;\n }\n }\n\n if (this.data.length !== this.maxRows) {\n this._data = this._realData.slice(0, this.maxRows);\n }\n } finally {\n this._waiting = false;\n }\n\n /**\n * Update event.\n * Called when the ResourceLister has updated\n *\n * @event RequestLister#update\n */\n this.emit('update');\n }\n\n /**\n * Fetch more data from the server\n * @private\n * @returns {CancelablePromise}\n * @throws {ApiError} - If the api returns errors\n */\n _fetchMore () {\n const glue = this.route.includes('?') ? '&' : '?';\n const parameters = this.parameters.copy();\n\n parameters.offset += this.rowCount;\n\n const endPage = Math.ceil((this.maxRows - this.rowCount) / this.parameters.perPage);\n const promises = [];\n\n return makeCancelable(async signal => {\n for (; parameters.page <= endPage; parameters.page++) {\n const url = this.route + glue + parameters.encode();\n const promise = this.api.ky.get(url, { signal });\n\n promises.push(promise);\n }\n\n const responses = await Promise.all(promises);\n\n for (const response of responses) {\n const { data } = await response.json();\n\n data.forEach(row => this.push(row, false));\n\n this._availableRows = Number(response.headers.get('x-paginate-total')) + parameters.offset;\n }\n });\n }\n\n /**\n * Returns the iterable\n * @returns {Iterator} - iterator\n */\n [Symbol.iterator] () {\n return this.data[Symbol.iterator]();\n }\n\n /**\n * Push a row to the data collection\n *\n * This will append the row or update an existing row based on the key. If\n * autoMaxRows is set to true and maxRows only needs to be increased by one\n * for the new resource to show up it will\n * @param {ResourceLister.Resource} row - resource\n * @param {boolean} autoMaxRows - Increase maxRows if needed\n */\n push (row, autoMaxRows = true) {\n if (!isParentOf(this.Resource, row)) {\n row = new this.Resource(this.api, row);\n }\n\n const index = this._keys.findIndex(i => i === row[this._key]);\n\n if (index >= 0) {\n this._realData[index] = row;\n\n if (typeof this._data[index] !== 'undefined') {\n this._data[index] = row;\n }\n } else {\n this._realData.push(row);\n\n this._keys.push(row[this._key]);\n\n if (autoMaxRows) {\n this.maxRows++;\n\n this._data.push(row);\n }\n }\n }\n\n /**\n * Same as `this.maxRows += this.parameters.perPage`\n * @param {number} [rows=parameters.perPage] - Amount to increment maxRows with\n */\n loadMore (rows = this.parameters.perPage) {\n this.maxRows += rows;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { isParentOf } from '../utils/reflection';\nimport SimpleResourceProxy from './SimpleResourceProxy';\nimport { makeCancelable } from '../utils/helpers';\n\nexport default class OrganisationProxy extends SimpleResourceProxy {\n /**\n * @param {Mapcreator} api - Instance of the api\n * @param {ResourceBase} parent - Parent instance\n */\n constructor (api, parent) {\n // Fixes dependency issue\n const Organisation = require('../resources/Organisation').default;\n\n super(api, Organisation, `${parent.url}/organisations`, {});\n\n this._parent = parent;\n }\n\n /**\n * Returns parent instance\n * @returns {ResourceBase} - Parent instance\n */\n get parent () {\n return this._parent;\n }\n\n /**\n * Sync organisations to the parent resource\n * The organisations attached to the target resource will be replaced with the organisations provided in the request.\n * @param {Array<Organisation|number>} organisations - List of items to sync\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n sync (organisations) {\n return this._modifyLink(organisations, 'PATCH', this.Target);\n }\n\n /**\n * Attach organisations to the parent resource\n * The provided organisations will be attached to the resource if they're not already attached\n * @param {Array<Organisation|number>} organisations - List of items to attach\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n attach (organisations) {\n return this._modifyLink(organisations, 'POST', this.Target);\n }\n\n /**\n * Detach organisations from the parent resource\n * The provided organisations will be detached from the resource\n * @param {Array<Organisation|number>} organisations - List of items to detach\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n detach (organisations) {\n return this._modifyLink(organisations, 'DELETE', this.Target);\n }\n\n /**\n * Attach all organisations to the parent resource\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n attachAll () {\n return makeCancelable(async signal => {\n await this.api.ky.post(`${this.baseUrl}/all`, { signal });\n });\n }\n\n /**\n * Detach all organisations from the parent resource\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n detachAll () {\n return makeCancelable(async signal => {\n await this.api.ky.delete(`${this.baseUrl}/all`, { signal });\n });\n }\n\n /**\n * Sync, attach or unlink resources\n * @param {Array<Organisation|Number>|Organisation|Number} items - List of items to sync or attach\n * @param {String} method - Http method to use\n * @param {Class<ResourceBase>} Type - Resource type\n * @param {?String} path - Optional appended resource path, will guess if null\n * @throws {ApiError} - If the api returns errors\n * @protected\n * @returns {CancelablePromise}\n */\n _modifyLink (items, method, Type, path = null) {\n if (!Array.isArray(items)) {\n items = [items];\n }\n\n if (!path) {\n const resource = Type.resourceName.replace(/s+$/, '');\n\n path = `${resource}s`;\n }\n\n const keys = items.map(x => typeof x === 'number' ? x : x.id).map(Number);\n const filter = x => !isParentOf(Type, x) && !Number.isFinite(x);\n const isValid = keys.filter(filter).length === 0;\n\n if (!isValid) {\n throw new TypeError(`Array must contain either Numbers (resource id) or \"${Type.name}\".`);\n }\n\n const url = `${this.parent.url}/${path}`;\n\n return makeCancelable(async signal => {\n await this.api.ky(url, { method, signal, json: { keys } });\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudBase from './base/CrudBase';\n\n/**\n * Contract resource\n */\nexport default class Contract extends CrudBase {\n static get resourceName () {\n return 'contracts';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudBase from './base/CrudBase';\n\n/**\n * Domain resource\n */\nexport default class Domain extends CrudBase {\n static get resourceName () {\n return 'domains';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { isParentOf } from '../utils/reflection';\nimport CrudBase from './base/CrudBase';\nimport JobResult from './JobResult';\nimport JobShare from './JobShare';\nimport Layer from './Layer';\nimport RequestParameters from '../RequestParameters';\nimport { encodeQueryString } from '../utils/requests';\nimport { DeletedState } from '../enums';\nimport { makeCancelable } from '../utils/helpers';\n\nexport default class JobRevision extends CrudBase {\n get baseUrl () {\n return `${this._api.url}/jobs/${this.jobId}/revisions`;\n }\n\n static get resourcePath () {\n return '/jobs/{job_id}/revisions/{revision}';\n }\n\n static get resourceName () {\n return 'job-revisions';\n }\n\n static get resourceUrlKey () {\n return 'revision';\n }\n\n /**\n * Get layers\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get layers () {\n return this._proxyResourceList(Layer);\n }\n\n /**\n * Get the job result\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<JobResult>} - The associated job result\n * @throws {ApiError} - If the api returns errors\n */\n result (deleted = RequestParameters.deleted || DeletedState.NONE) {\n return makeCancelable(async signal => {\n const url = `${this.url}/result?${encodeQueryString({ deleted })}`;\n const { data } = await this.api.ky.get(url, { signal }).json();\n\n data.jobId = this.jobId;\n data.revision = this.revision;\n\n return new JobResult(this.api, data);\n });\n }\n\n /**\n * Get a result proxy\n *\n * @returns {JobResult} - Empty job result used for\n */\n get resultProxy () {\n const data = {\n jobId: this.jobId,\n revision: this.revision,\n };\n\n return new JobResult(this.api, data);\n }\n\n // noinspection JSCheckFunctionSignatures\n /**\n * Save updated job revision\n * @param {Object} object - Map object\n * @param {Array<Layer>|Array<Number>|null} layers - Array containing all layers for this revision. If set to null the same layers will be used\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<JobRevision>} - New job revision\n * @throws {TypeError}\n * @throws {ApiError} - If the api returns errors\n */\n save (object = {}, layers = null, deleted = RequestParameters.deleted || DeletedState.NONE) {\n if (layers && layers.length > 0) {\n if (isParentOf(Layer, layers[0])) {\n layers = layers.map(layer => layer.id);\n } else if (typeof layers[0] !== 'number') {\n throw new TypeError('layers property is not of type Array<Layer>, Array<Number> or null');\n }\n }\n\n const json = {\n 'object': JSON.stringify(object),\n 'language_code': this.languageCode,\n 'mapstyle_set_id': this.mapstyleSetId,\n };\n\n if (layers) {\n json.layers = layers;\n }\n\n const url = `${this.baseUrl}?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.post(url, { json, signal }).json();\n\n return new JobRevision(this.api, data);\n });\n }\n\n /**\n * Get job object\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise<Object>} - The map object\n * @throws {ApiError} - If the api returns errors\n */\n object (deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.url}/object?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.get(url, { signal }).json();\n\n return data;\n });\n }\n\n /**\n * Build the revision\n * @param {String} callback - Optional callback url for when the job completes\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n build (callback, deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.url}/build?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n await this.api.ky.post(url, { json: { callback }, signal });\n });\n }\n\n /**\n * Cancels a running job\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @returns {CancelablePromise}\n * @throws {ApiError} - If the api returns errors\n */\n cancel (deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.url}/cancel?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n await this.api.ky.post(url, { signal });\n });\n }\n\n // noinspection JSCheckFunctionSignatures\n /**\n * Clones a job revision to the user requesting it\n * @param {String} [title=null] - The new title for the job\n * @param {String} [deleted=RequestParameters.deleted] - Determines if the resource should be shown if deleted, requires special resource permissions. Possible values: only, none, all\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise<JobRevision>} - The new job revision, which will be linked to a new job\n */\n clone (title = null, deleted = RequestParameters.deleted || DeletedState.NONE) {\n const url = `${this.url}/clone?${encodeQueryString({ deleted })}`;\n\n return makeCancelable(async signal => {\n const { data } = await this.api.ky.post(url, { json: { title }, signal }).json();\n\n return new JobRevision(this.api, data);\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudBase from './base/CrudBase';\n\nexport default class Language extends CrudBase {\n static get resourceName () {\n return 'languages';\n }\n\n static get resourcePath () {\n return `/${this.resourceName}/{code}`;\n }\n\n toString () {\n return `${this.constructor.name}(${this.code})`;\n }\n\n static get resourceUrlKey () {\n return 'code';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CrudBase from './base/CrudBase';\n\nexport default class Notification extends CrudBase {\n static get resourceName () {\n return 'notifications';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OwnedResourceProxy from '../proxy/OwnedResourceProxy';\nimport CrudBase from './base/CrudBase';\nimport Permission from './Permission';\nimport User from './User';\n\nexport default class Role extends CrudBase {\n /**\n * Get the list permissions linked to the role\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get permissions () {\n return new OwnedResourceProxy(this.api, this, Permission);\n }\n\n /**\n * Get the list users linked to the role\n * @returns {SimpleResourceProxy} - A proxy for accessing the resource\n */\n get users () {\n return new OwnedResourceProxy(this.api, this, User);\n }\n\n static get resourceName () {\n return 'roles';\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nexport GeoResourceProxy from './GeoResourceProxy';\nexport OrganisationProxy from './OrganisationProxy';\nexport OwnedResourceProxy from './OwnedResourceProxy';\nexport ResourceProxy from './ResourceProxy';\nexport SimpleResourceProxy from './SimpleResourceProxy';\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Invoked upon nodejs specific errors\n */\nexport default class NodeError extends Error { }\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nexport * from './AbstractError';\nexport ApiError from './ApiError';\nexport ValidationError from './ValidationError';\nexport NodeError from './NodeError';\nexport OAuthError from './OAuthError';\nexport StaticClassError from './StaticClassError';\nexport GeoError from './GeoError';\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ResourceBase from '../resources/base/ResourceBase';\nimport { hasTrait, isParentOf } from '../utils/reflection';\nimport Trait from './Trait';\n\n/**\n * Adds the possibility to inject proxies/methods\n *\n * @mixin\n */\nexport default class Injectable extends Trait {\n /**\n * Inject proxies and methods during the constructor\n */\n initializer () {\n const injectable = this.constructor._injectable || {};\n\n for (const name of Object.keys(injectable)) {\n const { value, isProxy } = injectable[name];\n\n if (isProxy) {\n this.injectProxy(name, value);\n } else {\n this.inject(name, value);\n }\n }\n }\n\n /**\n * Inject a proxy property into future instances\n *\n * @param {string|object} name - Name of the property\n * @param {function?} value - Either a resource or a function that returns a proxy\n *\n * @example\n *\n * Mapcreator.injectProxy({Domain});\n *\n * // After creating new api instance\n *\n * api.domains // returns proxy\n */\n static injectProxy (name, value) {\n if (value) {\n if (typeof this._injectable === 'undefined') {\n this._injectable = {};\n }\n\n this._injectable[name] = { value, isProxy: true };\n } else {\n // Handle vue-style injections `.inject({ Foo, Bar, Baz })`\n for (const key of Object.keys(name)) {\n this.inject(key, name[key]);\n }\n }\n }\n\n /**\n * Inject a property into future instances\n *\n * @param {string|object} name - Name of the property\n * @param {function?} value - Any function that does not return a proxy\n *\n */\n static inject (name, value) {\n if (value) {\n if (typeof this._injectable === 'undefined') {\n this._injectable = {};\n }\n\n this._injectable[name] = { value, isProxy: false };\n } else {\n // Handle vue-style injections `.inject({ Foo, Bar, Baz })`\n for (const key of Object.keys(name)) {\n this.inject(key, name[key]);\n }\n }\n }\n\n /**\n * Prevent a property from being injected\n * @param {string} name - Name of the property\n */\n static uninject (name) {\n if (typeof this._injectable !== 'undefined') {\n delete this._injectable[name];\n }\n }\n\n /**\n * Inject a proxy\n * @param {string} name - Name of the property\n * @param {function?} value - Either a resource or a function that returns a proxy\n */\n injectProxy (name, value) {\n if (!value) {\n // Handle vue-style injections `.inject({ Foo, Bar, Baz })`\n for (const key of Object.keys(name)) {\n this.injectProxy(key, name[key]);\n }\n } else if (isParentOf(ResourceBase, value)) {\n this._injectProxy(name, value);\n } else {\n this._inject(name, value);\n }\n }\n\n /**\n * Inject a property into the instance\n *\n * @param {string|object} name - Name of the property\n * @param {function?} value - Any function that does not return a proxy\n *\n */\n inject (name, value) {\n this._inject(name, value, false);\n }\n\n /**\n * Revert a proxy injection in instance, won't delete non-injected properties\n *\n * @param {string} name - property name\n * @throws Error when the property was not injected\n */\n uninject (name) {\n const descriptor = Object.getOwnPropertyDescriptor(this, name);\n const value = descriptor.value || descriptor.get || {};\n\n if (!value.injected) {\n throw new Error(`Property \"${name}\" was not injected, can't un-inject`);\n }\n\n if (value.original) {\n Object.defineProperty(this, name, value.original);\n } else {\n Object.defineProperty(this, name, {\n // eslint-disable-next-line no-undefined\n value: undefined,\n enumerable: false,\n writable: true,\n });\n }\n }\n\n _injectProxy (name, value) {\n if (name === value.name) {\n name = `${name.replace(/^\\w/, c => c.toLowerCase())}s`;\n }\n\n const OwnableResource = require('./OwnableResource').default;\n\n if (hasTrait(value, OwnableResource)) {\n const OwnedResourceProxy = require('../proxy/OwnedResourceProxy').default;\n\n this._inject(name, function () {\n return new OwnedResourceProxy(this.api, this, value);\n });\n } else if (isParentOf(ResourceBase, value) && this._proxyResourceList) {\n // returns a SimpleResourceProxy\n this._inject(name, function () {\n return this._proxyResourceList(value);\n });\n } else {\n const ResourceProxy = require('../proxy/ResourceProxy').default;\n\n this._inject(name, function () {\n return new ResourceProxy(this, value);\n });\n }\n }\n\n _inject (name, value, getter = true) {\n const func = (...args) => value.apply(this, args);\n const original = Object.getOwnPropertyDescriptor(this, name);\n\n func.injected = true;\n\n // Store the original property descriptor if available\n if (original) {\n func.original = original;\n }\n\n Object.defineProperty(this, name, {\n enumerable: false,\n configurable: true,\n\n [getter ? 'get' : 'value']: func,\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OwnableResource from '../traits/OwnableResource';\nimport { mix } from '../utils/reflection';\nimport Layer from './Layer';\nimport CrudSetBase from './base/CrudSetBase';\nimport { OwnedResourceProxy } from '../proxy';\n\n/**\n * LayerGroup\n * @extends CrudBase\n * @mixes OwnableResource\n * @mixes HandlesImages\n */\nexport default class LayerGroup extends mix(CrudSetBase, OwnableResource) {\n static get resourceName () {\n return 'layer-groups';\n }\n\n get items () {\n return new OwnedResourceProxy(this.api, this, this._Child);\n }\n\n get _Child () {\n return Layer;\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Mapcreator from './Mapcreator';\nimport DownloadedResource from './resources/base/DownloadedResource';\nimport ResourceBase from './resources/base/ResourceBase';\nimport { isParentOf } from './utils/reflection';\nimport { FormData } from './utils/requests';\nimport { makeCancelable } from './utils/helpers';\n\n/**\n * Image resource handler\n * @protected\n */\nexport default class ImageHandler {\n /**\n * @param {Mapcreator} api - Api instance\n * @param {ResourceBase} target - Instance of target item\n */\n constructor (api, target) {\n if (!isParentOf(Mapcreator, api)) {\n throw new TypeError('Expected api to be of type Mapcreator');\n }\n\n if (!isParentOf(ResourceBase, target)) {\n throw new TypeError('Expected target to be of type ResourceBase');\n }\n\n this._api = api;\n this._target = target;\n }\n\n /**\n * Get api instance\n * @returns {Mapcreator} - Api instance\n */\n get api () {\n return this._api;\n }\n\n /**\n * Resource url, can be used in an image tag\n * @returns {string} - Resource url\n */\n get url () {\n return `${this._target.url}/image`;\n }\n\n /**\n * Delete image\n * @throws {ApiError} - If the api returns errors\n * @returns {CancelablePromise}\n */\n delete () {\n // use the makeCancelable helper so we don't return the response object\n return makeCancelable(async signal => {\n await this.api.ky.delete(this.url, { signal });\n });\n }\n\n /**\n * Download the image\n * @returns {CancelablePromise<DownloadedResource>} - image\n * @throws {ApiError} - If the api returns errors\n * @example\n * // Browser\n * layer.imageHandler.download().then(image => {\n * $('img').src = image.createObjectURL();\n * });\n *\n * // NodeJs\n * layer.imageHandler.download().then({fileName, data} => {\n * fs.writeFileSync(fileName, data);\n * });\n */\n download () {\n return makeCancelable(async signal => {\n const response = await this.api.ky.get(this.url, { signal });\n\n return DownloadedResource.fromResponse(response);\n });\n }\n\n /**\n * Upload new image\n * @param {ArrayBuffer|ArrayBufferView|File|Blob|Buffer} image - Image file\n * @returns {CancelablePromise}\n * @throws {ApiError} - If the api returns errors\n */\n upload (image) {\n const body = new FormData();\n\n body.append('image', image, 'image');\n\n const headers = {};\n\n if (body.getHeaders) {\n Object.assign(headers, body.getHeaders());\n }\n\n return makeCancelable(async signal => {\n await this.api.ky.post(this.url, { headers, body, signal });\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Trait from './Trait';\nimport ImageHandler from '../ImageHandler';\n\n\n/**\n * Adds the imageHandler to a resource\n *\n * @mixin\n */\nexport default class HandlesImages extends Trait {\n /**\n * Handler for item image management\n * @returns {ImageHandler} - Image handler\n */\n get imageHandler () {\n return new ImageHandler(this.api, this);\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { isNode } from '../utils/node';\nimport DataStoreContract from './DataStoreContract';\n\n/**\n * @private\n */\nexport default class FileDriver extends DataStoreContract {\n /**\n * @param {String} path - File storage path\n * @inheritDoc\n */\n constructor (path = '.m4n') {\n super();\n\n this._path = path;\n }\n\n /**\n * File storage path\n * @returns {String} - path\n */\n get path () {\n return this._path;\n }\n\n /**\n * File storage path\n * @param {String} value - path\n */\n set path (value) {\n if (typeof value !== 'string') {\n throw new TypeError('Expected \"path\" value to be of type \"string\"');\n }\n\n this._path = value;\n }\n\n /**\n * @inheritDoc\n */\n static get available () {\n return isNode();\n }\n\n /**\n * @inheritDoc\n */\n static get secure () {\n return true;\n }\n\n /**\n * @inheritDoc\n */\n set (name, value) {\n const data = this._read();\n\n data[name] = value;\n\n this._write(data);\n }\n\n /**\n * @inheritDoc\n */\n get (name) {\n return this._read()[name];\n }\n\n /**\n * @inheritDoc\n */\n remove (name) {\n const data = this._read();\n\n delete data[name];\n\n this._write(data);\n }\n\n /**\n * @inheritDoc\n */\n clear () {\n this._write({});\n }\n\n /**\n * @inheritDoc\n */\n keys () {\n return Object.keys(this._read());\n }\n\n /**\n * Read file and parse\n * @returns {Object<String, String>} - Key, value object\n * @private\n */\n _read () {\n let data;\n\n try {\n data = this._fs.readFileSync(this.path).toString();\n } catch (e) {\n data = '{}';\n }\n\n if (!data) {\n return {};\n }\n\n return JSON.parse(data);\n }\n\n /**\n * Write data to file\n * @param {Object<String, String>} obj - Key, value object\n * @private\n */\n _write (obj) {\n const data = JSON.stringify(obj);\n const fd = this._fs.openSync(this.path, 'w');\n\n this._fs.writeSync(fd, data);\n this._fs.closeSync(fd);\n }\n\n /**\n * Get fs instance\n * @returns {fs} - fs instance\n * @private\n */\n get _fs () {\n if (!this.__fs) {\n // eslint-disable-next-line no-eval\n this.__fs = eval('require(\"fs\")');\n }\n\n return this.__fs;\n }\n}\n","module.exports = require(\"json-stable-stringify\");","module.exports = require(\"form-data\");","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OAuth from './OAuth';\nimport OAuthToken from './OAuthToken';\nimport StateContainer from './StateContainer';\nimport { encodeQueryString } from '../utils/requests';\nimport OAuthError from '../errors/OAuthError';\nimport { isNode } from '../utils/node';\nimport { title as titleCase } from 'case';\n\n/**\n * Implicit OAuth flow using redirection\n */\nexport default class ImplicitFlow extends OAuth {\n\n /**\n * Implicit authentication flow\n * @param {String} clientId - OAuth client id\n * @param {String} callbackUrl - callbackUrl for obtaining the token. This should be a\n * page with this script on it. If left empty the current\n * url will be used.\n * @param {Array<String>} scopes - A list of required scopes\n * @param {Boolean} useState - use state verification\n */\n constructor (clientId, callbackUrl = '', scopes = ['*'], useState = true) {\n super(clientId, scopes);\n\n if (isNode()) {\n throw new Error(`${this.constructor.name} can't be used under nodejs`);\n }\n\n this.path = '/oauth/authorize';\n\n this.callbackUrl = callbackUrl;\n this.useState = useState;\n\n if (!this.callbackUrl) {\n // Drop the anchor (if any)\n this.callbackUrl = window.location.toString().split('#')[0];\n }\n\n this._anchorParams = [\n 'access_token', 'token_type', 'expires_in',\n ];\n\n if (this.useState) {\n this._anchorParams.push('state');\n }\n\n if (this._anchorContainsOAuthResponse()) {\n const anchorParams = this._getOAuthAnchorParams();\n\n this._cleanAnchorParams();\n\n if (this.useState && !StateContainer.validate(anchorParams.state)) {\n throw Error('Invalid state in url');\n } else {\n this.token = OAuthToken.fromResponseObject(anchorParams);\n }\n }\n }\n\n /**\n * @inheritDoc\n */\n authenticate () {\n return new Promise((resolve, reject) => {\n if (this.authenticated) {\n resolve(this.token);\n } else if (this._anchorContainsError()) {\n const err = this._getError();\n\n this._cleanAnchorParams();\n\n reject(err);\n } else {\n window.location = this._buildRedirectUrl();\n }\n });\n }\n\n /**\n * Builds the url for redirection\n * @returns {String} - Redirect url\n * @protected\n */\n _buildRedirectUrl () {\n const queryParams = {\n 'client_id': this.clientId,\n 'redirect_uri': this.callbackUrl,\n 'response_type': 'token',\n 'scope': this.scopes.join(' '),\n };\n\n if (this.useState) {\n queryParams.state = StateContainer.generate();\n }\n\n return `${this.host + this.path}?${encodeQueryString(queryParams)}`;\n }\n\n /**\n * Builds an object containing all the anchor parameters\n * @param {String} query - Url hash\n * @returns {Object<String, String>} - Anchor parameters\n * @protected\n */\n _getAnchorParams (query = window.location.hash) {\n const out = {};\n\n query = query.replace(/^#\\/?/g, '');\n\n for (const raw of query.split('&')) {\n const pair = raw.split('=').map(decodeURIComponent);\n\n out[pair[0]] = pair[1];\n }\n\n return out;\n }\n\n /**\n * Fetch OAuth anchor params\n * @param {Object<String, String>} query - Optional override for the query to analyse, defaults to {@link ImplicitFlow#_getAnchorParams}\n * @returns {Object<String, String>} - List of OAuth anchor parameters\n * @protected\n */\n _getOAuthAnchorParams (query = this._getAnchorParams()) {\n return Object.keys(query)\n .filter(key => this._anchorParams.includes(key))\n .reduce((obj, key) => {\n obj[key] = query[key];\n\n return obj;\n }, {});\n }\n\n /**\n * Remove OAuth related anchor parameters\n * @protected\n */\n _cleanAnchorParams () {\n const anchorParams = this._getAnchorParams();\n const targets = this._anchorParams;\n\n // Just in case\n targets.push('state', 'error');\n\n for (const key of targets) {\n // Should silently fail when key doesn't exist\n delete anchorParams[key];\n }\n\n window.location.hash = encodeQueryString(anchorParams);\n }\n\n /**\n * Test if the anchor contains an OAuth response\n * @returns {Boolean} - If anchor tested positive for containing an OAuth response\n * @protected\n */\n _anchorContainsOAuthResponse () {\n const queryKeys = Object.keys(this._getOAuthAnchorParams());\n\n // Check if all the params are in the anchor\n return this._anchorParams.reduce((output, key) => output && queryKeys.includes(key), true);\n }\n\n /**\n * Test if the anchor contains an OAuth error\n * @returns {Boolean} - If anchor tested positive for containing an OAuth error\n * @protected\n */\n _anchorContainsError () {\n return Boolean(this._getAnchorParams().error);\n }\n\n /**\n * Get and return the error in the anchor\n * @returns {OAuthError} - OAuthError object\n * @protected\n */\n _getError () {\n if (!this._anchorContainsError()) {\n throw Error('No OAuthError found in anchor');\n }\n\n const params = this._getAnchorParams();\n\n if (params.message) {\n return new OAuthError(params.error, params.message);\n }\n\n return new OAuthError(params.error, titleCase(params.error));\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport OAuthError from '../errors/OAuthError';\nimport ImplicitFlow from './ImplicitFlow';\nimport OAuthToken from './OAuthToken';\n\n/**\n * Implicit OAuth flow using a pop-up.\n */\nexport default class ImplicitFlowPopup extends ImplicitFlow {\n /**\n * Implicit pop-up authentication flow\n * @param {String} clientId - OAuth client id\n * @param {String} callbackUrl - callbackUrl for obtaining the token. This should be a\n * page with this script on it. If left empty the current\n * url will be used.\n * @param {Array<String>} scopes - A list of required scopes\n * @param {Boolean} useState - use state verification\n * @param {String} windowOptions - optional window options for the pop-up window\n */\n constructor (clientId, callbackUrl = '', scopes = ['*'], useState = false, windowOptions = process.env.WINDOW_OPTIONS) {\n super(clientId, callbackUrl, scopes, useState);\n\n this.windowOptions = windowOptions;\n\n if (window.name === ImplicitFlowPopup.popupWindowName) {\n throw new Error('We\\'re a flow popup');\n }\n }\n\n /**\n * Popup window name\n * @returns {String} - window.name of the created pop-up\n * @constant\n */\n static get popupWindowName () {\n return 'm4n_api_auth';\n }\n\n /**\n * @inheritDoc\n */\n authenticate () {\n if (window.name === ImplicitFlowPopup.popupWindowName) {\n return new Promise(() => {\n });\n }\n\n // Should be super.super.authenticate() :/\n if (this.authenticated) {\n return new Promise(resolve => {\n resolve(this.token);\n });\n }\n\n return new Promise((resolve, reject) => {\n const popup = window.open(\n this._buildRedirectUrl(),\n ImplicitFlowPopup.popupWindowName,\n this.windowOptions,\n );\n\n const ticker = setInterval(() => {\n if (popup.closed) {\n reject(new OAuthError('window_closed', 'Pop-up window was closed before data could be extracted'));\n }\n\n let done = false;\n\n try {\n done = !['', 'about:blank'].includes(popup.location.href);\n } catch (e) {\n // Nothing\n }\n\n if (done) {\n clearInterval(ticker);\n\n const data = this._getAnchorParams(popup.location.hash);\n\n popup.close();\n\n if (data.error) {\n reject(new OAuthError(data.error, data.message));\n } else {\n resolve(this.token = OAuthToken.fromResponseObject(data));\n }\n }\n }, 250);\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ky from 'ky-universal';\nimport OAuthError from '../errors/OAuthError';\nimport { isNode } from '../utils/node';\nimport OAuth from './OAuth';\nimport OAuthToken from './OAuthToken';\nimport { makeCancelable } from '../utils/helpers';\n\n\n/**\n * Password authentication flow\n */\nexport default class PasswordFlow extends OAuth {\n /**\n * @param {string} clientId - OAuth client id\n * @param {string} secret - OAuth secret\n * @param {string} username - Valid username (email)\n * @param {string} password - Valid password\n * @param {Array<string>} scopes - A list of required scopes\n */\n constructor (clientId, secret, username, password, scopes = ['*']) {\n super(clientId, scopes);\n\n this._secret = secret;\n this._username = username;\n this._password = password;\n\n this._path = '/oauth/token';\n\n // Because the client requires a secret HTTPS is highly recommended\n if (!isNode()) {\n console.warn('Using PasswordFlow in the browser is unrecommended');\n\n if (window.location.protocol !== 'https:') {\n console.warn('Page was not loaded using https. You\\'re most likely leaking secrets right now');\n }\n }\n }\n\n /**\n * it's a secret :o (client secret)\n * @returns {String} - secret\n */\n get secret () {\n return this._secret;\n }\n\n /**\n * Set client secret\n * @param {String} value - secret\n */\n set secret (value) {\n this._secret = value;\n }\n\n /**\n * Get the username for authentication\n * @returns {String} - Username (email)\n */\n get username () {\n return this._username;\n }\n\n /**\n * Get the username for authentication\n * @param {String} value - Username (email)\n */\n set username (value) {\n this._username = value;\n }\n\n /**\n * Get the password\n * @returns {String} - Password\n */\n get password () {\n return this._password;\n }\n\n /**\n * Set the password\n * @param {String} value - password\n */\n set password (value) {\n this._password = value;\n }\n\n /**\n * OAuth path\n * @returns {String} - OAuth path\n */\n get path () {\n return this._path;\n }\n\n /**\n * OAuth path\n * @param {String} value - OAuth path\n */\n set path (value) {\n this._path = value;\n }\n\n /**\n * Authenticate\n * @returns {CancelablePromise<OAuthToken>} - Response token\n * @throws {OAuthError}\n */\n authenticate () {\n const url = this.host + this.path;\n const json = {\n 'grant_type': 'password',\n 'client_id': this.clientId,\n 'client_secret': this._secret,\n 'username': this.username,\n 'password': this.password,\n 'scope': this.scopes.join(' '),\n };\n\n return makeCancelable(async signal => {\n const data = await ky.post(url, { json, signal }).json();\n\n if (data.error) {\n throw new OAuthError(data.error, data.message);\n }\n\n this.token = OAuthToken.fromResponseObject(data);\n this.token.scopes = this.scopes;\n\n return this.token;\n });\n }\n}\n","/*\n * BSD 3-Clause License\n *\n * Copyright (c) 2020, Mapcreator\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n// Core\nexport Mapcreator from './Mapcreator';\nexport RequestParameters from './RequestParameters';\nexport StorageManager from './storage/StorageManager';\n\n// Enums\nexport Enum from './enums/Enum';\nexport { DeletedState, ResultStatus } from './enums';\n\n// Flows\nexport OAuth from './oauth/OAuth';\nexport OAuthToken from './oauth/OAuthToken';\nexport ImplicitFlow from './oauth/ImplicitFlow';\nexport ImplicitFlowPopup from './oauth/ImplicitFlowPopup';\nexport PasswordFlow from './oauth/PasswordFlow';\nexport DummyFlow from './oauth/DummyFlow';\n\n// Exceptions\nexport ApiError from './errors/ApiError';\nexport * from './errors/AbstractError';\nexport ValidationError from './errors/ValidationError';\nexport StaticClassError from './errors/StaticClassError';\n\n// Resources\nexport * as resources from './resources';\n\n// Helpers\nexport * as helpers from './utils/helpers';\nexport ResourceLister from './ResourceLister';\nexport * as geo from './utils/geo';\n\n// Errors\nexport * as errors from './errors';\n\n// Proxies\nexport * as proxies from './proxy';\n\n\n/**\n * Package version\n * @private\n */\nexport const version = VERSION;\n"],"sourceRoot":""}