zavadil-ts-common 2.1.1 → 2.1.2
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.
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/oauth/OAuthTokenManager.ts +4 -3
- package/tsconfig.json +18 -30
package/dist/index.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};function e(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}var n=function(){return n=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var o in e=arguments[n])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},n.apply(this,arguments)};"function"==typeof SuppressedError&&SuppressedError;var r,o=function(){function t(t){this.supplier=t}return t.prototype.get=function(){var t=this;return void 0!==this.cache?Promise.resolve(this.cache):(void 0===this.promise&&(this.promise=this.supplier().then((function(e){return t.cache=e,t.promise=void 0,Promise.resolve(e)})).catch((function(e){return t.promise=void 0,Promise.reject(e)}))),this.promise)},t.prototype.reset=function(){this.cache=void 0},t.prototype.hasCache=function(){return void 0!==this.cache},t.prototype.getCache=function(){return this.cache},t}(),i=function(t){function n(e,n){var r=t.call(this,e)||this;return r.maxAgeMs=n,r}return e(n,t),n.prototype.get=function(){return this.expires&&this.expires>new Date&&this.reset(),t.prototype.get.call(this)},n.prototype.set=function(t,e){this.cache=t,this.expires=e,this.maxAgeMs&&void 0===this.expires&&(this.expires=new Date((new Date).getTime()+this.maxAgeMs))},n}(o),s=function(){function t(t,e){this.cache=new Map,this.maxSize=100,this.supplier=t,e&&(this.maxSize=e)}return t.prototype.obtainCache=function(t){var e=this,n=this.cache.get(t);return n||(n=new i((function(){return e.supplier(t)})),this.cache.set(t,n)),n},t.prototype.get=function(t){return this.obtainCache(t).get()},t.prototype.set=function(t,e,n){this.obtainCache(t).set(e,n)},t.prototype.reset=function(t){t?this.cache.delete(t):this.cache.clear()},t.prototype.getSize=function(){return this.cache.size},t.prototype.getMaxSize=function(){return this.maxSize},t.prototype.getStats=function(){return{cachedItems:this.getSize(),capacity:this.getMaxSize()}},t.prototype.hasCache=function(t){return this.cache.has(t)},t}(),u=function(){function t(t){this.supplier=t}return t.prototype.get=function(){return void 0===this.cache&&(this.cache=this.supplier()),this.cache},t.prototype.reset=function(){this.cache=void 0},t.prototype.hasCache=function(){return void 0!==this.cache},t}(),a=function(){function t(){}return t.isEmpty=function(t){return null==t},t.notEmpty=function(e){return!t.isEmpty(e)},t.clone=function(t){if(null===t)throw new Error("Null cannot be cloned!");if("object"!=typeof t)throw new Error("Not an object, cannot be cloned!");return n({},t)},t.getNestedValue=function(t,e){if(!t||""===t)return"";for(var n=t,r=0,o=e.split(".");r<o.length;r++){var i=o[r];if(!n||"object"!=typeof n||!(i in n))return"";n=n[i]}return n},t}(),c=function(){function t(){}return t.isString=function(t){return"string"==typeof t},t.toString=function(e){var n,r;return t.isString(e)?e:null!==(r=null===(n=null==e?void 0:e.toString)||void 0===n?void 0:n.call(e))&&void 0!==r?r:""},t.isEmpty=function(t){return!!a.isEmpty(t)||0===t.length},t.notEmpty=function(e){return!t.isEmpty(e)},t.isBlank=function(e){return t.isEmpty(t.safeTrim(e))},t.notBlank=function(e){return!t.isBlank(e)},t.substr=function(t,e,n){return this.isEmpty(t)?"":t.substring(e,n)},t.replace=function(t,e,n){return this.isEmpty(t)||this.isEmpty(e)?"":t.replace(e,String(n))},t.containsLineBreaks=function(e){return!t.isBlank(e)&&e.includes("\n")},t.trimLeadingSlashes=function(e){return this.isEmpty(e)?"":t.toString(e).replace(/^\//g,"")},t.trimTrailingSlashes=function(e){return this.isEmpty(e)?"":t.toString(e).replace(/\/$/g,"")},t.trimSlashes=function(e){return this.isEmpty(e)?"":t.toString(e).replace(/^\/|\/$/g,"")},t.safeTruncate=function(e,n,r){return void 0===r&&(r=""),t.isEmpty(e)||!e?"":(e=t.toString(e)).length<=n?String(e):e.substring(0,n-r.length)+r},t.ellipsis=function(e,n,r){return void 0===r&&(r="..."),t.safeTruncate(e,n,r)},t.safeTrim=function(e){return t.isEmpty(e)?"":t.toString(e).trim()},t.safeLowercase=function(e){return t.isEmpty(e)||!e?"":t.toString(e).toLowerCase()},t.safeUppercase=function(e){return t.isEmpty(e)||!e?"":t.toString(e).toUpperCase()},t.capitalizeFirstLetter=function(e){return t.isBlank(e)?"":t.safeUppercase(e.charAt(0))+t.safeLowercase(t.substr(e,1))},t.toBigInt=function(t){return this.isEmpty(t)?null:BigInt(t)},t.getNonEmpty=function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return e.find((function(e){return t.notEmpty(e)}))||""},t.getNonBlank=function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return e.find((function(e){return t.notBlank(e)}))||""},t.emptyToNull=function(e){return t.isEmpty(e)?null:String(e)},t.blankToNull=function(e){return t.isBlank(e)?null:String(e)},t}(),h=function(){function t(){}return t.isEmpty=function(t){return a.isEmpty(t)||0===t.length},t.notEmpty=function(e){return!t.isEmpty(e)},t.remove=function(e,n){return t.isEmpty(e)?[]:null==e?void 0:e.filter((function(t){return t!==n}))},t}(),f=function(){function t(){}return t.sleep=function(t){return new Promise((function(e){return setTimeout(e,t)}))},t}(),p=function(){function t(){}return t.formatByteSize=function(t){var e=Number(t);if(null===e||Number.isNaN(e))return"";if(0===e)return"0";var n=Math.floor(Math.log(e)/Math.log(1024));return 1*+(e/Math.pow(1024,n)).toFixed(2)+" "+["B","kB","MB","GB","TB"][n]},t}(),l={page:0,size:10},g=function(){function t(){}return t.sortingFieldToString=function(t){if(!t)return"";var e=[];return e.push(t.name),e.push(t.desc?"desc":""),e.push(t.nullsLast?"nl":""),e.join("-")},t.sortingFieldFromString=function(t){var e=t.split("-");return{name:e[0],desc:e.length>1&&"desc"===c.safeLowercase(e[1]),nullsLast:e.length>2&&"nl"===c.safeLowercase(e[2])}},t.sortingRequestToString=function(e){return e.map((function(e){return t.sortingFieldToString(e)})).join("+")},t.sortingRequestFromString=function(e){return e?e.split("+").map((function(e){return t.sortingFieldFromString(e)})):[]},t.pagingRequestToQueryParams=function(e){if(e){var n={page:e.page,size:e.size};return e.search&&(n.search=e.search),e.sorting&&(n.sorting=t.sortingRequestToString(e.sorting)),n}},t.pagingRequestToString=function(e){if(!e)return"";var n=[];return n.push(String(e.page)),n.push(String(e.size)),n.push(c.safeTrim(e.search)),n.push(e.sorting?t.sortingRequestToString(e.sorting):""),n.join(":")},t.pagingRequestFromString=function(e){if(!e||c.isEmpty(e))return n({},l);var r=e.split(":");return r.length<4?n({},l):{page:Number(r[0]),size:Number(r[1]),search:String(r[2]),sorting:c.isEmpty(r[3])?void 0:t.sortingRequestFromString(r[3])}},t}(),d=function(){function t(){}return t.isEmpty=function(t){return null==t||Number.isNaN(t)},t.notEmpty=function(t){return!a.isEmpty(t)},t.parseNumber=function(t){if(!t)return null;var e=Number(t);return Number.isNaN(e)?null:e},t.round=function(t,e){e||(e=0);var n=Math.pow(10,e);return Math.round(t*n)/n},t.portionToPercent=function(e,n){if(null==e)return"";var r=t.round(100*e,n);return"".concat(r,"%")},t}(),v=function(){function t(){}return t.formatNumber=function(t,e){return void 0===e&&(e=2),String(t).padStart(e,"0")},t.parseDate=function(t){if(t)return"string"==typeof t?new Date(t):t},t.formatDateForHumans=function(e,n){if(void 0===n&&(n=!1),!(e=t.parseDate(e)))return"";var r=e.getFullYear(),o=t.formatNumber(e.getMonth()+1),i=t.formatNumber(e.getDate());if(!n)return"".concat(r,"-").concat(o,"-").concat(i);var s=t.formatNumber(e.getHours()),u=t.formatNumber(e.getMinutes()),a=t.formatNumber(e.getSeconds());return"".concat(r,"/").concat(o,"/").concat(i," ").concat(s,":").concat(u,":").concat(a)},t.formatDateTimeForHumans=function(e){return t.formatDateForHumans(e,!0)},t.formatDateForInput=function(e,n){if(void 0===n&&(n=!1),!(e=t.parseDate(e)))return"";var r=e.getFullYear(),o=t.formatNumber(e.getMonth()+1),i=t.formatNumber(e.getDate());if(!n)return"".concat(r,"-").concat(o,"-").concat(i);var s=t.formatNumber(e.getHours()),u=t.formatNumber(e.getMinutes()),a=t.formatNumber(e.getSeconds());return"".concat(r,"-").concat(o,"-").concat(i,"T").concat(s,":").concat(u,":").concat(a)},t.formatDateTimeForInput=function(e){return t.formatDateForInput(e,!0)},t.getDurationMs=function(e,n){if(e=t.parseDate(e),n=t.parseDate(n),a.isEmpty(e)||a.isEmpty(n))return null;try{return n.getTime()-e.getTime()}catch(t){return null}},t.getSinceDurationMs=function(e){return t.getDurationMs(e,new Date)},t.formatDuration=function(t){if(!t)return"";var e=Math.floor(t/1e3);t-=1e3*e;var n=Math.floor(e/60);e-=60*n;var r=Math.floor(n/60);n-=60*r;var o=Math.floor(r/24);r-=24*o;var i=[];return o>0&&i.push("".concat(o,"d")),r>0&&i.push("".concat(r,"h")),n>0&&i.push("".concat(n,"m")),e>0&&0===o&&0===r&&i.push("".concat(e,"s")),t>0&&0===o&&0===r&&0===n&&i.push("".concat(d.round(t,2),"ms")),i.join(" ")},t}(),y=function(){function t(){}return t.dateParser=function(e,n){return"string"==typeof n&&t.reISO.exec(n)?new Date(n):n},t.parseWithDates=function(e){if(!c.isBlank(e))return JSON.parse(c.getNonEmpty(e),t.dateParser)},t.parse=function(e){return t.parseWithDates(e)},t.reISO=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*))(?:Z|(\+|-)([\d|:]*))?$/,t}(),m=function(){function t(){}return t.crc32hex=function(t){for(var e=(new TextEncoder).encode(t),n=new Uint32Array(256),r=0;r<256;r++){for(var o=r,i=0;i<8;i++)o=1&o?3988292384^o>>>1:o>>>1;n[r]=o>>>0}var s=~0;for(r=0;r<e.length;r++)s=s>>>8^n[255&(s^e[r])];return(s=~s>>>0).toString(16)},t}(),k=function(){function t(){}return t.deleteParamFromUrl=function(t,e){var n=new URL(t);return n.searchParams.delete(e),c.trimTrailingSlashes(n.toString())},t.extractParamFromUrl=function(t,e){return new URLSearchParams(new URL(t).search).get(e)},t.paramExistsInUrl=function(e,n){return c.notBlank(t.extractParamFromUrl(e,n))},t.extractHostFromUrl=function(t){return c.isBlank(t)?null:new URL(t).host},t.extractDomainFromUrl=function(e){var n=t.extractHostFromUrl(e);return c.isBlank(n)?null:n.split(".").slice(-2).join(".")},t}(),T=function(){function t(e){c.isBlank(e)?this.baseUrl=t.baseHostUrl():(e.endsWith("/")||(e+="/"),this.baseUrl=e.startsWith("http")?new URL(e):new URL(e,t.baseHostUrl()))}return t.baseHostUrl=function(){return new URL("".concat(window.location.protocol,"//").concat(window.location.host,"/"))},t.pagingRequestToQueryParams=function(t){return g.pagingRequestToQueryParams(t)},t.paramsToQueryString=function(t){if(!t)return"";var e=new URLSearchParams(t),n=new URLSearchParams;e.forEach((function(t,e){""!==t&&void 0!==t&&"undefined"!==t&&n.set(e,t)}));var r=n.toString();return c.isEmpty(r)?"":"?".concat(r)},t.prototype.getHeaders=function(t){var e=new Headers;return e.set("Content-Type","application/json"),Promise.resolve(e)},t.prototype.getBaseUrl=function(){return this.baseUrl},t.prototype.getUrl=function(t,e){var n=new URL(c.trimLeadingSlashes(t),this.baseUrl);return e&&Object.keys(e).forEach((function(t){var r=e[t];""!==r&&void 0!==r&&"undefined"!==r&&n.searchParams.set(t,r)})),n},t.prototype.getRequestOptions=function(t,e,n){return void 0===e&&(e="GET"),void 0===n&&(n=null),this.getHeaders(t).then((function(t){return{method:e,headers:t,body:null===n?null:n instanceof FormData?n:JSON.stringify(n)}}))},t.prototype.processRequest=function(t,e,n){return fetch(this.getUrl(t,e),n).then((function(t){if(!t.ok){var e={cause:t.status};return"application/json"===t.headers.get("Content-Type")?t.json().then((function(n){if(n.message)throw new Error(n.message,e);if(n.error)throw new Error(n.error,e);throw new Error(t.statusText,e)}),(function(){throw new Error(t.statusText,e)})):t.text().then((function(n){throw c.isEmpty(n)?new Error(t.statusText,e):new Error(n,e)}),(function(){throw new Error(t.statusText,e)}))}return t}))},t.prototype.processRequestJson=function(t,e,n){return this.processRequest(t,e,n).then((function(t){return t.text().then(y.parseWithDates)}))},t.prototype.getJson=function(t,e){var n=this;return this.getRequestOptions(t).then((function(r){return n.processRequestJson(t,e,r)}))},t.prototype.postJson=function(t,e,n){var r=this;return void 0===e&&(e=null),this.getRequestOptions(t,"POST",e).then((function(e){return r.processRequestJson(t,n,e)}))},t.prototype.postForm=function(t,e,n){var r=this;return this.getRequestOptions(t,"POST",e).then((function(e){return e.headers.delete("Content-Type"),r.processRequest(t,n,e)}))},t.prototype.postFormJson=function(t,e,n){var r=this;return this.getRequestOptions(t,"POST",e).then((function(e){return e.headers.delete("Content-Type"),r.processRequestJson(t,n,e)}))},t.prototype.putJson=function(t,e,n){var r=this;return void 0===e&&(e=null),this.getRequestOptions(t,"PUT",e).then((function(e){return r.processRequestJson(t,n,e)}))},t.prototype.get=function(t,e){var n=this;return this.getRequestOptions(t).then((function(r){return n.processRequest(t,e,r)}))},t.prototype.del=function(t,e){var n=this;return this.getRequestOptions(t,"DELETE").then((function(r){return n.processRequest(t,e,r)}))},t.prototype.post=function(t,e,n){var r=this;return void 0===e&&(e=null),this.getRequestOptions(t,"POST",e).then((function(e){return r.processRequest(t,n,e)}))},t.prototype.put=function(t,e,n){var r=this;return void 0===e&&(e=null),this.getRequestOptions(t,"PUT",e).then((function(e){return r.processRequest(t,n,e)}))},t}(),S=function(){function t(t,e){this.client=t,this.name=e}return t.prototype.loadSingle=function(t){return this.client.getJson("".concat(this.name,"/").concat(t))},t.prototype.loadPage=function(t){return this.client.getJson(this.name,T.pagingRequestToQueryParams(t))},t.prototype.save=function(t){return t.id?this.client.putJson("".concat(this.name,"/").concat(t.id),t):this.client.postJson(this.name,t)},t.prototype.delete=function(t){return this.client.del("".concat(this.name,"/").concat(t))},t}(),w=function(t){function n(e,n,r){var o=t.call(this,e,n)||this;return o.cache=new s((function(e){return t.prototype.loadSingle.call(o,e)}),r),o}return e(n,t),n.prototype.loadSingle=function(t){return this.cache.get(t)},n.prototype.save=function(e){var n=this;return t.prototype.save.call(this,e).then((function(t){return t.id&&n.cache.set(t.id,t),t}))},n.prototype.delete=function(e){var n=this;return t.prototype.delete.call(this,e).then((function(){return n.cache.reset(e)}))},n.prototype.reset=function(t){this.cache.reset(t)},n.prototype.getStats=function(){return this.cache.getStats()},n}(S),R=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return e(n,t),n.prototype.loadSingle=function(t){throw new Error("Use loadSingleStub() instead!")},n.prototype.loadSingleStub=function(t){return this.client.getJson("".concat(this.name,"/").concat(t))},n.prototype.save=function(t){throw new Error("Use saveStub() instead!")},n.prototype.saveStub=function(t){return t.id?this.client.putJson("".concat(this.name,"/").concat(t.id),t):this.client.postJson(this.name,t)},n}(S),E=function(t){function n(e,n){var r=t.call(this,e,n)||this;return r.cache=new o((function(){return r.loadAllInternal()})),r}return e(n,t),n.prototype.loadAllInternal=function(){return this.client.getJson("".concat(this.name,"/all"))},n.prototype.loadAll=function(){return this.cache.get()},n.prototype.loadSingle=function(t){var e=this;return this.loadAll().then((function(n){var r=n.find((function(e){return e.id===t}));if(void 0===t)throw new Error("".concat(e.name," id ").concat(t," not found!"));return r}))},n.prototype.save=function(e){var n=this;return t.prototype.save.call(this,e).then((function(t){return n.cache.reset(),t}))},n.prototype.delete=function(e){var n=this;return t.prototype.delete.call(this,e).then((function(){return n.cache.reset()}))},n.prototype.reset=function(){this.cache.reset()},n.prototype.getStats=function(){var t,e=null===(t=this.cache.getCache())||void 0===t?void 0:t.length;return{cachedItems:e||0,capacity:e||0}},n}(S),b=function(){function t(){this.handlers=new Map}return t.prototype.addEventListener=function(t,e){this.handlers.has(t)||this.handlers.set(t,[]),this.handlers.get(t).push(e)},t.prototype.removeEventListener=function(t,e){var n=this.handlers.get(t);n&&n.splice(n.indexOf(e),1)},t.prototype.triggerEvent=function(t,e){this.handlers.has(t)&&this.handlers.get(t).forEach((function(t){return t(e)}))},t}();!function(t){t.info="info",t.warning="warning",t.error="danger"}(r||(r={}));var x=function(){function t(t,e){void 0===t&&(t=20),void 0===e&&(e=7e3),this.maxAlerts=t,this.maxVisibilityMs=e,this.em=new b,this.alerts=[],this.visibleAlerts=[]}return t.prototype.addOnChangeHandler=function(t){this.em.addEventListener("change",t)},t.prototype.removeOnChangeHandler=function(t){this.em.removeEventListener("change",t)},t.prototype.triggerChange=function(){this.em.triggerEvent("change")},t.prototype.reset=function(){this.alerts=[],this.visibleAlerts=[],this.triggerChange()},t.prototype.hide=function(t){this.visibleAlerts.splice(this.visibleAlerts.indexOf(t),1),this.triggerChange()},t.prototype.hideAll=function(){this.visibleAlerts=[],this.triggerChange()},t.prototype.updateVisibility=function(){var t=this;this.visibleAlerts.forEach((function(e){var n=v.getSinceDurationMs(e.time)||t.maxVisibilityMs,r=t.maxVisibilityMs-n;r>0?e.remainsMs=r:(e.remainsMs=void 0,t.hide(e))})),this.triggerChange()},t.prototype.remove=function(t){this.alerts.splice(this.alerts.indexOf(t),1),this.triggerChange()},t.prototype.add=function(t){for(void 0===t.remainsMs&&(t.remainsMs=this.maxVisibilityMs),this.alerts.push(t),this.visibleAlerts.push(t);this.alerts.length>this.maxAlerts;)this.alerts.shift();this.triggerChange()},t.prototype.custom=function(t,e){this.add({time:new Date,type:t,message:e})},t.prototype.err=function(t){this.custom(r.error,"string"==typeof t?t:t.toString())},t.prototype.warn=function(t){this.custom(r.warning,t)},t.prototype.info=function(t){this.custom(r.info,t)},t.prototype.getSummary=function(){var t=new Map;Object.values(r).forEach((function(e,n){t.set(e,0)}));for(var e=0;e<this.alerts.length;e++){var n=this.alerts[e],o=t.get(n.type)||0;t.set(n.type,o+1)}return t},t}(),P=function(){function t(t,e){void 0===e&&(e=!1);var n=this;this.isCancelled={value:!1},this.throwWhenCancelled=e,this.promise=new Promise((function(e,r){t.then((function(t){if(!n.isCancelled.value)return e(t)})).catch((function(t){!n.throwWhenCancelled&&n.isCancelled.value||r(t)}))}))}return t.prototype.cancel=function(){this.isCancelled.value=!0},t}(),M=["read","write","admin"],A=function(t){function n(e){return t.call(this,"".concat(c.trimSlashes(e),"/api/oauth"))||this}return e(n,t),n.prototype.jwks=function(){return this.getJson("jwks.json")},n.prototype.verifyRefreshToken=function(t){return this.getJson("refresh-tokens/verify/".concat(t))},n.prototype.verifyAccessToken=function(t){return this.getJson("access-tokens/verify/".concat(t))},n.prototype.verifyIdToken=function(t){return this.getJson("id-tokens/verify/".concat(t))},n.prototype.requestRefreshTokenFromLogin=function(t){return this.postJson("refresh-tokens/from-login",t)},n.prototype.renewRefreshToken=function(t){return this.postJson("refresh-tokens/renew",t)},n.prototype.requestAccessToken=function(t){return this.postJson("access-tokens/from-refresh-token",t)},n}(T),L=function(){function t(){}return t.isValidToken=function(e){return a.notEmpty(e)&&c.notBlank(e.token)&&!t.isTokenExpired(e)},t.isTokenExpired=function(t){return null!=t&&(void 0!==t.expires&&null!==t.expires&&t.expires<new Date)},t.isTokenReadyForRefresh=function(e){return null!=e&&(!t.isTokenExpired(e)&&(void 0!==e.expires&&null!==e.expires&&new Date((e.expires.getTime()+e.issuedAt.getTime())/2)<new Date))},t.getScopeString=function(t,e){return"".concat(e,":").concat(t)},t.extractPrivilege=function(t){var e=t.split(":");return e.length<2?"":e[1]},t.isPermissionLevel=function(t){return M.includes(t)},t.extractPermissionLevel=function(e){var n=e.split(":");if(0===n.length)throw new Error("Scope value ".concat(e," is invalid!"));var r=n[0];if(!t.isPermissionLevel(r))throw new Error('"'.concat(r," is not valid permission level!"));return r},t.getLevel=function(t){switch(t){case"admin":return 3;case"write":return 2;case"read":return 1;default:return 0}},t.hasPermission=function(e,n,r){var o;if(void 0===r)try{r=t.extractPermissionLevel(n),n=t.extractPrivilege(n)}catch(t){r="admin"}var i=t.extractPermissionLevel(e);if(t.getLevel(i)<t.getLevel(r))return!1;var s=t.extractPrivilege(e);if("*"===s)return!0;if(s===n)return!0;if(!(null==s?void 0:s.endsWith("/*")))return!1;var u=s.replace("/*","");return null!==(o=null==n?void 0:n.startsWith(u))&&void 0!==o&&o},t}(),N=function(){function t(t,e,n){this.initialRefreshTokenProvider=n,this.audience=e,this.oAuthServer=new A(t),this.accessTokens=new Map}return t.prototype.hasValidRefreshToken=function(){return L.isValidToken(this.refreshToken)},t.prototype.hasValidAccessToken=function(t){return L.isValidToken(this.accessTokens.get(t))},t.prototype.reset=function(){return this.refreshToken=void 0,this.accessTokens.clear(),this.initialRefreshTokenProvider.reset()},t.prototype.getRefreshTokenInternal=function(){return this.hasValidRefreshToken()&&void 0!==this.refreshToken?Promise.resolve(this.refreshToken):this.initialRefreshTokenProvider.getRefreshToken()},t.prototype.getRefreshToken=function(){var t=this;return this.getRefreshTokenInternal().then((function(e){return L.isValidToken(e)?L.isTokenReadyForRefresh(e)?t.oAuthServer.renewRefreshToken({refreshToken:e.token}).then((function(e){return t.setRefreshToken(e),e})):(t.setRefreshToken(e),Promise.resolve(e)):(console.log("invalid token",e),Promise.reject("Received invalid ID token!"))}))},t.prototype.getRefreshTokenRaw=function(){return this.getRefreshToken().then((function(t){return t.token}))},t.prototype.setRefreshToken=function(t){this.refreshToken=t},t.prototype.verifyRefreshToken=function(t){return this.oAuthServer.verifyRefreshToken(t)},t.prototype.login=function(t,e){var n=this;return this.reset(),this.oAuthServer.requestRefreshTokenFromLogin({login:t,password:e,targetAudience:this.audience}).then((function(t){return n.setRefreshToken(t)}))},t.prototype.storeAccessToken=function(t,e){var n=L.extractPrivilege(t);this.accessTokens.set(n,e)},t.prototype.findStoredAccessToken=function(t){var e=Array.from(this.accessTokens.keys());for(var n in e)if(L.hasPermission(n,t))return this.accessTokens.get(n)},t.prototype.getAccessTokenInternal=function(t){var e=this;return this.getRefreshTokenRaw().then((function(n){return e.oAuthServer.requestAccessToken({refreshToken:n,targetAudience:e.audience,scope:t}).then((function(n){return L.isValidToken(n)?(n.scopes&&n.scopes.length>0?n.scopes.forEach((function(t){return e.storeAccessToken(t,n)})):e.storeAccessToken(t,n),n):Promise.reject("Received access token is not valid!")}))}))},t.prototype.getAccessToken=function(t){var e=L.extractPrivilege(t),n=this.findStoredAccessToken(e);return void 0!==n&&L.isValidToken(n)?(L.isTokenReadyForRefresh(n)&&this.getAccessTokenInternal(t),Promise.resolve(n.token)):this.getAccessTokenInternal(t).then((function(t){return t.token}))},t}(),U=function(){function t(t){this.value=t}return t.prototype.getSubjectType=function(){return c.isEmpty(this.value)?null:this.value.split(":")[0]},t.prototype.getSubjectContent=function(){if(c.isEmpty(this.value))return null;var t=this.value.split("//");return t.length>1?t[1]:null},t.prototype.toString=function(){return this.value},t}(),D=function(){function t(){}return t.prototype.redirectTo=function(t){return this.redirecting=t,document.location.href=t,Promise.reject("Redirecting to ".concat(t))},t.prototype.isRedirecting=function(){return c.notBlank(this.redirecting)},t.prototype.redirectingTo=function(){return c.getNonEmpty(this.redirecting)},t}(),F=function(t){function n(e,n){var r=t.call(this)||this;return r.client=e,r.tokenQueryName=n||"token",r}return e(n,t),n.prototype.redirectToLogin=function(){var t=this;return this.client.getServerInfo().then((function(e){var n=k.deleteParamFromUrl(document.location.toString(),t.tokenQueryName),r="".concat(e.oauthServerUrl,"/login?app_name=").concat(e.targetAudience,"&redirect_url=").concat(n);return t.redirectTo(r)})).catch((function(t){return console.error("Redirection failed: OAuth info not fetched:",t),Promise.reject(t)}))},n.prototype.getRefreshToken=function(){return this.redirectToLogin()},n.prototype.reset=function(){return Promise.resolve()},n}(D),q=function(t){function n(e,n){var r=t.call(this)||this;return r.client=e,r.tokenQueryName=n||"token",r}return e(n,t),n.prototype.getRefreshTokenFromUrl=function(){return k.extractParamFromUrl(document.location.toString(),this.tokenQueryName)},n.prototype.getRefreshToken=function(){var t=this.getRefreshTokenFromUrl();return null===t||c.isBlank(t)?Promise.reject("No token in URL!"):this.client.getTokenManager().then((function(e){return e.verifyRefreshToken(t)}))},n.prototype.reset=function(){var t=this.getRefreshTokenFromUrl();if(null===t||c.isBlank(t))return Promise.resolve();console.log("Token in URL, redirecting...");var e=k.deleteParamFromUrl(document.location.toString(),this.tokenQueryName);return this.redirectTo(e)},n}(D),I=function(){function t(t){this.key=t||"refresh-token"}return t.prototype.saveRefreshTokenToLocalStorage=function(t){var e=t?JSON.stringify(t):null;null!==e?localStorage.setItem(this.key,e):localStorage.removeItem(this.key)},t.prototype.getRefreshTokenFromLocalStorage=function(){return y.parse(localStorage.getItem(this.key))},t.prototype.getRefreshToken=function(){var t=this.getRefreshTokenFromLocalStorage();return t&&L.isValidToken(t)?Promise.resolve(t):Promise.reject("No valid token found in storage!")},t.prototype.reset=function(){return this.saveRefreshTokenToLocalStorage(null),Promise.resolve()},t}(),O=function(){function t(t,e,n){this.login=new F(t,n),this.url=new q(t,n),this.storage=new I(e)}return t.prototype.getRefreshToken=function(){var t=this;return this.url.getRefreshToken().catch((function(e){return console.log("No token in url, loading from storage:",e),t.storage.getRefreshToken().catch((function(e){return console.log("No token in storage, redirecting to login page:",e),t.login.getRefreshToken()}))})).then((function(e){return console.log("Token found, saving to storage..."),t.storage.saveRefreshTokenToLocalStorage(e),t.url.reset().then((function(){return e}))}))},t.prototype.reset=function(){var t=this;return this.storage.reset().then((function(){return t.url.reset()}))},t}(),C=function(t){function n(e,n,r){void 0===r&&(r="*");var i=t.call(this,e)||this;return i.freshIdTokenProvider=n||new O(i),i.defaultPrivilege=r,i.insecureClient=new T(e),i.serverInfo=new o((function(){return i.getServerInfoInternal()})),i.tokenManager=new o((function(){return i.getTokenManagerInternal()})),i}return e(n,t),n.prototype.getRefreshToken=function(){return this.getTokenManager().then((function(t){return t.getRefreshToken()}))},n.prototype.initialize=function(){return this.getRefreshToken()},n.prototype.logout=function(){var t=this;return this.reset().then((function(){return t.initialize()}))},n.prototype.reset=function(){return this.getTokenManager().then((function(t){return t.reset()}))},n.prototype.getPrivilege=function(t){return this.defaultPrivilege},n.prototype.getServerInfoInternal=function(){return this.insecureClient.getJson("status/oauth/info")},n.prototype.getServerInfo=function(){return this.serverInfo.get()},n.prototype.getTokenManagerInternal=function(){var t=this;return this.getServerInfo().then((function(e){return new N(e.oauthServerUrl,e.targetAudience,t.freshIdTokenProvider)}))},n.prototype.getTokenManager=function(){return this.tokenManager.get()},n.prototype.login=function(t,e){return this.getTokenManager().then((function(n){return n.login(t,e)}))},n.prototype.setIdToken=function(t){return this.getTokenManager().then((function(e){return e.setRefreshToken(t)}))},n.prototype.getHeaders=function(e){var n=this;return this.getTokenManager().then((function(t){return t.getAccessToken(n.getPrivilege(e))})).then((function(r){return t.prototype.getHeaders.call(n,e).then((function(t){return t.set("Authorization","Bearer ".concat(r)),t}))}))},n}(T),j=function(){function t(t,e){this.x=t,this.y=e}return t.prototype.distanceTo=function(t){return Math.sqrt(Math.pow(this.x-t.x,2)+Math.pow(this.y-t.y,2))},t.prototype.equalsTo=function(t){return!!t&&(this.x===t.x&&this.y===t.y)},t.prototype.size=function(){return this.distanceTo(new t(0,0))},t.prototype.inSize=function(e){var n=this.size();if(0!==n){var r=e/n;return new t(this.x*r,this.y*r)}return this},t.prototype.round=function(){return new t(Math.round(this.x),Math.round(this.y))},t.prototype.add=function(e){return new t(this.x+e.x,this.y+e.y)},t.prototype.multiply=function(e){return new t(this.x*e,this.y*e)},t.prototype.subtract=function(e){return new t(this.x-e.x,this.y-e.y)},t.prototype.sub=function(t){return this.subtract(t)},t.prototype.toArray=function(){return[this.x,this.y]},t.fromArray=function(e){if("object"==typeof e&&2===e.length)return new t(e[0],e[1])},t.prototype.clone=function(){return new t(this.x,this.y)},t.prototype.getAngleToYAxis=function(t){var e=t.subtract(this),n=e.y<0,r=e.x/e.size(),o=Math.asin(r);return(n?Math.PI-o:o)||0},t.prototype.getNeighborPositions=function(e,n){void 0===e&&(e=1),void 0===n&&(n=!1);for(var r=[],o=this.x+e,i=this.x-e;i<=o;i++)for(var s=this.y+e,u=this.y-e;u<=s;u++){var a=new t(i,u);!n&&this.equalsTo(a)||r.push(a)}return r},t.prototype.getClosest=function(t){if(!t||0===t.length)return null;if(1===t.length)return t[0];for(var e=t[0],n=this.distanceTo(e),r=1,o=t.length;r<o;r++){var i=this.distanceTo(t[r]);i<n&&(e=t[r],n=i)}return e},t.prototype.toString=function(t){return void 0===t&&(t=2),"[".concat(d.round(this.x,t),",").concat(d.round(this.y,t),"]")},t}(),J={"--self-name":"Čeština",Anonymous:"Anonym",Administrator:"Administrátor",Back:"Zpět",File:"Soubor",Language:"Jazyk",Image:"Obrázek",Status:"Stav",State:"Stav",System:"Systém",Date:"Datum",Page:"Stránka","Page size":"Velikost stránky","Total items":"Celkem záznamů","Log out":"Odhlásit",Move:"Přesunout",Delete:"Smazat",Close:"Zavřít",Edit:"Upravit",Save:"Uložit",Refresh:"Obnovit",Select:"Vybrat","More...":"Více...","Loading...":"Nahrávám...",New:[{tags:["feminine"],value:"Nová"},{value:"Nový"}],Name:[{tags:["neutral"],value:"Název"},{value:"Jméno"}]},z={"--self-name":"English"},B=function(){function t(t){this.data=t}return t.prototype.translate=function(t,e){var n=this.data[t];if(void 0===n||"string"==typeof n)return n;var r=n.find((function(t){return void 0===t.tags||0===t.tags.length}));if((void 0===e||void 0===e.tags||0===e.tags.length)&&void 0!==r)return r.value;var o=n.filter((function(t){return void 0!==t.tags&&0!==t.tags.length&&(e&&e.tags&&e.tags.every((function(e){return t.tags&&t.tags.includes(e)})))}));return o.length>0?o[0].value:r?r.value:void 0},t}(),V=function(t){function n(){return t.call(this,J)||this}return e(n,t),n}(B),H=function(t){function n(){return t.call(this,z)||this}return e(n,t),n}(B),Q=function(){function t(t,e){this.primary=t,this.fallback=e}return t.prototype.translate=function(t,e){var n=this.primary.translate(t,e);return void 0===n?this.fallback.translate(t,e):n},t}(),_=function(){function t(t){this.dictionaries=new Map,this.setLanguage(t)}return t.prototype.addDictionary=function(t,e){var n=this.dictionaries.get(t);n?this.dictionaries.set(t,new Q(e,n)):this.dictionaries.set(t,e)},t.prototype.hasDictionary=function(t){return!!t&&this.dictionaries.has(t)},t.prototype.getLanguage=function(){return this.language},t.prototype.getLanguages=function(){return Array.from(this.dictionaries.keys())},t.prototype.setLanguage=function(t){this.language=t&&this.hasDictionary(t)?t:this.hasDictionary(navigator.language)?navigator.language:void 0},t.prototype.translate=function(t,e,n){if(!(n=n||this.language))return t;var r=this.dictionaries.get(n);if(!r)return t;var o=r.translate(t,e);return void 0===o?t:o},t}(),W=function(t){function n(e){var n=t.call(this)||this;return n.addDictionary("cs",new V),n.addDictionary("en",new H),n.setLanguage(e),n}return e(n,t),n}(_);export{h as ArrayUtil,f as AsyncUtil,W as BasicLocalization,p as ByteUtil,i as CacheAsync,P as CancellablePromise,V as CzechBasicDictionary,v as DateUtil,Q as DictionaryWithFallback,H as EnglishBasicDictionary,w as EntityCachedClient,S as EntityClient,R as EntityClientWithStub,b as EventManager,s as HashCacheAsync,m as HashUtil,y as JsonUtil,u as Lazy,o as LazyAsync,_ as Localization,E as LookupClient,B as MemoryDictionary,d as NumberUtil,A as OAuthRestClient,U as OAuthSubject,N as OAuthTokenManager,a as ObjectUtil,M as PERMISSION_LEVELS,g as PagingUtil,T as RestClient,C as RestClientWithOAuth,c as StringUtil,k as UrlUtil,r as UserAlertType,x as UserAlerts,j as Vector2};
|
|
1
|
+
class e{constructor(e){this.supplier=e}get(){return void 0!==this.cache?Promise.resolve(this.cache):(void 0===this.promise&&(this.promise=this.supplier().then((e=>(this.cache=e,this.promise=void 0,Promise.resolve(e)))).catch((e=>(this.promise=void 0,Promise.reject(e))))),this.promise)}reset(){this.cache=void 0}hasCache(){return void 0!==this.cache}getCache(){return this.cache}}class t extends e{constructor(e,t){super(e),this.maxAgeMs=t}get(){return this.expires&&this.expires>new Date&&this.reset(),super.get()}set(e,t){this.cache=e,this.expires=t,this.maxAgeMs&&void 0===this.expires&&(this.expires=new Date((new Date).getTime()+this.maxAgeMs))}}class s{constructor(e,t){this.cache=new Map,this.maxSize=100,this.supplier=e,t&&(this.maxSize=t)}obtainCache(e){let s=this.cache.get(e);return s||(s=new t((()=>this.supplier(e))),this.cache.set(e,s)),s}get(e){return this.obtainCache(e).get()}set(e,t,s){this.obtainCache(e).set(t,s)}reset(e){e?this.cache.delete(e):this.cache.clear()}getSize(){return this.cache.size}getMaxSize(){return this.maxSize}getStats(){return{cachedItems:this.getSize(),capacity:this.getMaxSize()}}hasCache(e){return this.cache.has(e)}}class r{constructor(e){this.supplier=e}get(){return void 0===this.cache&&(this.cache=this.supplier()),this.cache}reset(){this.cache=void 0}hasCache(){return void 0!==this.cache}}class n{static isEmpty(e){return null==e}static notEmpty(e){return!n.isEmpty(e)}static clone(e){if(null===e)throw new Error("Null cannot be cloned!");if("object"!=typeof e)throw new Error("Not an object, cannot be cloned!");return{...e}}static getNestedValue(e,t){if(!e||""===e)return"";const s=t.split(".");let r=e;for(const e of s){if(!r||"object"!=typeof r||!(e in r))return"";r=r[e]}return r}}class i{static isString(e){return"string"==typeof e}static toString(e){return i.isString(e)?e:e?.toString?.()??""}static isEmpty(e){return!!n.isEmpty(e)||0===e.length}static notEmpty(e){return!i.isEmpty(e)}static isBlank(e){return i.isEmpty(i.safeTrim(e))}static notBlank(e){return!i.isBlank(e)}static substr(e,t,s){return this.isEmpty(e)?"":e.substring(t,s)}static replace(e,t,s){return this.isEmpty(e)||this.isEmpty(t)?"":e.replace(t,String(s))}static containsLineBreaks(e){return!i.isBlank(e)&&e.includes("\n")}static trimLeadingSlashes(e){return this.isEmpty(e)?"":i.toString(e).replace(/^\//g,"")}static trimTrailingSlashes(e){return this.isEmpty(e)?"":i.toString(e).replace(/\/$/g,"")}static trimSlashes(e){return this.isEmpty(e)?"":i.toString(e).replace(/^\/|\/$/g,"")}static safeTruncate(e,t,s=""){return i.isEmpty(e)||!e?"":(e=i.toString(e)).length<=t?String(e):e.substring(0,t-s.length)+s}static ellipsis(e,t,s="..."){return i.safeTruncate(e,t,s)}static safeTrim(e){return i.isEmpty(e)?"":i.toString(e).trim()}static safeLowercase(e){return i.isEmpty(e)||!e?"":i.toString(e).toLowerCase()}static safeUppercase(e){return i.isEmpty(e)||!e?"":i.toString(e).toUpperCase()}static capitalizeFirstLetter(e){return i.isBlank(e)?"":i.safeUppercase(e.charAt(0))+i.safeLowercase(i.substr(e,1))}static toBigInt(e){return this.isEmpty(e)?null:BigInt(e)}static getNonEmpty(...e){return e.find((e=>i.notEmpty(e)))||""}static getNonBlank(...e){return e.find((e=>i.notBlank(e)))||""}static emptyToNull(e){return i.isEmpty(e)?null:String(e)}static blankToNull(e){return i.isBlank(e)?null:String(e)}}class o{static isEmpty(e){return n.isEmpty(e)||0===e.length}static notEmpty(e){return!o.isEmpty(e)}static remove(e,t){return o.isEmpty(e)?[]:e?.filter((e=>e!==t))}}class a{}a.sleep=e=>new Promise((t=>setTimeout(t,e)));class h{static formatByteSize(e){const t=Number(e);if(null===t||Number.isNaN(t))return"";if(0===t)return"0";const s=Math.floor(Math.log(t)/Math.log(1024));return 1*+(t/Math.pow(1024,s)).toFixed(2)+" "+["B","kB","MB","GB","TB"][s]}}const c={page:0,size:10};class l{static sortingFieldToString(e){if(!e)return"";const t=[];return t.push(e.name),t.push(e.desc?"desc":""),t.push(e.nullsLast?"nl":""),t.join("-")}static sortingFieldFromString(e){const t=e.split("-");return{name:t[0],desc:t.length>1&&"desc"===i.safeLowercase(t[1]),nullsLast:t.length>2&&"nl"===i.safeLowercase(t[2])}}static sortingRequestToString(e){return e.map((e=>l.sortingFieldToString(e))).join("+")}static sortingRequestFromString(e){if(!e)return[];return e.split("+").map((e=>l.sortingFieldFromString(e)))}static pagingRequestToQueryParams(e){if(!e)return;const t={page:e.page,size:e.size};return e.search&&(t.search=e.search),e.sorting&&(t.sorting=l.sortingRequestToString(e.sorting)),t}static pagingRequestToString(e){if(!e)return"";const t=[];return t.push(String(e.page)),t.push(String(e.size)),t.push(i.safeTrim(e.search)),t.push(e.sorting?l.sortingRequestToString(e.sorting):""),t.join(":")}static pagingRequestFromString(e){if(!e||i.isEmpty(e))return{...c};const t=e.split(":");return t.length<4?{...c}:{page:Number(t[0]),size:Number(t[1]),search:String(t[2]),sorting:i.isEmpty(t[3])?void 0:l.sortingRequestFromString(t[3])}}}class u{static isEmpty(e){return null==e||Number.isNaN(e)}static notEmpty(e){return!n.isEmpty(e)}static parseNumber(e){if(!e)return null;const t=Number(e);return Number.isNaN(t)?null:t}static round(e,t){t||(t=0);const s=Math.pow(10,t);return Math.round(e*s)/s}static portionToPercent(e,t){if(null==e)return"";return`${u.round(100*e,t)}%`}}class g{static formatNumber(e,t=2){return String(e).padStart(t,"0")}static parseDate(e){if(e)return"string"==typeof e?new Date(e):e}static formatDateForHumans(e,t=!1){if(!(e=g.parseDate(e)))return"";const s=e.getFullYear(),r=g.formatNumber(e.getMonth()+1),n=g.formatNumber(e.getDate());if(!t)return`${s}-${r}-${n}`;return`${s}/${r}/${n} ${g.formatNumber(e.getHours())}:${g.formatNumber(e.getMinutes())}:${g.formatNumber(e.getSeconds())}`}static formatDateTimeForHumans(e){return g.formatDateForHumans(e,!0)}static formatDateForInput(e,t=!1){if(!(e=g.parseDate(e)))return"";const s=e.getFullYear(),r=g.formatNumber(e.getMonth()+1),n=g.formatNumber(e.getDate());if(!t)return`${s}-${r}-${n}`;return`${s}-${r}-${n}T${g.formatNumber(e.getHours())}:${g.formatNumber(e.getMinutes())}:${g.formatNumber(e.getSeconds())}`}static formatDateTimeForInput(e){return g.formatDateForInput(e,!0)}static getDurationMs(e,t){if(e=g.parseDate(e),t=g.parseDate(t),n.isEmpty(e)||n.isEmpty(t))return null;try{return t.getTime()-e.getTime()}catch(e){return null}}static getSinceDurationMs(e){return g.getDurationMs(e,new Date)}static formatDuration(e){if(!e)return"";let t=Math.floor(e/1e3);e-=1e3*t;let s=Math.floor(t/60);t-=60*s;let r=Math.floor(s/60);s-=60*r;let n=Math.floor(r/24);r-=24*n;const i=[];return n>0&&i.push(`${n}d`),r>0&&i.push(`${r}h`),s>0&&i.push(`${s}m`),t>0&&0===n&&0===r&&i.push(`${t}s`),e>0&&0===n&&0===r&&0===s&&i.push(`${u.round(e,2)}ms`),i.join(" ")}}class d{static dateParser(e,t){return"string"==typeof t&&d.reISO.exec(t)?new Date(t):t}static parseWithDates(e){if(!i.isBlank(e))return JSON.parse(i.getNonEmpty(e),d.dateParser)}static parse(e){return d.parseWithDates(e)}}d.reISO=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*))(?:Z|(\+|-)([\d|:]*))?$/;class m{static crc32hex(e){const t=(new TextEncoder).encode(e),s=new Uint32Array(256);for(let e=0;e<256;e++){let t=e;for(let e=0;e<8;e++)t=1&t?3988292384^t>>>1:t>>>1;s[e]=t>>>0}let r=~0;for(let e=0;e<t.length;e++)r=r>>>8^s[255&(r^t[e])];return r=~r>>>0,r.toString(16)}}class p{static deleteParamFromUrl(e,t){const s=new URL(e);return s.searchParams.delete(t),i.trimTrailingSlashes(s.toString())}static extractParamFromUrl(e,t){return new URLSearchParams(new URL(e).search).get(t)}static paramExistsInUrl(e,t){return i.notBlank(p.extractParamFromUrl(e,t))}static extractHostFromUrl(e){return i.isBlank(e)?null:new URL(e).host}static extractDomainFromUrl(e){const t=p.extractHostFromUrl(e);return i.isBlank(t)?null:t.split(".").slice(-2).join(".")}}class f{constructor(e){i.isBlank(e)?this.baseUrl=f.baseHostUrl():(e.endsWith("/")||(e+="/"),this.baseUrl=e.startsWith("http")?new URL(e):new URL(e,f.baseHostUrl()))}static baseHostUrl(){return new URL(`${window.location.protocol}//${window.location.host}/`)}static pagingRequestToQueryParams(e){return l.pagingRequestToQueryParams(e)}static paramsToQueryString(e){if(!e)return"";const t=new URLSearchParams(e),s=new URLSearchParams;t.forEach(((e,t)=>{""!==e&&void 0!==e&&"undefined"!==e&&s.set(t,e)}));const r=s.toString();return i.isEmpty(r)?"":`?${r}`}getHeaders(e){const t=new Headers;return t.set("Content-Type","application/json"),Promise.resolve(t)}getBaseUrl(){return this.baseUrl}getUrl(e,t){const s=new URL(i.trimLeadingSlashes(e),this.baseUrl);return t&&Object.keys(t).forEach((e=>{const r=t[e];""!==r&&void 0!==r&&"undefined"!==r&&s.searchParams.set(e,r)})),s}getRequestOptions(e,t="GET",s=null){return this.getHeaders(e).then((e=>({method:t,headers:e,body:null===s?null:s instanceof FormData?s:JSON.stringify(s)})))}processRequest(e,t,s){return fetch(this.getUrl(e,t),s).then((e=>{if(!e.ok){const t={cause:e.status};return"application/json"===e.headers.get("Content-Type")?e.json().then((s=>{if(s.message)throw new Error(s.message,t);if(s.error)throw new Error(s.error,t);throw new Error(e.statusText,t)}),(()=>{throw new Error(e.statusText,t)})):e.text().then((s=>{throw i.isEmpty(s)?new Error(e.statusText,t):new Error(s,t)}),(()=>{throw new Error(e.statusText,t)}))}return e}))}processRequestJson(e,t,s){return this.processRequest(e,t,s).then((e=>e.text().then(d.parseWithDates)))}getJson(e,t){return this.getRequestOptions(e).then((s=>this.processRequestJson(e,t,s)))}postJson(e,t=null,s){return this.getRequestOptions(e,"POST",t).then((t=>this.processRequestJson(e,s,t)))}postForm(e,t,s){return this.getRequestOptions(e,"POST",t).then((t=>(t.headers.delete("Content-Type"),this.processRequest(e,s,t))))}postFormJson(e,t,s){return this.getRequestOptions(e,"POST",t).then((t=>(t.headers.delete("Content-Type"),this.processRequestJson(e,s,t))))}putJson(e,t=null,s){return this.getRequestOptions(e,"PUT",t).then((t=>this.processRequestJson(e,s,t)))}get(e,t){return this.getRequestOptions(e).then((s=>this.processRequest(e,t,s)))}del(e,t){return this.getRequestOptions(e,"DELETE").then((s=>this.processRequest(e,t,s)))}post(e,t=null,s){return this.getRequestOptions(e,"POST",t).then((t=>this.processRequest(e,s,t)))}put(e,t=null,s){return this.getRequestOptions(e,"PUT",t).then((t=>this.processRequest(e,s,t)))}}class k{constructor(e,t){this.client=e,this.name=t}loadSingle(e){return this.client.getJson(`${this.name}/${e}`)}loadPage(e){return this.client.getJson(this.name,f.pagingRequestToQueryParams(e))}save(e){return e.id?this.client.putJson(`${this.name}/${e.id}`,e):this.client.postJson(this.name,e)}delete(e){return this.client.del(`${this.name}/${e}`)}}class v extends k{constructor(e,t,r){super(e,t),this.cache=new s((e=>super.loadSingle(e)),r)}loadSingle(e){return this.cache.get(e)}save(e){return super.save(e).then((e=>(e.id&&this.cache.set(e.id,e),e)))}delete(e){return super.delete(e).then((()=>this.cache.reset(e)))}reset(e){this.cache.reset(e)}getStats(){return this.cache.getStats()}}class T extends k{loadSingle(e){throw new Error("Use loadSingleStub() instead!")}loadSingleStub(e){return this.client.getJson(`${this.name}/${e}`)}save(e){throw new Error("Use saveStub() instead!")}saveStub(e){return e.id?this.client.putJson(`${this.name}/${e.id}`,e):this.client.postJson(this.name,e)}}class y extends k{constructor(t,s){super(t,s),this.cache=new e((()=>this.loadAllInternal()))}loadAllInternal(){return this.client.getJson(`${this.name}/all`)}loadAll(){return this.cache.get()}loadSingle(e){return this.loadAll().then((t=>{const s=t.find((t=>t.id===e));if(void 0===e)throw new Error(`${this.name} id ${e} not found!`);return s}))}save(e){return super.save(e).then((e=>(this.cache.reset(),e)))}delete(e){return super.delete(e).then((()=>this.cache.reset()))}reset(){this.cache.reset()}getStats(){const e=this.cache.getCache()?.length;return{cachedItems:e||0,capacity:e||0}}}class S{constructor(){this.handlers=new Map}addEventListener(e,t){this.handlers.has(e)||this.handlers.set(e,[]),this.handlers.get(e).push(t)}removeEventListener(e,t){const s=this.handlers.get(e);s&&s.splice(s.indexOf(t),1)}triggerEvent(e,t){this.handlers.has(e)&&this.handlers.get(e).forEach((e=>e(t)))}}var w;!function(e){e.info="info",e.warning="warning",e.error="danger"}(w||(w={}));class R{constructor(e=20,t=7e3){this.maxAlerts=e,this.maxVisibilityMs=t,this.em=new S,this.alerts=[],this.visibleAlerts=[]}addOnChangeHandler(e){this.em.addEventListener("change",e)}removeOnChangeHandler(e){this.em.removeEventListener("change",e)}triggerChange(){this.em.triggerEvent("change")}reset(){this.alerts=[],this.visibleAlerts=[],this.triggerChange()}hide(e){this.visibleAlerts.splice(this.visibleAlerts.indexOf(e),1),this.triggerChange()}hideAll(){this.visibleAlerts=[],this.triggerChange()}updateVisibility(){this.visibleAlerts.forEach((e=>{const t=g.getSinceDurationMs(e.time)||this.maxVisibilityMs,s=this.maxVisibilityMs-t;s>0?e.remainsMs=s:(e.remainsMs=void 0,this.hide(e))})),this.triggerChange()}remove(e){this.alerts.splice(this.alerts.indexOf(e),1),this.triggerChange()}add(e){for(void 0===e.remainsMs&&(e.remainsMs=this.maxVisibilityMs),this.alerts.push(e),this.visibleAlerts.push(e);this.alerts.length>this.maxAlerts;)this.alerts.shift();this.triggerChange()}custom(e,t){this.add({time:new Date,type:e,message:t})}err(e){this.custom(w.error,"string"==typeof e?e:e.toString())}warn(e){this.custom(w.warning,e)}info(e){this.custom(w.info,e)}getSummary(){const e=new Map;Object.values(w).forEach(((t,s)=>{e.set(t,0)}));for(let t=0;t<this.alerts.length;t++){const s=this.alerts[t],r=e.get(s.type)||0;e.set(s.type,r+1)}return e}}class x{constructor(e,t=!1){this.isCancelled={value:!1},this.throwWhenCancelled=t,this.promise=new Promise(((t,s)=>{e.then((e=>{if(!this.isCancelled.value)return t(e)})).catch((e=>{!this.throwWhenCancelled&&this.isCancelled.value||s(e)}))}))}cancel(){this.isCancelled.value=!0}}const E=["read","write","admin"];class b extends f{constructor(e){super(`${i.trimSlashes(e)}/api/oauth`)}jwks(){return this.getJson("jwks.json")}verifyRefreshToken(e){return this.getJson(`refresh-tokens/verify/${e}`)}verifyAccessToken(e){return this.getJson(`access-tokens/verify/${e}`)}verifyIdToken(e){return this.getJson(`id-tokens/verify/${e}`)}requestRefreshTokenFromLogin(e){return this.postJson("refresh-tokens/from-login",e)}renewRefreshToken(e){return this.postJson("refresh-tokens/renew",e)}requestAccessToken(e){return this.postJson("access-tokens/from-refresh-token",e)}}class P{static isValidToken(e){return n.notEmpty(e)&&i.notBlank(e.token)&&!P.isTokenExpired(e)}static isTokenExpired(e){return null!=e&&(void 0!==e.expires&&null!==e.expires&&e.expires<new Date)}static isTokenReadyForRefresh(e){if(null==e)return!1;if(P.isTokenExpired(e))return!1;if(void 0===e.expires||null===e.expires)return!1;return new Date((e.expires.getTime()+e.issuedAt.getTime())/2)<new Date}static getScopeString(e,t){return`${t}:${e}`}static extractPrivilege(e){const t=e.split(":");return t.length<2?"":t[1]}static isPermissionLevel(e){return E.includes(e)}static extractPermissionLevel(e){const t=e.split(":");if(0===t.length)throw new Error(`Scope value ${e} is invalid!`);const s=t[0];if(!P.isPermissionLevel(s))throw new Error(`"${s} is not valid permission level!`);return s}static getLevel(e){switch(e){case"admin":return 3;case"write":return 2;case"read":return 1;default:return 0}}static hasPermission(e,t,s){if(void 0===s)try{s=P.extractPermissionLevel(t),t=P.extractPrivilege(t)}catch(e){s="admin"}const r=P.extractPermissionLevel(e);if(P.getLevel(r)<P.getLevel(s))return!1;const n=P.extractPrivilege(e);if("*"===n)return!0;if(n===t)return!0;if(!n?.endsWith("/*"))return!1;const i=n.replace("/*","");return t?.startsWith(i)??!1}}class ${constructor(e,t,s){this.initialRefreshTokenProvider=s,this.audience=t,this.oAuthServer=new b(e),this.accessTokens=new Map}hasValidRefreshToken(){return P.isValidToken(this.refreshToken)}hasValidAccessToken(e){return P.isValidToken(this.accessTokens.get(e))}reset(){return this.refreshToken=void 0,this.accessTokens.clear(),this.initialRefreshTokenProvider.reset()}getRefreshTokenInternal(){return this.hasValidRefreshToken()&&void 0!==this.refreshToken?Promise.resolve(this.refreshToken):this.initialRefreshTokenProvider.getRefreshToken()}getRefreshToken(){return this.getRefreshTokenInternal().then((e=>P.isValidToken(e)?P.isTokenReadyForRefresh(e)?this.oAuthServer.renewRefreshToken({refreshToken:e.token}).then((e=>(this.setRefreshToken(e),e))):(this.setRefreshToken(e),Promise.resolve(e)):(console.log("invalid token",e),Promise.reject("Received invalid ID token!"))))}getRefreshTokenRaw(){return this.getRefreshToken().then((e=>e.token))}setRefreshToken(e){this.refreshToken=e}verifyRefreshToken(e){return this.oAuthServer.verifyRefreshToken(e)}login(e,t){return this.reset(),this.oAuthServer.requestRefreshTokenFromLogin({login:e,password:t,targetAudience:this.audience}).then((e=>this.setRefreshToken(e)))}storeAccessToken(e,t){const s=P.extractPrivilege(e);this.accessTokens.set(s,t)}findStoredAccessToken(e){const t=P.extractPermissionLevel(e),s=P.extractPrivilege(e);for(const[e,r]of this.accessTokens)if(P.hasPermission(e,s,t))return r}getAccessTokenInternal(e){return this.getRefreshTokenRaw().then((t=>this.oAuthServer.requestAccessToken({refreshToken:t,targetAudience:this.audience,scope:e}).then((t=>P.isValidToken(t)?(t.scopes&&t.scopes.length>0?t.scopes.forEach((e=>this.storeAccessToken(e,t))):this.storeAccessToken(e,t),t):Promise.reject("Received access token is not valid!")))))}getAccessToken(e){const t=P.extractPrivilege(e),s=this.findStoredAccessToken(t);return void 0!==s&&P.isValidToken(s)?(P.isTokenReadyForRefresh(s)&&this.getAccessTokenInternal(e),Promise.resolve(s.token)):this.getAccessTokenInternal(e).then((e=>e.token))}}class M{constructor(e){this.value=e}getSubjectType(){return i.isEmpty(this.value)?null:this.value.split(":")[0]}getSubjectContent(){if(i.isEmpty(this.value))return null;const e=this.value.split("//");return e.length>1?e[1]:null}toString(){return this.value}}class A{redirectTo(e){return this.redirecting=e,document.location.href=e,Promise.reject(`Redirecting to ${e}`)}isRedirecting(){return i.notBlank(this.redirecting)}redirectingTo(){return i.getNonEmpty(this.redirecting)}}class L extends A{constructor(e,t){super(),this.client=e,this.tokenQueryName=t||"token"}redirectToLogin(){return this.client.getServerInfo().then((e=>{const t=p.deleteParamFromUrl(document.location.toString(),this.tokenQueryName),s=`${e.oauthServerUrl}/login?app_name=${e.targetAudience}&redirect_url=${t}`;return this.redirectTo(s)})).catch((e=>(console.error("Redirection failed: OAuth info not fetched:",e),Promise.reject(e))))}getRefreshToken(){return this.redirectToLogin()}reset(){return Promise.resolve()}}class N extends A{constructor(e,t){super(),this.client=e,this.tokenQueryName=t||"token"}getRefreshTokenFromUrl(){return p.extractParamFromUrl(document.location.toString(),this.tokenQueryName)}getRefreshToken(){const e=this.getRefreshTokenFromUrl();return null===e||i.isBlank(e)?Promise.reject("No token in URL!"):this.client.getTokenManager().then((t=>t.verifyRefreshToken(e)))}reset(){const e=this.getRefreshTokenFromUrl();if(null===e||i.isBlank(e))return Promise.resolve();console.log("Token in URL, redirecting...");const t=p.deleteParamFromUrl(document.location.toString(),this.tokenQueryName);return this.redirectTo(t)}}class U{constructor(e){this.key=e||"refresh-token"}saveRefreshTokenToLocalStorage(e){const t=e?JSON.stringify(e):null;null!==t?localStorage.setItem(this.key,t):localStorage.removeItem(this.key)}getRefreshTokenFromLocalStorage(){return d.parse(localStorage.getItem(this.key))}getRefreshToken(){const e=this.getRefreshTokenFromLocalStorage();return e&&P.isValidToken(e)?Promise.resolve(e):Promise.reject("No valid token found in storage!")}reset(){return this.saveRefreshTokenToLocalStorage(null),Promise.resolve()}}class D{constructor(e,t,s){this.login=new L(e,s),this.url=new N(e,s),this.storage=new U(t)}getRefreshToken(){return this.url.getRefreshToken().catch((e=>(console.log("No token in url, loading from storage:",e),this.storage.getRefreshToken().catch((e=>(console.log("No token in storage, redirecting to login page:",e),this.login.getRefreshToken())))))).then((e=>(console.log("Token found, saving to storage..."),this.storage.saveRefreshTokenToLocalStorage(e),this.url.reset().then((()=>e)))))}reset(){return this.storage.reset().then((()=>this.url.reset()))}}class F extends f{constructor(t,s,r="*"){super(t),this.freshIdTokenProvider=s||new D(this),this.defaultPrivilege=r,this.insecureClient=new f(t),this.serverInfo=new e((()=>this.getServerInfoInternal())),this.tokenManager=new e((()=>this.getTokenManagerInternal()))}getRefreshToken(){return this.getTokenManager().then((e=>e.getRefreshToken()))}initialize(){return this.getRefreshToken()}logout(){return this.reset().then((()=>this.initialize()))}reset(){return this.getTokenManager().then((e=>e.reset()))}getPrivilege(e){return this.defaultPrivilege}getServerInfoInternal(){return this.insecureClient.getJson("status/oauth/info")}getServerInfo(){return this.serverInfo.get()}getTokenManagerInternal(){return this.getServerInfo().then((e=>new $(e.oauthServerUrl,e.targetAudience,this.freshIdTokenProvider)))}getTokenManager(){return this.tokenManager.get()}login(e,t){return this.getTokenManager().then((s=>s.login(e,t)))}setIdToken(e){return this.getTokenManager().then((t=>t.setRefreshToken(e)))}getHeaders(e){return this.getTokenManager().then((t=>t.getAccessToken(this.getPrivilege(e)))).then((t=>super.getHeaders(e).then((e=>(e.set("Authorization",`Bearer ${t}`),e)))))}}class q{constructor(e,t){this.x=e,this.y=t}distanceTo(e){return Math.sqrt(Math.pow(this.x-e.x,2)+Math.pow(this.y-e.y,2))}equalsTo(e){return!!e&&(this.x===e.x&&this.y===e.y)}size(){return this.distanceTo(new q(0,0))}inSize(e){const t=this.size();if(0!==t){const s=e/t;return new q(this.x*s,this.y*s)}return this}round(){return new q(Math.round(this.x),Math.round(this.y))}add(e){return new q(this.x+e.x,this.y+e.y)}multiply(e){return new q(this.x*e,this.y*e)}subtract(e){return new q(this.x-e.x,this.y-e.y)}sub(e){return this.subtract(e)}toArray(){return[this.x,this.y]}static fromArray(e){if("object"==typeof e&&2===e.length)return new q(e[0],e[1])}clone(){return new q(this.x,this.y)}getAngleToYAxis(e){const t=e.subtract(this),s=t.y<0,r=t.x/t.size(),n=Math.asin(r);return(s?Math.PI-n:n)||0}getNeighborPositions(e=1,t=!1){const s=[],r=this.x+e;for(let n=this.x-e;n<=r;n++){const r=this.y+e;for(let i=this.y-e;i<=r;i++){const e=new q(n,i);!t&&this.equalsTo(e)||s.push(e)}}return s}getClosest(e){if(!e||0===e.length)return null;if(1===e.length)return e[0];let t=e[0],s=this.distanceTo(t);for(let r=1,n=e.length;r<n;r++){const n=this.distanceTo(e[r]);n<s&&(t=e[r],s=n)}return t}toString(e=2){return`[${u.round(this.x,e)},${u.round(this.y,e)}]`}}var I={"--self-name":"Čeština",Anonymous:"Anonym",Administrator:"Administrátor",Back:"Zpět",File:"Soubor",Language:"Jazyk",Image:"Obrázek",Status:"Stav",State:"Stav",System:"Systém",Date:"Datum",Page:"Stránka","Page size":"Velikost stránky","Total items":"Celkem záznamů","Log out":"Odhlásit",Move:"Přesunout",Delete:"Smazat",Close:"Zavřít",Edit:"Upravit",Save:"Uložit",Refresh:"Obnovit",Select:"Vybrat","More...":"Více...","Loading...":"Nahrávám...",New:[{tags:["feminine"],value:"Nová"},{value:"Nový"}],Name:[{tags:["neutral"],value:"Název"},{value:"Jméno"}]},C={"--self-name":"English"};class J{constructor(e){this.data=e}translate(e,t){const s=this.data[e];if(void 0===s||"string"==typeof s)return s;const r=s.find((e=>void 0===e.tags||0===e.tags.length));if((void 0===t||void 0===t.tags||0===t.tags.length)&&void 0!==r)return r.value;const n=s.filter((e=>void 0!==e.tags&&0!==e.tags.length&&(t&&t.tags&&t.tags.every((t=>e.tags&&e.tags.includes(t))))));return n.length>0?n[0].value:r?r.value:void 0}}class O extends J{constructor(){super(I)}}class z extends J{constructor(){super(C)}}class B{constructor(e,t){this.primary=e,this.fallback=t}translate(e,t){const s=this.primary.translate(e,t);return void 0===s?this.fallback.translate(e,t):s}}class j{constructor(e){this.dictionaries=new Map,this.setLanguage(e)}addDictionary(e,t){const s=this.dictionaries.get(e);s?this.dictionaries.set(e,new B(t,s)):this.dictionaries.set(e,t)}hasDictionary(e){return!!e&&this.dictionaries.has(e)}getLanguage(){return this.language}getLanguages(){return Array.from(this.dictionaries.keys())}setLanguage(e){this.language=e&&this.hasDictionary(e)?e:this.hasDictionary(navigator.language)?navigator.language:void 0}translate(e,t,s){if(!(s=s||this.language))return e;const r=this.dictionaries.get(s);if(!r)return e;const n=r.translate(e,t);return void 0===n?e:n}}class V extends j{constructor(e){super(),this.addDictionary("cs",new O),this.addDictionary("en",new z),this.setLanguage(e)}}export{o as ArrayUtil,a as AsyncUtil,V as BasicLocalization,h as ByteUtil,t as CacheAsync,x as CancellablePromise,O as CzechBasicDictionary,g as DateUtil,B as DictionaryWithFallback,z as EnglishBasicDictionary,v as EntityCachedClient,k as EntityClient,T as EntityClientWithStub,S as EventManager,s as HashCacheAsync,m as HashUtil,d as JsonUtil,r as Lazy,e as LazyAsync,j as Localization,y as LookupClient,J as MemoryDictionary,u as NumberUtil,b as OAuthRestClient,M as OAuthSubject,$ as OAuthTokenManager,n as ObjectUtil,E as PERMISSION_LEVELS,l as PagingUtil,f as RestClient,F as RestClientWithOAuth,i as StringUtil,p as UrlUtil,w as UserAlertType,R as UserAlerts,q as Vector2};
|
|
2
2
|
//# sourceMappingURL=index.esm.js.map
|